nuxeo-development-framework 3.8.1 → 3.8.3

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 (311) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +32267 -31027
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/activities-log/activities-log/activities-log.service.js +2 -2
  4. package/esm2015/lib/components/attachment-item/attachment-item/attachment-item.component.js +2 -2
  5. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +2 -2
  6. package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +2 -2
  7. package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +1 -1
  8. package/esm2015/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.js +2 -2
  9. package/esm2015/lib/components/comments/services/comment-api.service.js +3 -3
  10. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +3 -3
  11. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +2 -2
  12. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +2 -2
  13. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +3 -3
  14. package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +3 -3
  15. package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +2 -2
  16. package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +2 -2
  17. package/esm2015/lib/components/cts-tags/services/tags-api.service.js +2 -2
  18. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +6 -6
  19. package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +1 -1
  20. package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +23 -11
  21. package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +2 -2
  22. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +2 -2
  23. package/esm2015/lib/components/documents/services/document-templates.service.js +3 -3
  24. package/esm2015/lib/components/documents/services/documents.service.js +3 -3
  25. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +2 -2
  26. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +2 -2
  27. package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +2 -2
  28. package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +2 -2
  29. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +3 -3
  30. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +2 -2
  31. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +2 -2
  32. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +5 -5
  33. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +3 -3
  34. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +2 -2
  35. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +2 -2
  36. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +2 -2
  37. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +4 -4
  38. package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +2 -2
  39. package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +2 -2
  40. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +2 -2
  41. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +3 -3
  42. package/esm2015/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.js +3 -3
  43. package/esm2015/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.js +3 -3
  44. package/esm2015/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.js +2 -2
  45. package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +2 -2
  46. package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +2 -2
  47. package/esm2015/lib/components/file-manger/components/clipboard/clipboard.component.js +2 -2
  48. package/esm2015/lib/components/file-manger/components/create-modal/create-modal.component.js +4 -4
  49. package/esm2015/lib/components/file-manger/components/folder-modal/folder-modal.component.js +2 -2
  50. package/esm2015/lib/components/file-manger/components/scan-modal/scan-modal.component.js +4 -4
  51. package/esm2015/lib/components/file-manger/components/share-dialog/share-dialog.component.js +5 -5
  52. package/esm2015/lib/components/file-manger/components/sidepanel/sidepanel.component.js +4 -4
  53. package/esm2015/lib/components/file-manger/components/update-modal/update-modal.component.js +3 -3
  54. package/esm2015/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.js +78 -0
  55. package/esm2015/lib/components/file-manger/file-manager.abstract.js +459 -301
  56. package/esm2015/lib/components/file-manger/file-manger.module.js +10 -5
  57. package/esm2015/lib/components/file-manger/models/file-manager-config.model.js +7 -0
  58. package/esm2015/lib/components/file-manger/models/index.js +4 -0
  59. package/esm2015/lib/components/file-manger/models/pagination-payload.mode.js +2 -0
  60. package/esm2015/lib/components/file-manger/models/pagination-response.model.js +6 -0
  61. package/esm2015/lib/components/latest-activity/services/activity-log.service.js +3 -3
  62. package/esm2015/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.js +2 -2
  63. package/esm2015/lib/components/notifications/components/base-list-notfications.component.js +154 -0
  64. package/esm2015/lib/components/notifications/components/base-notifications.component.js +35 -0
  65. package/esm2015/lib/components/notifications/components/index.js +7 -0
  66. package/esm2015/lib/components/notifications/components/notification-item/get-icon.pipe.js +44 -0
  67. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +41 -129
  68. package/esm2015/lib/components/notifications/components/notification-source-select/notification-source-select.component.js +34 -0
  69. package/esm2015/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.js +26 -0
  70. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +75 -165
  71. package/esm2015/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.js +59 -0
  72. package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +53 -175
  73. package/esm2015/lib/components/notifications/components/notifications-list/options.js +24 -0
  74. package/esm2015/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.js +43 -0
  75. package/esm2015/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.js +28 -0
  76. package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.js +30 -0
  77. package/esm2015/lib/components/notifications/components/notifications-settings/notifications-settings.component.js +163 -0
  78. package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.js +28 -0
  79. package/esm2015/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.js +158 -0
  80. package/esm2015/lib/components/notifications/constants/date.js +8 -0
  81. package/esm2015/lib/components/notifications/constants/index.js +5 -0
  82. package/esm2015/lib/components/notifications/constants/pagination.js +5 -0
  83. package/esm2015/lib/components/notifications/constants/panel.js +5 -0
  84. package/esm2015/lib/components/notifications/constants/status.js +10 -0
  85. package/esm2015/lib/components/notifications/containers/index.js +3 -0
  86. package/esm2015/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.js +98 -0
  87. package/esm2015/lib/components/notifications/containers/notifications-list-container/options.js +18 -0
  88. package/esm2015/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.js +67 -0
  89. package/esm2015/lib/components/notifications/directives/button.directive.js +28 -0
  90. package/esm2015/lib/components/notifications/directives/index.js +3 -0
  91. package/esm2015/lib/components/notifications/directives/notification.directive.js +28 -0
  92. package/esm2015/lib/components/notifications/index.js +2 -0
  93. package/esm2015/lib/components/notifications/models/common.js +2 -0
  94. package/esm2015/lib/components/notifications/models/index.js +11 -0
  95. package/esm2015/lib/components/notifications/models/notification-definition.model.js +2 -0
  96. package/esm2015/lib/components/notifications/models/notification-options.js +2 -0
  97. package/esm2015/lib/components/notifications/models/notification-setting.presenter.js +2 -0
  98. package/esm2015/lib/components/notifications/models/notification-subscription.model.js +2 -0
  99. package/esm2015/lib/components/notifications/models/notification.model.js +2 -0
  100. package/esm2015/lib/components/notifications/models/notifications-list-options.js +3 -0
  101. package/esm2015/lib/components/notifications/models/paging-response.model.js +2 -0
  102. package/esm2015/lib/components/notifications/models/params.model.js +2 -0
  103. package/esm2015/lib/components/notifications/models/vocabularies.js +2 -0
  104. package/esm2015/lib/components/notifications/notifications.module.js +80 -46
  105. package/esm2015/lib/components/notifications/public-api.js +9 -0
  106. package/esm2015/lib/components/notifications/services/index.js +2 -0
  107. package/esm2015/lib/components/notifications/services/listener.service.js +19 -0
  108. package/esm2015/lib/components/notifications/services/notifications.service.js +155 -0
  109. package/esm2015/lib/components/notifications/services/params.service.js +31 -0
  110. package/esm2015/lib/components/notifications/services/response.service.js +65 -0
  111. package/esm2015/lib/components/notifications/utilities/index.js +2 -0
  112. package/esm2015/lib/components/notifications/utilities/response.adapter.js +12 -0
  113. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +3 -3
  114. package/esm2015/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.js +2 -2
  115. package/esm2015/lib/components/permissions/permission.service.js +2 -2
  116. package/esm2015/lib/components/permissions/permissions/permissions.component.js +3 -3
  117. package/esm2015/lib/components/select-users-by-department/select-users-by-departments/department-management.service.js +2 -2
  118. package/esm2015/lib/components/table/dynamic-column/dynamic-column.component.js +2 -2
  119. package/esm2015/lib/components/table/table/table.component.js +3 -3
  120. package/esm2015/lib/components/{notifications → toasts}/components/notification-toast/notification-toast.component.js +8 -12
  121. package/esm2015/lib/components/toasts/index.js +2 -0
  122. package/esm2015/lib/components/toasts/public-api.js +3 -0
  123. package/esm2015/lib/components/toasts/toasts.module.js +19 -0
  124. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +2 -2
  125. package/esm2015/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.js +2 -2
  126. package/esm2015/lib/core/adapters/adapter.service.js +1 -1
  127. package/esm2015/lib/core/core.module.js +1 -1
  128. package/esm2015/lib/core/env/env-manager.js +1 -1
  129. package/esm2015/lib/core/env/index.js +1 -1
  130. package/esm2015/lib/core/models/api-response.model.js +2 -0
  131. package/esm2015/lib/core/models/automation-response.model.js +2 -0
  132. package/esm2015/lib/core/models/base-response.models.js +2 -0
  133. package/esm2015/lib/core/models/index.js +5 -0
  134. package/esm2015/lib/core/services/callApi/call-api.service.js +1 -1
  135. package/esm2015/lib/core/services/extension/action.extensions.js +1 -1
  136. package/esm2015/lib/core/services/extension/component-register.service.js +1 -1
  137. package/esm2015/lib/core/services/extension/extenion-utils.js +1 -1
  138. package/esm2015/lib/core/services/extension/extension-element.js +1 -1
  139. package/esm2015/lib/core/services/extension/extension-loader.service.js +1 -1
  140. package/esm2015/lib/core/services/extension/extension.service.js +1 -1
  141. package/esm2015/lib/core/services/initialization/initialization.service.js +1 -1
  142. package/esm2015/lib/core/services/nuxeo/nuxeo.service.js +3 -3
  143. package/esm2015/lib/core/services/translation/translation.service.js +3 -3
  144. package/esm2015/lib/core/utilities/moment-date-adapter.js +1 -1
  145. package/esm2015/lib/core/utilities/utility.service.js +1 -1
  146. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +2 -2
  147. package/esm2015/lib/directive/permissions/evaluators.service.js +2 -2
  148. package/esm2015/lib/directive/permissions/permissions.directive.js +2 -2
  149. package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +2 -2
  150. package/esm2015/lib/directive/rtl/set-rtl.directive.js +2 -2
  151. package/esm2015/lib/shared-services/dynamic-form.service.js +2 -2
  152. package/esm2015/lib/shared-services/file-manager.service.js +456 -222
  153. package/esm2015/lib/shared-services/global-admin.service.js +1 -1
  154. package/esm2015/lib/shared-services/mainfolder.service.js +3 -3
  155. package/esm2015/lib/shared-services/publishing-document.service.js +3 -3
  156. package/esm2015/lib/shared-services/recently-viewed.service.js +3 -3
  157. package/esm2015/lib/shared-services/shared-docs.service.js +3 -3
  158. package/esm2015/lib/shared-services/upload-file.service.js +2 -2
  159. package/esm2015/lib/shared-services/upload-managment.service.js +2 -2
  160. package/esm2015/lib/shared-services/user.service.js +3 -3
  161. package/esm2015/public-api.js +145 -149
  162. package/fesm2015/nuxeo-development-framework.js +24280 -23143
  163. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  164. package/lib/components/activities-log/activities-log/activities-log.service.d.ts +1 -1
  165. package/lib/components/attachment-item/attachment-item/attachment-item.component.d.ts +1 -1
  166. package/lib/components/comments/components/comment-item/comment-item.component.d.ts +1 -1
  167. package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +1 -1
  168. package/lib/components/comments/components/edit-delete-modal/edit-delete-modal.component.d.ts +1 -1
  169. package/lib/components/comments/services/comment-api.service.d.ts +2 -2
  170. package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +2 -2
  171. package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +1 -1
  172. package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +1 -1
  173. package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +2 -2
  174. package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +2 -2
  175. package/lib/components/create-entity/create-entity/create-entity.component.d.ts +1 -1
  176. package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +1 -1
  177. package/lib/components/cts-tags/services/tags-api.service.d.ts +1 -1
  178. package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +1 -1
  179. package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +1 -1
  180. package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +8 -4
  181. package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +1 -1
  182. package/lib/components/documents/components/document-list/documents-list.component.d.ts +1 -1
  183. package/lib/components/documents/services/document-templates.service.d.ts +2 -2
  184. package/lib/components/documents/services/documents.service.d.ts +2 -2
  185. package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +1 -1
  186. package/lib/components/dynamic-chart/services/chart-data.service.d.ts +1 -1
  187. package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +1 -1
  188. package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +1 -1
  189. package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +1 -1
  190. package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +1 -1
  191. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +1 -1
  192. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +4 -4
  193. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +2 -2
  194. package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +1 -1
  195. package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +1 -1
  196. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +1 -1
  197. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +3 -3
  198. package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +1 -1
  199. package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +1 -1
  200. package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +1 -1
  201. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +2 -2
  202. package/lib/components/dynamic-view/custom-document-viewer/custom-document-viewer.component.d.ts +2 -2
  203. package/lib/components/dynamic-view/custom-pp-viewer/custom-pp-viewer.component.d.ts +2 -2
  204. package/lib/components/dynamic-view/cutome-voc-viewer/cutome-voc-viewer.component.d.ts +1 -1
  205. package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +1 -1
  206. package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +1 -1
  207. package/lib/components/file-manger/components/clipboard/clipboard.component.d.ts +1 -1
  208. package/lib/components/file-manger/components/create-modal/create-modal.component.d.ts +3 -3
  209. package/lib/components/file-manger/components/folder-modal/folder-modal.component.d.ts +1 -1
  210. package/lib/components/file-manger/components/scan-modal/scan-modal.component.d.ts +3 -3
  211. package/lib/components/file-manger/components/share-dialog/share-dialog.component.d.ts +3 -3
  212. package/lib/components/file-manger/components/sidepanel/sidepanel.component.d.ts +2 -2
  213. package/lib/components/file-manger/components/update-modal/update-modal.component.d.ts +2 -2
  214. package/lib/components/file-manger/directives/file-grid-infinite-scroll.directive.d.ts +12 -0
  215. package/lib/components/file-manger/file-manager.abstract.d.ts +20 -8
  216. package/lib/components/file-manger/file-manger.module.d.ts +37 -36
  217. package/lib/components/file-manger/models/file-manager-config.model.d.ts +8 -0
  218. package/lib/components/file-manger/models/index.d.ts +3 -0
  219. package/lib/components/file-manger/models/pagination-payload.mode.d.ts +3 -0
  220. package/lib/components/file-manger/models/pagination-response.model.d.ts +30 -0
  221. package/lib/components/latest-activity/services/activity-log.service.d.ts +2 -2
  222. package/lib/components/mutiple-dynamic-form-viewer/multiple-dynamic-form-viewer/multiple-dynamic-form-viewer.component.d.ts +1 -1
  223. package/lib/components/notifications/components/base-list-notfications.component.d.ts +40 -0
  224. package/lib/components/notifications/components/base-notifications.component.d.ts +20 -0
  225. package/lib/components/notifications/components/index.d.ts +6 -0
  226. package/lib/components/notifications/components/notification-item/get-icon.pipe.d.ts +8 -0
  227. package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +21 -22
  228. package/lib/components/notifications/components/notification-source-select/notification-source-select.component.d.ts +12 -0
  229. package/lib/components/notifications/components/notification-status-toggle/notification-status-toggle.component.d.ts +8 -0
  230. package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +29 -30
  231. package/lib/components/notifications/components/notifications-date-select/notifications-date-select.component.d.ts +19 -0
  232. package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +15 -54
  233. package/lib/components/notifications/components/notifications-list/options.d.ts +2 -0
  234. package/lib/components/notifications/components/notifications-list-actions/notifications-list-actions.component.d.ts +15 -0
  235. package/lib/components/notifications/components/notifications-settings/check-if-subscribed.pipe.d.ts +8 -0
  236. package/lib/components/notifications/components/notifications-settings/notifications-settings.adapter.d.ts +3 -0
  237. package/lib/components/notifications/components/notifications-settings/notifications-settings.component.d.ts +40 -0
  238. package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar-content.d.ts +9 -0
  239. package/lib/components/notifications/components/notifications-sidebar/notifications-sidebar.component.d.ts +43 -0
  240. package/lib/components/notifications/constants/date.d.ts +7 -0
  241. package/lib/components/notifications/constants/index.d.ts +4 -0
  242. package/lib/components/notifications/constants/pagination.d.ts +4 -0
  243. package/lib/components/notifications/constants/panel.d.ts +4 -0
  244. package/lib/components/notifications/constants/status.d.ts +9 -0
  245. package/lib/components/notifications/containers/index.d.ts +2 -0
  246. package/lib/components/notifications/containers/notifications-list-container/notifications-list-container.component.d.ts +27 -0
  247. package/lib/components/notifications/containers/notifications-list-container/options.d.ts +2 -0
  248. package/lib/components/notifications/containers/notifications-settings-container/notifications-settings-container.component.d.ts +22 -0
  249. package/lib/components/notifications/directives/button.directive.d.ts +9 -0
  250. package/lib/components/notifications/directives/index.d.ts +2 -0
  251. package/lib/components/notifications/directives/notification.directive.d.ts +9 -0
  252. package/lib/components/notifications/index.d.ts +1 -0
  253. package/lib/components/notifications/models/common.d.ts +64 -0
  254. package/lib/components/notifications/models/index.d.ts +10 -0
  255. package/lib/components/notifications/models/notification-definition.model.d.ts +17 -0
  256. package/lib/components/notifications/models/notification-options.d.ts +7 -0
  257. package/lib/components/notifications/models/notification-setting.presenter.d.ts +24 -0
  258. package/lib/components/notifications/models/notification-subscription.model.d.ts +13 -0
  259. package/lib/components/notifications/models/notification.model.d.ts +16 -0
  260. package/lib/components/notifications/models/notifications-list-options.d.ts +34 -0
  261. package/lib/components/notifications/models/paging-response.model.d.ts +12 -0
  262. package/lib/components/notifications/models/params.model.d.ts +6 -0
  263. package/lib/components/notifications/models/vocabularies.d.ts +12 -0
  264. package/lib/components/notifications/notifications.module.d.ts +32 -16
  265. package/lib/components/notifications/public-api.d.ts +8 -0
  266. package/lib/components/notifications/services/index.d.ts +1 -0
  267. package/lib/components/notifications/services/listener.service.d.ts +8 -0
  268. package/lib/components/notifications/services/notifications.service.d.ts +55 -0
  269. package/lib/components/notifications/services/params.service.d.ts +19 -0
  270. package/lib/components/notifications/services/response.service.d.ts +19 -0
  271. package/lib/components/notifications/utilities/index.d.ts +1 -0
  272. package/lib/components/notifications/utilities/response.adapter.d.ts +3 -0
  273. package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +2 -2
  274. package/lib/components/permissions/add-permissions-dialog/add-permissions-dialog.component.d.ts +1 -1
  275. package/lib/components/permissions/permission.service.d.ts +1 -1
  276. package/lib/components/permissions/permissions/permissions.component.d.ts +2 -2
  277. package/lib/components/select-users-by-department/select-users-by-departments/department-management.service.d.ts +1 -1
  278. package/lib/components/table/dynamic-column/dynamic-column.component.d.ts +1 -1
  279. package/lib/components/table/table/table.component.d.ts +2 -2
  280. package/lib/components/{notifications → toasts}/components/notification-toast/notification-toast.component.d.ts +2 -4
  281. package/lib/components/toasts/index.d.ts +1 -0
  282. package/lib/components/toasts/public-api.d.ts +2 -0
  283. package/lib/components/toasts/toasts.module.d.ts +8 -0
  284. package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +1 -1
  285. package/lib/components/vocabulary/translated-vocabulary-select/translated-vocabulary-select.component.d.ts +1 -1
  286. package/lib/core/models/api-response.model.d.ts +24 -0
  287. package/lib/core/models/automation-response.model.d.ts +24 -0
  288. package/lib/core/models/base-response.models.d.ts +12 -0
  289. package/lib/core/models/index.d.ts +4 -0
  290. package/lib/core/services/nuxeo/nuxeo.service.d.ts +1 -1
  291. package/lib/core/services/translation/translation.service.d.ts +3 -3
  292. package/lib/directive/app-has-role/app-has-role.directive.d.ts +1 -1
  293. package/lib/directive/permissions/evaluators.service.d.ts +1 -1
  294. package/lib/directive/permissions/permissions.directive.d.ts +1 -1
  295. package/lib/directive/rtl/set-dir-rtl.directive.d.ts +1 -1
  296. package/lib/directive/rtl/set-rtl.directive.d.ts +1 -1
  297. package/lib/shared-services/dynamic-form.service.d.ts +1 -1
  298. package/lib/shared-services/file-manager.service.d.ts +27 -19
  299. package/lib/shared-services/mainfolder.service.d.ts +2 -2
  300. package/lib/shared-services/publishing-document.service.d.ts +2 -2
  301. package/lib/shared-services/recently-viewed.service.d.ts +2 -2
  302. package/lib/shared-services/shared-docs.service.d.ts +2 -2
  303. package/lib/shared-services/upload-file.service.d.ts +1 -1
  304. package/lib/shared-services/upload-managment.service.d.ts +1 -1
  305. package/lib/shared-services/user.service.d.ts +2 -2
  306. package/package.json +1 -1
  307. package/public-api.d.ts +139 -143
  308. package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +0 -22
  309. package/esm2015/lib/components/notifications/notifications.service.js +0 -358
  310. package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +0 -10
  311. package/lib/components/notifications/notifications.service.d.ts +0 -87
@@ -11,9 +11,9 @@ import * as i5 from "../../../custom-toastr/services/custom-toastr.service";
11
11
  import * as i6 from "@angular/forms";
12
12
  import * as i7 from "../../../../shared-services/dynamic-form.service";
13
13
  import * as i8 from "../../../hijri-gregorian-datepicker/services/date-helper.service";
14
- import * as i9 from "../../../../Core/adapters/adapter.service";
15
- import * as i10 from "../../../../Core/services/translation/translation.service";
16
- import * as i11 from "../../../../Core/services/nuxeo/nuxeo.service";
14
+ import * as i9 from "../../../../core/adapters/adapter.service";
15
+ import * as i10 from "../../../../core/services/translation/translation.service";
16
+ import * as i11 from "../../../../core/services/nuxeo/nuxeo.service";
17
17
  import * as i12 from "../../../../shared-services/user.service";
18
18
  import * as i13 from "../../../../configuration/app-config.service";
19
19
  import * as i14 from "../../../documents/components/document-scan/document-scan.service";
@@ -311,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
311
311
  type: Inject,
312
312
  args: ['environment']
313
313
  }] }, { type: i14.DocumentScanService }]; } });
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2Nhbi1tb2RhbC9zY2FuLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zY2FuLW1vZGFsL3NjYW4tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU96RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjakMsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFBNEMsSUFBSSxFQUN2QyxTQUEyQyxFQUMzQyxxQkFBNkMsRUFDN0MscUJBQTRDLEVBQzNDLGlCQUFxQyxFQUNyQyxhQUFrQyxFQUNsQyxXQUF5QixFQUN6QixrQkFBc0MsRUFDdEMsaUJBQXFDLEVBQ3JDLE9BQXdCLEVBQ3hCLGtCQUF1QyxFQUN2QyxZQUE0QixFQUM1QixXQUF5QixFQUN6QixjQUFpQyxFQUNWLFdBQVcsRUFDbEMsbUJBQXlDO1FBZlAsU0FBSSxHQUFKLElBQUksQ0FBQTtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUFrQztRQUMzQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXdCO1FBQzdDLDBCQUFxQixH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QywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekYsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7O2dIQXZUVSxrQkFBa0Isa0JBbUNULGVBQWUsa2JBY3pCLGFBQWE7b0dBakRaLGtCQUFrQixzREN2Qi9CLG96aUJBZ1ZBOzRGRHpUYSxrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDOzswQkFvQ2MsTUFBTTsyQkFBQyxlQUFlOzswQkFjaEMsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVXBsb2FkTWFuYWdtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91cGxvYWQtbWFuYWdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dNYW5nbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZGlhbG9nLW1hbmdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50U2NhblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1zY2FuL2RvY3VtZW50LXNjYW4uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGVIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvc2VydmljZXMvZGF0ZS1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vQ29yZS9hZGFwdGVycy9hZGFwdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2Nhbi1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYW4tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NjYW4tbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2Nhbk1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzY2FubmVyVXBsb2FkQnV0dG9uO1xyXG4gIGZpbGVUeXBlO1xyXG4gIHNvdXJjZTtcclxuICBhY3RpdmVUYWIgPSAnc2Nhbic7XHJcbiAgY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSBmYWxzZTtcclxuICBteUVudmlyb25tZW50XHJcbiAgc2VsZWN0ZWRGaWxlID0ge1xyXG4gICAgc3RhdGljRGF0YSA6IHt9LFxyXG4gICAgZmlsZVR5cGU6ICcnLFxyXG4gICAgZHluYW1pY0Zvcm06ICcnLFxyXG4gICAgZHluYW1pY0RhdGE6IHtcclxuICAgICAgdmFsaWQ6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7fVxyXG4gICAgfSxcclxuICAgIGZpbGU6ICcnXHJcbiAgfTtcclxuICB0ZW1wb3JhcnlEeWFubWljRGF0YSA9IHt9O1xyXG4gIHNob3dSZW5kZXJlciA9IGZhbHNlO1xyXG5cclxuICB1cGxvYWRTdGFydFN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuICBmaWxlQ2hhbmdlU3Vic2NyaXB0aW9uICA6U3Vic2NyaXB0aW9uO1xyXG4gIGZpbGVGb3JtU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuICBjb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGxhbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgaXNBcmFiaWMgPSBmYWxzZTtcclxuICBzaG93U3RhdGljRm9ybSA9IGZhbHNlXHJcbiAgdXNpbmdFeHRyYUZpZWxkcyA9IGZhbHNlOyAvLyBmbGFnZSB0byBzd2l0Y2ggYmV0d2VlbiBzdGF0aWMgZm9ybSB0eXBlc1xyXG4gIGZpbGVGb3JtIDogRm9ybUdyb3VwO1xyXG4gIHN0YXRpY0Zvcm1GaWVsZHM7XHJcbiAgYWdlbmN5TmFtZUZpbHRlciA7XHJcbiAgY291bnRyeU5hbWVGaWx0ZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTY2FuTW9kYWxDb21wb25lbnQ+LFxyXG4gICAgcHVibGljIHVwbG9hZE1hbmdtZW50U2VydmljZTogVXBsb2FkTWFuYWdtZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dNYW5nbWVudFNlcnZpY2U6IERpYWxvZ01hbmdtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsZU1hbmdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9zdGVyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXIgOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGVIZWxwZXJTZXJ2aWNlIDogRGF0ZUhlbHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFkYXB0ZXIgOiBBZGFwdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlIDogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2UgIDogTnV4ZW9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZSA6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25mU2VydmljZSA6IEFwcENvbmZpZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJub21lbnQsXHJcbiAgICBwcml2YXRlIGRvY3VtZW50U2NhblNlcnZpY2UgOiBEb2N1bWVudFNjYW5TZXJ2aWNlKSB7IFxyXG4gICAgICB0aGlzLm15RW52aXJvbm1lbnQgPSB0aGlzLmVudmlybm9tZW50XHJcbiAgICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5pc0FyYWJpYyA9IHJlcztcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVR5cGUgPSB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5maWxlVHlwZTtcclxuICAgIHRoaXMuc291cmNlID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2UuYWRkaW5nRnJvbTtcclxuXHJcbiAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmdldEZpbGVTY2hlbWFzKHRoaXMuZmlsZVR5cGUudHlwZSkuc3Vic2NyaWJlKHNjaGVtYXMgPT4ge1xyXG4gICAgICBzY2hlbWFzLm1hcChpdGVtID0+IHtcclxuICAgICAgICBpZihpdGVtLm5hbWUgPT09IFwiZ2VuZXJhbGRvY3VtZW50XCIpe1xyXG4gICAgICAgICAgdGhpcy51c2luZ0V4dHJhRmllbGRzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcbiAgICAgICAgICAvL2lmIHN0YXJ0aW5nIGZyb20gZmlsZW1uYWdlciB0aGVuIGkgaGF2ZSBmaXhlZCBmaWxlIHR5cGUgZm9yIGFsbCBhdHRhY2htZXRuIGFuZCBzaW5nbGUgZHluYWltYyBmb3JtICB0eXBlXHJcbiAgICBpZiAodGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJykge1xyXG4gICAgICBpZih0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IHsuLi50aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMuc2hpZnQoKX07XHJcbiAgICAgICAgICB0aGlzLnRlbXBvcmFyeUR5YW5taWNEYXRhID10aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YS5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5maWxlRm9ybS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRGaWxlLnN0YXRpY0RhdGEpO1xyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnYWdlbmN5Q2F0ZWdvcnlDb2RlJ10pe1xyXG4gICAgICAgICAgICB0aGlzLmFnZW5jeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnkgOiB0aGlzLnNlbGVjdGVkRmlsZVsnc3RhdGljRGF0YSddWydhZ2VuY3lDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddKXtcclxuICAgICAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeSA6IHRoaXMuc2VsZWN0ZWRGaWxlWydzdGF0aWNEYXRhJ11bJ2NvdW50cnlDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcGVuU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVuZGVyZXIgPSB0cnVlO1xyXG4gICAgICAgIH0sIDMwMDApO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNGb3JtID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2Uuc3RvcmVkRHluYW1pY0Zvcm07XHJcbiAgICAgICAgICB0aGlzLnNob3dSZW5kZXJlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm9wZW5TdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy51cGxvYWRTdGFydFN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS51cGxvYWRTdGFydC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRJblByb2dyZXNzID0gcmVzO1xyXG4gICAgfSlcclxuICAgIHRoaXMuZmlsZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5maWxlQ2hhbmdlLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5maWxlID0gZXZlbnQ7XHJcbiAgICAgIGxldCBwYXlMb2FkID0gdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMuc2VsZWN0ZWRGaWxlKTtcclxuICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5jcmVhdGVGaWxlKHBheUxvYWQsIHRoaXMuZmlsZU1hbmdlclNlcnZpY2Uuc2VsZWN0ZWRGb2xkZXJJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYocmVzWydzdGF0dXMnXSAmJiByZXNbJ3N0YXR1cyddID09PSAnZmFpbGVkJyl7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5zY2FuQ3JlYXRpb25GYWlsZWQgPSB0cnVlO1xyXG4gICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InICwgJ1RPQVNURVIuRVJST1InICwgJ1RPQVNURVIuVVBMT0FEX0VSUk9SJyk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5vblJlZnJlc2hpbmdGaWxlTWFuZ2VyLm5leHQoKTtcclxuICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5GSUxFX0NSRUFURURfU1VDQ0VcIilcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5zdG9yZWRGaWxlID0ge307XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5yZXNldFN0YXR1cygpO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVTdWJzY3JpcHRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgICAgdGhpcy5zY2FubmVyVXBsb2FkQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYW5uZXJVcGxvYWRCdXR0b24nKTtcclxuICB9XHJcbiAgXHJcbiAgaW5pdGlhdGZpbGVGb3JtKCl7XHJcbiAgICBpZih0aGlzLnVzaW5nRXh0cmFGaWVsZHMpe1xyXG4gICAgICB0aGlzLmZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgdGl0bGUgOiBbJycgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uIDogWycnXSxcclxuICAgICAgICBzdWJqZWN0IDogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBkb2N1bWVudE51bWJlciA6IFsnJ10sXHJcbiAgICAgICAgZ2RvY3VtZW50RGF0ZSA6IFtudWxsICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBzZWNyZWN5TGV2ZWwgOiBbbnVsbF0sXHJcbiAgICAgICAgaW1wb3J0YW5jZUxldmVsOltudWxsXSxcclxuICAgICAgICBkZXBhcnRtZW50Q29kZTpbJyddLFxyXG4gICAgICAgIGFnZW5jeUNhdGVnb3J5Q29kZTpbbnVsbF0sXHJcbiAgICAgICAgYWdlbmN5TmFtZTpbbnVsbF0sXHJcbiAgICAgICAgY291bnRyeUNhdGVnb3J5Q29kZTpbbnVsbF0sXHJcbiAgICAgICAgY291bnRyeU5hbWU6W251bGxdLFxyXG4gICAgICAgIHJlbWFya3M6WycnXVxyXG4gICAgICB9KVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICB0aXRsZSA6IFsnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgZGVzY3JpcHRpb24gOiBbJyddXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRpY0Zvcm1GaWVsZHMgPSB0aGlzLmFwcENvbmZTZXJ2aWNlLm15Q29uZmlndXJhdGlvbi5zdGF0aWNGb3JtRmllbGRzO1xyXG4gICAgaWYodGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuZmlsZUZvcm0uZ2V0KCdkZXBhcnRtZW50Q29kZScpKXtcclxuICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2RlcGFydG1lbnRDb2RlJykuc2V0VmFsdWUodGhpcy51c2VyU2VydmljZS5nZXRVc2VyRGVwYXJ0bWVudEZyb21QYXRoKHRoaXMuZGF0YS5wYXRoKSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb3BlblN1YnNjcmlwdGlvbnMoKXtcclxuICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNEYXRhID0gZGF0YTtcclxuICAgIH0pXHJcblxyXG4gICAgaWYodGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpKXtcclxuICAgICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLmFnZW5jeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnkgOiByZXNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpKXtcclxuICAgICAgdGhpcy5jb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uID0gIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5Q2F0ZWdvcnlDb2RlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIHRoaXMuY291bnRyeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICBjYXRlZ29yeSA6IHJlc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25VcGxvYWRpbmcoZXZlbnQpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkSW5Qcm9ncmVzcyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gb25TY2FubmVyU3VjY2VzcyhldmVudCkge1xyXG4gIC8vICAgLy9jb25zb2xlLmxvZyhldmVudCk7XHJcbiAgLy8gICB0aGlzLnNlbGVjdGVkRmlsZS5maWxlID0gZXZlbnQ7XHJcbiAgLy8gICBsZXQgcGF5TG9hZCA9IHRoaXMuY29uc3RydWN0UGF5TG9hZCh0aGlzLnNlbGVjdGVkRmlsZSk7XHJcbiAgLy8gICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZpbGUocGF5TG9hZCwgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5zZWxlY3RlZEZvbGRlcklkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAvLyAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5vblJlZnJlc2hpbmdGaWxlTWFuZ2VyLm5leHQoKTtcclxuICAvLyAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkZJTEVfQ1JFQVRFRF9TVUNDRVwiKVxyXG4gIC8vICAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSA9IHt9O1xyXG4gIC8vICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5yZXNldFN0YXR1cygpO1xyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIG9uZHluYW1pY0Zvcm1DaGFuZ2UoZHluYW1pY0RhdGEpIHtcclxuICAgIGlmIChkeW5hbWljRGF0YS5kYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGR5bmFtaWNEYXRhLmRhdGEpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhID0geyAuLi5keW5hbWljRGF0YSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSA9IHt9O1xyXG4gICAgdGhpcy5yZW1vdmVTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuXHJcbiAgfVxyXG5cclxuICBtaW5pbWl6RGlhbG9nKCkge1xyXG4gICAgdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLm9uTWluaW1pemluZy5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLnB1c2goey4uLnRoaXMuc2VsZWN0ZWRGaWxlfSlcclxuICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVN1YnNjcmlwdGlvbigpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBsb2FkU3RhcnRTdWJzY3JpcHRpb24gPyB0aGlzLnVwbG9hZFN0YXJ0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgICAgdGhpcy5maWxlQ2hhbmdlU3Vic2NyaXB0aW9uID8gdGhpcy5maWxlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRBZGRpbmdQcm9wZXJ0aWVzKCkge1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuYWRkaW5nUHJvcGVydGllc01vZGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNyZWF0ZURvY3VtZW50KCkge1xyXG4gICAgdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLm9uTWluaW1pemluZy5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLnB1c2goey4uLnRoaXMuc2VsZWN0ZWRGaWxlfSk7XHJcbiAgICB0aGlzLnNjYW5uZXJVcGxvYWRCdXR0b24uY2xpY2soKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGF5TG9hZChmaWxlKSB7XHJcbiAgICBsZXQgcHJvcHMgPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb25zdHJ1Y3REeW5hbWljRm9ybVBheWxvYWQoZmlsZS5keW5hbWljRGF0YS5kYXRhLCBmaWxlLmR5bmFtaWNGb3JtKTtcclxuICAgIGxldCBzdGF0aWNGb3JtRGF0YSA9IHRoaXMubWFwcGluZ1N0YXRpY0RhdGEoZmlsZS5zdGF0aWNEYXRhKVxyXG5cclxuICAgIGxldCBwYXJhbSA9IHtcclxuICAgICAgXCJkb2N1bWVudFwiOiB7XHJcbiAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZmlsZVR5cGUudHlwZSxcclxuICAgICAgICBcIm5hbWVcIjogZmlsZS5zdGF0aWNEYXRhLnRpdGxlLFxyXG4gICAgICAgIFwicHJvcGVydGllc1wiOiB7XHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIC4uLnN0YXRpY0Zvcm1EYXRhLFxyXG4gICAgICAgICAgXCJmaWxlOmNvbnRlbnRcIjoge1xyXG4gICAgICAgICAgICBcInVwbG9hZC1iYXRjaFwiOiBmaWxlLmZpbGUuYmxvYlsndXBsb2FkLWJhdGNoJ10sXHJcbiAgICAgICAgICAgIFwidXBsb2FkLWZpbGVJZFwiOiBmaWxlLmZpbGUuYmxvYlsndXBsb2FkLWZpbGVJZCddXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlKSB7XHJcbiAgICAgIHBhcmFtW1wiZG9jdW1lbnRUeXBlQ29kZVwiXSA9IGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3BhcmFtcyA6IHBhcmFtICwgb3JpZ2luRmlsZSA6IGZpbGV9O1xyXG4gIH1cclxuXHJcbiAgbWFwcGluZ1N0YXRpY0RhdGEoZGF0YSl7XHJcbiAgICBpZihkYXRhLmdkb2N1bWVudERhdGUgJiYgZGF0YS5nZG9jdW1lbnREYXRlICE9PSBudWxsKXtcclxuICAgICAgbW9tZW50LmxvY2FsZSgnZW4nKTtcclxuICAgICAgZGF0YVsnaGRvY3VtZW50RGF0ZSddID0gdGhpcy5kYXRlSGVscGVyU2VydmljZS5ncmVnb3JpYW5Ub0hpanJpKGRhdGEuZ2RvY3VtZW50RGF0ZSwnaVlZWVktaU1NLWlERCcpO1xyXG4gICAgICBkYXRhLmdkb2N1bWVudERhdGUgPSAobW9tZW50KGRhdGEuZ2RvY3VtZW50RGF0ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFQwMDowMDowMC4wMDBcIikgKyBcIlpcIilcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuYWRhcHRPdXQoZGF0YSAsIHRoaXMuc3RhdGljRm9ybUZpZWxkcylcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdER5bmFtaWNGb3JtUGF5bG9hZChmaWxlKSB7XHJcbiAgICBsZXQgdXBkYXRlZER5bmFtaWNWYWx1ZXMgPSB7fVxyXG4gICAgT2JqZWN0LmtleXMoZmlsZT8uZHluYW1pY0RhdGE/LmRhdGEpLm1hcChrZXkgPT4ge1xyXG4gICAgICBsZXQgdXBkYXRlZEtleSA9IGtleS5yZXBsYWNlKCc6JywgJycpO1xyXG4gICAgICBsZXQgcHJlZml4ID0gZmlsZS5keW5hbWljRm9ybS5wcmVmaXhbdXBkYXRlZEtleV07XHJcbiAgICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgICAvLyBjaGVjayBpZiBjb21wb25lbnQgaXMgdXNlciBzZWxlY3RvciB0byBtYXAgaXRzIGRhdGEgZnJvbSBvYmplY3QgdG8gdXNlcm5hbWUgb3IgaWQgb25seSBcclxuICAgICAgICBpZihmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XSAmJiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gJiYgZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3VzZXJTZWxlY3RvciddID09PSB0cnVlKXtcclxuICAgICAgICAgICB1cGRhdGVkRHluYW1pY1ZhbHVlc1twcmVmaXggKyAnOicgKyB1cGRhdGVkS2V5XSA9IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydpZCddID8gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gOiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsncHJvcGVydGllcyddWyd1c2VybmFtZSddO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3ByZWZpeCArICc6JyArIHVwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1cclxuICAgICAgICB9XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZihmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gJiYgZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3VzZXJTZWxlY3RvciddID09PSB0cnVlKXtcclxuICAgICAgICAgICB1cGRhdGVkRHluYW1pY1ZhbHVlc1t1cGRhdGVkS2V5XSA9IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydpZCddID8gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gOiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsncHJvcGVydGllcyddWyd1c2VybmFtZSddO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3VwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1cclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiB1cGRhdGVkRHluYW1pY1ZhbHVlcztcclxuICB9XHJcblxyXG4gIGNyZWF0ZVdoZW5GaW5pc2goKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdUYWJUbyh0YWJOYW1lKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYk5hbWU7XHJcbiAgfVxyXG4gIGNoZWNrVmFsaWRhdGlvbigpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCl7XHJcbiAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24gPyB0aGlzLmxhbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPyB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24gPyB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cInNjYW5uZXItbW9kYWwtYm9keSByZWxhdGl2ZSBoLWZ1bGxcIj5cclxuICAgIDwhLS0gIC0tPlxyXG4gICAgPCEtLSB0YWJzIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwic2Nhbm5lci10YWJzIGQtZmxleCBqdXN0aWZ5LWFyb3VuZCBpdGVtcy1jZW50ZXIgYm9yZGVyLWItMiBib3JkZXItZ3JheS0yMDAgbWItNSB0ZXh0LWdyYXktOTAwIHRleHQtbGdcIlxyXG4gICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzY2FubmVyLXNpbmdsZS10YWIgY3Vyc29yLXBvaW50ZXIgdy0xLzIgdGV4dC1jZW50ZXIgcHktMiBib3JkZXItZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdUYWJUbygnc2NhbicpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZm9udC1ib2xkIGJvcmRlci1iLTQnOiBhY3RpdmVUYWIgPT09ICdzY2FuJyB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7XCJDUkVBVEUuU0NBTlwiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2Nhbm5lci1zaW5nbGUtdGFiIGN1cnNvci1wb2ludGVyIHctMS8yIHRleHQtY2VudGVyIHB5LTIgYm9yZGVyLWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nVGFiVG8oJ2Zvcm0nKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZvbnQtYm9sZCBib3JkZXItYi00JzogYWN0aXZlVGFiID09PSAnZm9ybScgfVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIHt7XCJDUkVBVEUuREVUQUlMU1wiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYnMtYm9keS13cmFwcGVyXCI+XHJcbiAgICAgICAgPCEtLSB1cGxvYWRlciBpbmRpY2F0b3IgbG9hZGluZyAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLWxvYWRlciBteC0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRJblByb2dyZXNzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIHNjYW5uZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInsgJ2Qtbm9uZSc6IGFjdGl2ZVRhYiA9PT0gJ2Zvcm0nIH1cIj5cclxuICAgICAgICAgICAgPGFwcC1kb2N1bWVudC1zY2FuXHJcbiAgICAgICAgICAgICAgICBbaGlkZVVwbG9hZEJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFt1c2VTdG9yZWRGaWxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+PC9hcHAtZG9jdW1lbnQtc2Nhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBmb3JtcyBhbmQgcHJvcGVydGllcyAgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm1zLXNlY3Rpb25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkLW5vbmUnOiBhY3RpdmVUYWIgPT09ICdzY2FuJyB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuRklMRV9UWVBFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIHRleHQtZ3JheS05MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNBcmFiaWMgPyAgZmlsZVR5cGUuYXJhYmljVGV4dCA6IGZpbGVUeXBlLmVuZ2xpc2hUZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWZpZWxkcyBtdC0zXCIgU2V0UnRsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsZUZvcm1cIiAqbmdJZj1cImZpbGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuVElUTEVcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3sgJ0NSRUFURS5USVRMRScgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVTQ1JJUFRJT05cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5ERVNDUklQVElPTicgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tIG5ldyBzdGF0aXMgZm9ybSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzaW5nRXh0cmFGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlciBbZm9ybV09XCJmaWxlRm9ybVwiIFthZ2VuY3lOYW1lRmlsdGVyXT1cImFnZW5jeU5hbWVGaWx0ZXJcIiBbY291bnRyeU5hbWVGaWx0ZXJdPVwiY291bnRyeU5hbWVGaWx0ZXJcIj48L2FwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9TVUJKRUNUXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdWJqZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDUkVBVEUuRE9DVU1FTlRfU1VCSkVDVCcgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9OVU1CRVJcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnROdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5ET0NVTUVOVF9OVU1CRVInIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnZG9jdW1lbnREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJDUkVBVEUuRE9DVU1FTlRfREFURVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLlNDUkVDWV9MRVZFTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZExhYmVsXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZFZhbHVlXT1cIidpZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9jYWJ1bGFyeVR5cGVdPVwiJ1ZPQ19TZWNyZWN5TGV2ZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VjcmVjeUxldmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLklNUE9SVEFOQ0VfTEVWRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRMYWJlbF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2FidWxhcnlUeXBlXT1cIidWT0NfSW1wb3J0YW5jZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbXBvcnRhbmNlTGV2ZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRFUEFSVE1FTlRfQ09ERVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tZGVwYXJ0bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXBhcnRtZW50Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxlYXNlIHNlbGVjdCBkZXBhcnRtZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcF9kZXBhcnRtZW50TmVzdGVkVHJlZV09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUF9PU19EZXBhcnRtZW50cydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BwX2RlcGFydG1lbnRUcmVlXT1cIidQUF9PU19EZXBhcnRtZW50cydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUHJlZml4XT1cIidvc2RlcHQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVBhcmVudFByb3BlcnR5XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29zZGVwYXJ0bWVudF9wYXJlbnREZXBhcnRtZW50Q29kZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUN1c3RvbUFkZEVkaXRBY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWR5bmFtaWMtZm9ybS1kZXBhcnRtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC10cmFuc2xhdGVkLXZvY2FidWxhcnktc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLkFHRU5DWV9DQVRFR09SWV9DT0RFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmJCaW5kTGFiZWxdPVwiJ2xhYmVsX2FyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmdCaW5kTGFiZWxdPVwiJ2xhYmVsX2VuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kVmFsdWVdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWT0NBQlVMQVJZLlNFTEVDVF9JVEVNJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWdlbmN5Q2F0ZWdvcnlDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQWdlbmN5Q2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUZpbHRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuQUdFTkNZX05BTUUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2VuY3lOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQWdlbmN5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwiYWdlbmN5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VGaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuQ09VTlRSWV9DQVRFR09SWV9DT0RFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmJCaW5kTGFiZWxdPVwiJ2xhYmVsX2FyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmdCaW5kTGFiZWxdPVwiJ2xhYmVsX2VuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kVmFsdWVdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWT0NBQlVMQVJZLlNFTEVDVF9JVEVNJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeUNhdGVnb3J5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2NidWxhcnlJZF09XCInVk9DX0NvdW50cnlDYXRlZ29yeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlRmlsdGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NSRUFURS5DT1VOVFJZX05BTUUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2NidWxhcnlJZF09XCInVk9DX0NvdW50cnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VGaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuUkVNQVJLU1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZW1hcmtzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDUkVBVEUuUkVNQVJLUycgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIlwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeW5hbWljLXBhcnQgLW14LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRmlsZS5keW5hbWljRm9ybSAmJiBzaG93UmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNlbGVjdGVkRmlsZS5keW5hbWljRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJ0ZW1wb3JhcnlEeWFubWljRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uZHluYW1pY0Zvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2FwcC1keW5hbWljLWZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gYWN0aW9ucyBhbmQgYnV0dG9ucyAgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgZC1mbGV4IGp1c3RpZnktYmV0d2VlbiBzY2FubmVyLWFjdGlvbnMtd3JhcHBlciBhYnNvbHV0ZSBib3R0b20tMFwiXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkJVVFRPTlMuQ0FOQ0VMXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b24gbXgtMlwiIChjbGljayk9XCJtaW5pbWl6RGlhbG9nKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5NSU5JTUlaRURcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JlYXRpb25GYWlsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FubmVyVXBsb2FkQnV0dG9uLmRpc2FibGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlRG9jdW1lbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZURvY3VtZW50KClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FubmVyVXBsb2FkQnV0dG9uLmRpc2FibGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnNjYW5DcmVhdGlvbkZhaWxlZCA/ICAoXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlKSA6IChcIkJVVFRPTlMuQ1JFQVRFXCIgfCB0cmFuc2xhdGUpIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtbWFuZ2VyL2NvbXBvbmVudHMvc2Nhbi1tb2RhbC9zY2FuLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zY2FuLW1vZGFsL3NjYW4tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU96RSxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjakMsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFBNEMsSUFBSSxFQUN2QyxTQUEyQyxFQUMzQyxxQkFBNkMsRUFDN0MscUJBQTRDLEVBQzNDLGlCQUFxQyxFQUNyQyxhQUFrQyxFQUNsQyxXQUF5QixFQUN6QixrQkFBc0MsRUFDdEMsaUJBQXFDLEVBQ3JDLE9BQXdCLEVBQ3hCLGtCQUF1QyxFQUN2QyxZQUE0QixFQUM1QixXQUF5QixFQUN6QixjQUFpQyxFQUNWLFdBQVcsRUFDbEMsbUJBQXlDO1FBZlAsU0FBSSxHQUFKLElBQUksQ0FBQTtRQUN2QyxjQUFTLEdBQVQsU0FBUyxDQUFrQztRQUMzQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXdCO1FBQzdDLDBCQUFxQixH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QywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDekYsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7O2dIQXZUVSxrQkFBa0Isa0JBbUNULGVBQWUsa2JBY3pCLGFBQWE7b0dBakRaLGtCQUFrQixzREN2Qi9CLG96aUJBZ1ZBOzRGRHpUYSxrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsNkJBQTZCLENBQUM7aUJBQzNDOzswQkFvQ2MsTUFBTTsyQkFBQyxlQUFlOzswQkFjaEMsTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgVXBsb2FkTWFuYWdtZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91cGxvYWQtbWFuYWdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dNYW5nbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZGlhbG9nLW1hbmdtZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEeW5hbWljRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWxlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvZmlsZS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC1zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVRvYXN0clNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdG9hc3RyL3NlcnZpY2VzL2N1c3RvbS10b2FzdHIuc2VydmljZSc7XHJcbmltcG9ydCB7IERvY3VtZW50U2NhblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9kb2N1bWVudHMvY29tcG9uZW50cy9kb2N1bWVudC1zY2FuL2RvY3VtZW50LXNjYW4uc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGVIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vaGlqcmktZ3JlZ29yaWFuLWRhdGVwaWNrZXIvc2VydmljZXMvZGF0ZS1oZWxwZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9hZGFwdGVycy9hZGFwdGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3RyYW5zbGF0aW9uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOdXhlb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL251eGVvL251eGVvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlndXJhdGlvbi9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2Nhbi1tb2RhbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYW4tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NjYW4tbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2Nhbk1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzY2FubmVyVXBsb2FkQnV0dG9uO1xyXG4gIGZpbGVUeXBlO1xyXG4gIHNvdXJjZTtcclxuICBhY3RpdmVUYWIgPSAnc2Nhbic7XHJcbiAgY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSBmYWxzZTtcclxuICBteUVudmlyb25tZW50XHJcbiAgc2VsZWN0ZWRGaWxlID0ge1xyXG4gICAgc3RhdGljRGF0YSA6IHt9LFxyXG4gICAgZmlsZVR5cGU6ICcnLFxyXG4gICAgZHluYW1pY0Zvcm06ICcnLFxyXG4gICAgZHluYW1pY0RhdGE6IHtcclxuICAgICAgdmFsaWQ6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7fVxyXG4gICAgfSxcclxuICAgIGZpbGU6ICcnXHJcbiAgfTtcclxuICB0ZW1wb3JhcnlEeWFubWljRGF0YSA9IHt9O1xyXG4gIHNob3dSZW5kZXJlciA9IGZhbHNlO1xyXG5cclxuICB1cGxvYWRTdGFydFN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuICBmaWxlQ2hhbmdlU3Vic2NyaXB0aW9uICA6U3Vic2NyaXB0aW9uO1xyXG4gIGZpbGVGb3JtU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA6IFN1YnNjcmlwdGlvbjtcclxuICBjb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uIDogU3Vic2NyaXB0aW9uO1xyXG4gIGxhbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgaXNBcmFiaWMgPSBmYWxzZTtcclxuICBzaG93U3RhdGljRm9ybSA9IGZhbHNlXHJcbiAgdXNpbmdFeHRyYUZpZWxkcyA9IGZhbHNlOyAvLyBmbGFnZSB0byBzd2l0Y2ggYmV0d2VlbiBzdGF0aWMgZm9ybSB0eXBlc1xyXG4gIGZpbGVGb3JtIDogRm9ybUdyb3VwO1xyXG4gIHN0YXRpY0Zvcm1GaWVsZHM7XHJcbiAgYWdlbmN5TmFtZUZpbHRlciA7XHJcbiAgY291bnRyeU5hbWVGaWx0ZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTY2FuTW9kYWxDb21wb25lbnQ+LFxyXG4gICAgcHVibGljIHVwbG9hZE1hbmdtZW50U2VydmljZTogVXBsb2FkTWFuYWdtZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dNYW5nbWVudFNlcnZpY2U6IERpYWxvZ01hbmdtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgZmlsZU1hbmdlclNlcnZpY2U6IEZpbGVNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9zdGVyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXIgOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZHluYW1pY0Zvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGVIZWxwZXJTZXJ2aWNlIDogRGF0ZUhlbHBlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFkYXB0ZXIgOiBBZGFwdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlIDogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2UgIDogTnV4ZW9TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZSA6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBDb25mU2VydmljZSA6IEFwcENvbmZpZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJub21lbnQsXHJcbiAgICBwcml2YXRlIGRvY3VtZW50U2NhblNlcnZpY2UgOiBEb2N1bWVudFNjYW5TZXJ2aWNlKSB7IFxyXG4gICAgICB0aGlzLm15RW52aXJvbm1lbnQgPSB0aGlzLmVudmlybm9tZW50XHJcbiAgICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYW5nU3Vic2NyaXB0aW9uPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pc0FyYWJpYy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5pc0FyYWJpYyA9IHJlcztcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlV2hlbkZpbmlzaE1vZGUgPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsZVR5cGUgPSB0aGlzLmRpYWxvZ01hbmdtZW50U2VydmljZS5maWxlVHlwZTtcclxuICAgIHRoaXMuc291cmNlID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2UuYWRkaW5nRnJvbTtcclxuXHJcbiAgICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmdldEZpbGVTY2hlbWFzKHRoaXMuZmlsZVR5cGUudHlwZSkuc3Vic2NyaWJlKHNjaGVtYXMgPT4ge1xyXG4gICAgICBzY2hlbWFzLm1hcChpdGVtID0+IHtcclxuICAgICAgICBpZihpdGVtLm5hbWUgPT09IFwiZ2VuZXJhbGRvY3VtZW50XCIpe1xyXG4gICAgICAgICAgdGhpcy51c2luZ0V4dHJhRmllbGRzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuaW5pdGlhdGZpbGVGb3JtKCk7XHJcbiAgICAgICAgICAvL2lmIHN0YXJ0aW5nIGZyb20gZmlsZW1uYWdlciB0aGVuIGkgaGF2ZSBmaXhlZCBmaWxlIHR5cGUgZm9yIGFsbCBhdHRhY2htZXRuIGFuZCBzaW5nbGUgZHluYWltYyBmb3JtICB0eXBlXHJcbiAgICBpZiAodGhpcy5zb3VyY2UgPT09ICdmaWxlTWFuZ2VyJykge1xyXG4gICAgICBpZih0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IHsuLi50aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS51cGxvYWRlZEZpbGVzU3RhdHVzLnVwbG9hZGVkRmlsZXMuc2hpZnQoKX07XHJcbiAgICAgICAgICB0aGlzLnRlbXBvcmFyeUR5YW5taWNEYXRhID10aGlzLnNlbGVjdGVkRmlsZS5keW5hbWljRGF0YS5kYXRhO1xyXG4gICAgICAgICAgdGhpcy5maWxlRm9ybS5wYXRjaFZhbHVlKHRoaXMuc2VsZWN0ZWRGaWxlLnN0YXRpY0RhdGEpO1xyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnYWdlbmN5Q2F0ZWdvcnlDb2RlJ10pe1xyXG4gICAgICAgICAgICB0aGlzLmFnZW5jeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnkgOiB0aGlzLnNlbGVjdGVkRmlsZVsnc3RhdGljRGF0YSddWydhZ2VuY3lDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYodGhpcy5zZWxlY3RlZEZpbGVbJ3N0YXRpY0RhdGEnXVsnY291bnRyeUNhdGVnb3J5Q29kZSddKXtcclxuICAgICAgICAgICAgdGhpcy5jb3VudHJ5TmFtZUZpbHRlciA9IHtcclxuICAgICAgICAgICAgICBjYXRlZ29yeSA6IHRoaXMuc2VsZWN0ZWRGaWxlWydzdGF0aWNEYXRhJ11bJ2NvdW50cnlDYXRlZ29yeUNvZGUnXVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5vcGVuU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93UmVuZGVyZXIgPSB0cnVlO1xyXG4gICAgICAgIH0sIDMwMDApO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNGb3JtID0gdGhpcy5kaWFsb2dNYW5nbWVudFNlcnZpY2Uuc3RvcmVkRHluYW1pY0Zvcm07XHJcbiAgICAgICAgICB0aGlzLnNob3dSZW5kZXJlciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm9wZW5TdWJzY3JpcHRpb25zKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy51cGxvYWRTdGFydFN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS51cGxvYWRTdGFydC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRJblByb2dyZXNzID0gcmVzO1xyXG4gICAgfSlcclxuICAgIHRoaXMuZmlsZUNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5maWxlQ2hhbmdlLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIC8vY29uc29sZS5sb2coZXZlbnQpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5maWxlID0gZXZlbnQ7XHJcbiAgICAgIGxldCBwYXlMb2FkID0gdGhpcy5jb25zdHJ1Y3RQYXlMb2FkKHRoaXMuc2VsZWN0ZWRGaWxlKTtcclxuICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5jcmVhdGVGaWxlKHBheUxvYWQsIHRoaXMuZmlsZU1hbmdlclNlcnZpY2Uuc2VsZWN0ZWRGb2xkZXJJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgaWYocmVzWydzdGF0dXMnXSAmJiByZXNbJ3N0YXR1cyddID09PSAnZmFpbGVkJyl7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5zY2FuQ3JlYXRpb25GYWlsZWQgPSB0cnVlO1xyXG4gICAgICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InICwgJ1RPQVNURVIuRVJST1InICwgJ1RPQVNURVIuVVBMT0FEX0VSUk9SJyk7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5vblJlZnJlc2hpbmdGaWxlTWFuZ2VyLm5leHQoKTtcclxuICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5GSUxFX0NSRUFURURfU1VDQ0VcIilcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRTY2FuU2VydmljZS5zdG9yZWRGaWxlID0ge307XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5yZXNldFN0YXR1cygpO1xyXG4gICAgICAgICAgdGhpcy5yZW1vdmVTdWJzY3JpcHRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG4gICAgfSlcclxuXHJcbiAgICAgdGhpcy5zY2FubmVyVXBsb2FkQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjYW5uZXJVcGxvYWRCdXR0b24nKTtcclxuICB9XHJcbiAgXHJcbiAgaW5pdGlhdGZpbGVGb3JtKCl7XHJcbiAgICBpZih0aGlzLnVzaW5nRXh0cmFGaWVsZHMpe1xyXG4gICAgICB0aGlzLmZpbGVGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgICAgdGl0bGUgOiBbJycgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uIDogWycnXSxcclxuICAgICAgICBzdWJqZWN0IDogWycnICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBkb2N1bWVudE51bWJlciA6IFsnJ10sXHJcbiAgICAgICAgZ2RvY3VtZW50RGF0ZSA6IFtudWxsICwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgICBzZWNyZWN5TGV2ZWwgOiBbbnVsbF0sXHJcbiAgICAgICAgaW1wb3J0YW5jZUxldmVsOltudWxsXSxcclxuICAgICAgICBkZXBhcnRtZW50Q29kZTpbJyddLFxyXG4gICAgICAgIGFnZW5jeUNhdGVnb3J5Q29kZTpbbnVsbF0sXHJcbiAgICAgICAgYWdlbmN5TmFtZTpbbnVsbF0sXHJcbiAgICAgICAgY291bnRyeUNhdGVnb3J5Q29kZTpbbnVsbF0sXHJcbiAgICAgICAgY291bnRyeU5hbWU6W251bGxdLFxyXG4gICAgICAgIHJlbWFya3M6WycnXVxyXG4gICAgICB9KVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgICB0aXRsZSA6IFsnJyAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgICAgZGVzY3JpcHRpb24gOiBbJyddXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLnN0YXRpY0Zvcm1GaWVsZHMgPSB0aGlzLmFwcENvbmZTZXJ2aWNlLm15Q29uZmlndXJhdGlvbi5zdGF0aWNGb3JtRmllbGRzO1xyXG4gICAgaWYodGhpcy5maWxlRm9ybVN1YnNjcmlwdGlvbil7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMuZmlsZUZvcm0uZ2V0KCdkZXBhcnRtZW50Q29kZScpKXtcclxuICAgICAgdGhpcy5maWxlRm9ybS5nZXQoJ2RlcGFydG1lbnRDb2RlJykuc2V0VmFsdWUodGhpcy51c2VyU2VydmljZS5nZXRVc2VyRGVwYXJ0bWVudEZyb21QYXRoKHRoaXMuZGF0YS5wYXRoKSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb3BlblN1YnNjcmlwdGlvbnMoKXtcclxuICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZS5zdGF0aWNEYXRhID0gZGF0YTtcclxuICAgIH0pXHJcblxyXG4gICAgaWYodGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpKXtcclxuICAgICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPSAgdGhpcy5maWxlRm9ybS5nZXQoJ2FnZW5jeUNhdGVnb3J5Q29kZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICB0aGlzLmZpbGVGb3JtLmdldCgnYWdlbmN5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLmFnZW5jeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICAgICAgY2F0ZWdvcnkgOiByZXNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLmZpbGVGb3JtLmdldCgnY291bnRyeUNhdGVnb3J5Q29kZScpKXtcclxuICAgICAgdGhpcy5jb3VudHJ5Q2F0ZWdDb2RlU3Vic2NyaXB0aW9uID0gIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5Q2F0ZWdvcnlDb2RlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsZUZvcm0uZ2V0KCdjb3VudHJ5TmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIHRoaXMuY291bnRyeU5hbWVGaWx0ZXIgPSB7XHJcbiAgICAgICAgICBjYXRlZ29yeSA6IHJlc1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgb25VcGxvYWRpbmcoZXZlbnQpIHtcclxuICAgIHRoaXMudXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnVwbG9hZGVkRmlsZXNTdGF0dXMudXBsb2FkSW5Qcm9ncmVzcyA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gb25TY2FubmVyU3VjY2VzcyhldmVudCkge1xyXG4gIC8vICAgLy9jb25zb2xlLmxvZyhldmVudCk7XHJcbiAgLy8gICB0aGlzLnNlbGVjdGVkRmlsZS5maWxlID0gZXZlbnQ7XHJcbiAgLy8gICBsZXQgcGF5TG9hZCA9IHRoaXMuY29uc3RydWN0UGF5TG9hZCh0aGlzLnNlbGVjdGVkRmlsZSk7XHJcbiAgLy8gICB0aGlzLmZpbGVNYW5nZXJTZXJ2aWNlLmNyZWF0ZUZpbGUocGF5TG9hZCwgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5zZWxlY3RlZEZvbGRlcklkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAvLyAgICAgdGhpcy5maWxlTWFuZ2VyU2VydmljZS5vblJlZnJlc2hpbmdGaWxlTWFuZ2VyLm5leHQoKTtcclxuICAvLyAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLkZJTEVfQ1JFQVRFRF9TVUNDRVwiKVxyXG4gIC8vICAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSA9IHt9O1xyXG4gIC8vICAgICB0aGlzLnVwbG9hZE1hbmdtZW50U2VydmljZS5yZXNldFN0YXR1cygpO1xyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIG9uZHluYW1pY0Zvcm1DaGFuZ2UoZHluYW1pY0RhdGEpIHtcclxuICAgIGlmIChkeW5hbWljRGF0YS5kYXRhKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGR5bmFtaWNEYXRhLmRhdGEpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhID0geyAuLi5keW5hbWljRGF0YSB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRvY3VtZW50U2NhblNlcnZpY2Uuc3RvcmVkRmlsZSA9IHt9O1xyXG4gICAgdGhpcy5yZW1vdmVTdWJzY3JpcHRpb24oKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcclxuXHJcbiAgfVxyXG5cclxuICBtaW5pbWl6RGlhbG9nKCkge1xyXG4gICAgdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLm9uTWluaW1pemluZy5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLnB1c2goey4uLnRoaXMuc2VsZWN0ZWRGaWxlfSlcclxuICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVN1YnNjcmlwdGlvbigpe1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBsb2FkU3RhcnRTdWJzY3JpcHRpb24gPyB0aGlzLnVwbG9hZFN0YXJ0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgICAgdGhpcy5maWxlQ2hhbmdlU3Vic2NyaXB0aW9uID8gdGhpcy5maWxlQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiAnJztcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRBZGRpbmdQcm9wZXJ0aWVzKCkge1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UuYWRkaW5nUHJvcGVydGllc01vZGUgPSB0cnVlO1xyXG4gIH1cclxuXHJcblxyXG4gIGNyZWF0ZURvY3VtZW50KCkge1xyXG4gICAgdGhpcy5kb2N1bWVudFNjYW5TZXJ2aWNlLm9uTWluaW1pemluZy5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy51cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRlZEZpbGVzLnB1c2goey4uLnRoaXMuc2VsZWN0ZWRGaWxlfSk7XHJcbiAgICB0aGlzLnNjYW5uZXJVcGxvYWRCdXR0b24uY2xpY2soKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0UGF5TG9hZChmaWxlKSB7XHJcbiAgICBsZXQgcHJvcHMgPSB0aGlzLmR5bmFtaWNGb3JtU2VydmljZS5jb25zdHJ1Y3REeW5hbWljRm9ybVBheWxvYWQoZmlsZS5keW5hbWljRGF0YS5kYXRhLCBmaWxlLmR5bmFtaWNGb3JtKTtcclxuICAgIGxldCBzdGF0aWNGb3JtRGF0YSA9IHRoaXMubWFwcGluZ1N0YXRpY0RhdGEoZmlsZS5zdGF0aWNEYXRhKVxyXG5cclxuICAgIGxldCBwYXJhbSA9IHtcclxuICAgICAgXCJkb2N1bWVudFwiOiB7XHJcbiAgICAgICAgXCJ0eXBlXCI6IHRoaXMuZmlsZVR5cGUudHlwZSxcclxuICAgICAgICBcIm5hbWVcIjogZmlsZS5zdGF0aWNEYXRhLnRpdGxlLFxyXG4gICAgICAgIFwicHJvcGVydGllc1wiOiB7XHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIC4uLnN0YXRpY0Zvcm1EYXRhLFxyXG4gICAgICAgICAgXCJmaWxlOmNvbnRlbnRcIjoge1xyXG4gICAgICAgICAgICBcInVwbG9hZC1iYXRjaFwiOiBmaWxlLmZpbGUuYmxvYlsndXBsb2FkLWJhdGNoJ10sXHJcbiAgICAgICAgICAgIFwidXBsb2FkLWZpbGVJZFwiOiBmaWxlLmZpbGUuYmxvYlsndXBsb2FkLWZpbGVJZCddXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlKSB7XHJcbiAgICAgIHBhcmFtW1wiZG9jdW1lbnRUeXBlQ29kZVwiXSA9IGZpbGUuZmlsZVR5cGUuZG9jdW1lbnRDb2RlXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge3BhcmFtcyA6IHBhcmFtICwgb3JpZ2luRmlsZSA6IGZpbGV9O1xyXG4gIH1cclxuXHJcbiAgbWFwcGluZ1N0YXRpY0RhdGEoZGF0YSl7XHJcbiAgICBpZihkYXRhLmdkb2N1bWVudERhdGUgJiYgZGF0YS5nZG9jdW1lbnREYXRlICE9PSBudWxsKXtcclxuICAgICAgbW9tZW50LmxvY2FsZSgnZW4nKTtcclxuICAgICAgZGF0YVsnaGRvY3VtZW50RGF0ZSddID0gdGhpcy5kYXRlSGVscGVyU2VydmljZS5ncmVnb3JpYW5Ub0hpanJpKGRhdGEuZ2RvY3VtZW50RGF0ZSwnaVlZWVktaU1NLWlERCcpO1xyXG4gICAgICBkYXRhLmdkb2N1bWVudERhdGUgPSAobW9tZW50KGRhdGEuZ2RvY3VtZW50RGF0ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFQwMDowMDowMC4wMDBcIikgKyBcIlpcIilcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuYWRhcHRPdXQoZGF0YSAsIHRoaXMuc3RhdGljRm9ybUZpZWxkcylcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdER5bmFtaWNGb3JtUGF5bG9hZChmaWxlKSB7XHJcbiAgICBsZXQgdXBkYXRlZER5bmFtaWNWYWx1ZXMgPSB7fVxyXG4gICAgT2JqZWN0LmtleXMoZmlsZT8uZHluYW1pY0RhdGE/LmRhdGEpLm1hcChrZXkgPT4ge1xyXG4gICAgICBsZXQgdXBkYXRlZEtleSA9IGtleS5yZXBsYWNlKCc6JywgJycpO1xyXG4gICAgICBsZXQgcHJlZml4ID0gZmlsZS5keW5hbWljRm9ybS5wcmVmaXhbdXBkYXRlZEtleV07XHJcbiAgICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgICAvLyBjaGVjayBpZiBjb21wb25lbnQgaXMgdXNlciBzZWxlY3RvciB0byBtYXAgaXRzIGRhdGEgZnJvbSBvYmplY3QgdG8gdXNlcm5hbWUgb3IgaWQgb25seSBcclxuICAgICAgICBpZihmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XSAmJiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gJiYgZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3VzZXJTZWxlY3RvciddID09PSB0cnVlKXtcclxuICAgICAgICAgICB1cGRhdGVkRHluYW1pY1ZhbHVlc1twcmVmaXggKyAnOicgKyB1cGRhdGVkS2V5XSA9IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydpZCddID8gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gOiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsncHJvcGVydGllcyddWyd1c2VybmFtZSddO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3ByZWZpeCArICc6JyArIHVwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1cclxuICAgICAgICB9XHJcbiAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZihmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndXNlclNlbGVjdG9yJ10gJiYgZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3VzZXJTZWxlY3RvciddID09PSB0cnVlKXtcclxuICAgICAgICAgICB1cGRhdGVkRHluYW1pY1ZhbHVlc1t1cGRhdGVkS2V5XSA9IGZpbGUuZHluYW1pY0RhdGEuZGF0YVtrZXldWyd2YWx1ZSddWydpZCddID8gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1bJ3ZhbHVlJ11bJ2lkJ10gOiBmaWxlLmR5bmFtaWNEYXRhLmRhdGFba2V5XVsndmFsdWUnXVsncHJvcGVydGllcyddWyd1c2VybmFtZSddO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgIHVwZGF0ZWREeW5hbWljVmFsdWVzW3VwZGF0ZWRLZXldID0gZmlsZS5keW5hbWljRGF0YS5kYXRhW2tleV1cclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfSlcclxuICAgIHJldHVybiB1cGRhdGVkRHluYW1pY1ZhbHVlcztcclxuICB9XHJcblxyXG4gIGNyZWF0ZVdoZW5GaW5pc2goKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgY2hhbmdUYWJUbyh0YWJOYW1lKSB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYk5hbWU7XHJcbiAgfVxyXG4gIGNoZWNrVmFsaWRhdGlvbigpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCl7XHJcbiAgICB0aGlzLmxhbmdTdWJzY3JpcHRpb24gPyB0aGlzLmxhbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSA6ICcnO1xyXG4gICAgdGhpcy5hZ2VuY3lDYXRlZ0NvZGVTdWJzY3JpcHRpb24gPyB0aGlzLmFnZW5jeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbiA/IHRoaXMuY291bnRyeUNhdGVnQ29kZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpIDogbnVsbDtcclxuICAgIHRoaXMuZmlsZUZvcm1TdWJzY3JpcHRpb24gPyB0aGlzLmZpbGVGb3JtU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkgOiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cInNjYW5uZXItbW9kYWwtYm9keSByZWxhdGl2ZSBoLWZ1bGxcIj5cclxuICAgIDwhLS0gIC0tPlxyXG4gICAgPCEtLSB0YWJzIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwic2Nhbm5lci10YWJzIGQtZmxleCBqdXN0aWZ5LWFyb3VuZCBpdGVtcy1jZW50ZXIgYm9yZGVyLWItMiBib3JkZXItZ3JheS0yMDAgbWItNSB0ZXh0LWdyYXktOTAwIHRleHQtbGdcIlxyXG4gICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJzY2FubmVyLXNpbmdsZS10YWIgY3Vyc29yLXBvaW50ZXIgdy0xLzIgdGV4dC1jZW50ZXIgcHktMiBib3JkZXItZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdUYWJUbygnc2NhbicpXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZm9udC1ib2xkIGJvcmRlci1iLTQnOiBhY3RpdmVUYWIgPT09ICdzY2FuJyB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7XCJDUkVBVEUuU0NBTlwiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwic2Nhbm5lci1zaW5nbGUtdGFiIGN1cnNvci1wb2ludGVyIHctMS8yIHRleHQtY2VudGVyIHB5LTIgYm9yZGVyLWdyYXktOTAwIGhvdmVyOmJnLWdyYXktMTAwXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nVGFiVG8oJ2Zvcm0nKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZvbnQtYm9sZCBib3JkZXItYi00JzogYWN0aXZlVGFiID09PSAnZm9ybScgfVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIHt7XCJDUkVBVEUuREVUQUlMU1wiIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYnMtYm9keS13cmFwcGVyXCI+XHJcbiAgICAgICAgPCEtLSB1cGxvYWRlciBpbmRpY2F0b3IgbG9hZGluZyAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLWxvYWRlciBteC0yXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJ1cGxvYWRNYW5nbWVudFNlcnZpY2UudXBsb2FkZWRGaWxlc1N0YXR1cy51cGxvYWRJblByb2dyZXNzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIHNjYW5uZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiIFtuZ0NsYXNzXT1cInsgJ2Qtbm9uZSc6IGFjdGl2ZVRhYiA9PT0gJ2Zvcm0nIH1cIj5cclxuICAgICAgICAgICAgPGFwcC1kb2N1bWVudC1zY2FuXHJcbiAgICAgICAgICAgICAgICBbaGlkZVVwbG9hZEJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFt1c2VTdG9yZWRGaWxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICA+PC9hcHAtZG9jdW1lbnQtc2Nhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBmb3JtcyBhbmQgcHJvcGVydGllcyAgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm1zLXNlY3Rpb25cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdkLW5vbmUnOiBhY3RpdmVUYWIgPT09ICdzY2FuJyB9XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTIvM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuRklMRV9UWVBFXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIHRleHQtZ3JheS05MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNBcmFiaWMgPyAgZmlsZVR5cGUuYXJhYmljVGV4dCA6IGZpbGVUeXBlLmVuZ2xpc2hUZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWZpZWxkcyBtdC0zXCIgU2V0UnRsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsZUZvcm1cIiAqbmdJZj1cImZpbGVGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuVElUTEVcIiB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3sgJ0NSRUFURS5USVRMRScgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuREVTQ1JJUFRJT05cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5ERVNDUklQVElPTicgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tIG5ldyBzdGF0aXMgZm9ybSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzaW5nRXh0cmFGaWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlciBbZm9ybV09XCJmaWxlRm9ybVwiIFthZ2VuY3lOYW1lRmlsdGVyXT1cImFnZW5jeU5hbWVGaWx0ZXJcIiBbY291bnRyeU5hbWVGaWx0ZXJdPVwiY291bnRyeU5hbWVGaWx0ZXJcIj48L2FwcC1keW5hbWljLWZpZWxkcy1yZW5kZXJlcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9TVUJKRUNUXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdWJqZWN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDUkVBVEUuRE9DVU1FTlRfU1VCSkVDVCcgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdHlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBcIkNSRUFURS5ET0NVTUVOVF9OVU1CRVJcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpZWxkLXN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9jdW1lbnROdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIiB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NSRUFURS5ET0NVTUVOVF9OVU1CRVInIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJnZG9jdW1lbnREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJDUkVBVEUuRE9DVU1FTlRfREFURVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY3RzLWR5bmFtaWMtZm9ybS1oaWpyaS1kYXRlaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLlNDUkVDWV9MRVZFTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZExhYmVsXT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZFZhbHVlXT1cIidpZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVk9DQUJVTEFSWS5TRUxFQ1RfSVRFTScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9jYWJ1bGFyeVR5cGVdPVwiJ1ZPQ19TZWNyZWN5TGV2ZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VjcmVjeUxldmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtZHluYW1pYy1mb3JtLXZvY2FidWxhcnktaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLklNUE9SVEFOQ0VfTEVWRUwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRMYWJlbF09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2FidWxhcnlUeXBlXT1cIidWT0NfSW1wb3J0YW5jZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbXBvcnRhbmNlTGV2ZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1keW5hbWljLWZvcm0tdm9jYWJ1bGFyeS1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLXN0eWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IFwiQ1JFQVRFLkRFUEFSVE1FTlRfQ09ERVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm0tZGVwYXJ0bWVudFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXBhcnRtZW50Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIncGxlYXNlIHNlbGVjdCBkZXBhcnRtZW50J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcF9kZXBhcnRtZW50TmVzdGVkVHJlZV09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQUF9PU19EZXBhcnRtZW50cydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BwX2RlcGFydG1lbnRUcmVlXT1cIidQUF9PU19EZXBhcnRtZW50cydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUHJlZml4XT1cIidvc2RlcHQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVBhcmVudFByb3BlcnR5XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29zZGVwYXJ0bWVudF9wYXJlbnREZXBhcnRtZW50Q29kZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUN1c3RvbUFkZEVkaXRBY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWR5bmFtaWMtZm9ybS1kZXBhcnRtZW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpbmdsZS1maWVsZCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC10cmFuc2xhdGVkLXZvY2FidWxhcnktc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ1JFQVRFLkFHRU5DWV9DQVRFR09SWV9DT0RFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmJCaW5kTGFiZWxdPVwiJ2xhYmVsX2FyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmdCaW5kTGFiZWxdPVwiJ2xhYmVsX2VuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kVmFsdWVdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWT0NBQlVMQVJZLlNFTEVDVF9JVEVNJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWdlbmN5Q2F0ZWdvcnlDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQWdlbmN5Q2F0ZWdvcnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUZpbHRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuQUdFTkNZX05BTUUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZ2VuY3lOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvY2J1bGFyeUlkXT1cIidWT0NfQWdlbmN5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwiYWdlbmN5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VGaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDUkVBVEUuQ09VTlRSWV9DQVRFR09SWV9DT0RFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcmJCaW5kTGFiZWxdPVwiJ2xhYmVsX2FyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmdCaW5kTGFiZWxdPVwiJ2xhYmVsX2VuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kVmFsdWVdPVwiJ2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWT0NBQlVMQVJZLlNFTEVDVF9JVEVNJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvc2VPblNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGVTZWxlY3RlZEl0ZW1zXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY291bnRyeUNhdGVnb3J5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2NidWxhcnlJZF09XCInVk9DX0NvdW50cnlDYXRlZ29yeSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlRmlsdGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaW5nbGUtZmllbGQgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdHJhbnNsYXRlZC12b2NhYnVsYXJ5LXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NSRUFURS5DT1VOVFJZX05BTUUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FyYkJpbmRMYWJlbF09XCInbGFiZWxfYXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZ0JpbmRMYWJlbF09XCInbGFiZWxfZW4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRWYWx1ZV09XCInaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZPQ0FCVUxBUlkuU0VMRUNUX0lURU0nIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZVNlbGVjdGVkSXRlbXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2b2NidWxhcnlJZF09XCInVk9DX0NvdW50cnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJjb3VudHJ5TmFtZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VGaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXRyYW5zbGF0ZWQtdm9jYWJ1bGFyeS1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2luZ2xlLWZpZWxkIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtc3R5bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXCJDUkVBVEUuUkVNQVJLU1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmllbGQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZW1hcmtzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCIge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDUkVBVEUuUkVNQVJLUycgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIlwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkeW5hbWljLXBhcnQgLW14LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRmlsZS5keW5hbWljRm9ybSAmJiBzaG93UmVuZGVyZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1keW5hbWljLWZvcm1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cInNlbGVjdGVkRmlsZS5keW5hbWljRm9ybVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJ0ZW1wb3JhcnlEeWFubWljRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uZHluYW1pY0Zvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2FwcC1keW5hbWljLWZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gYWN0aW9ucyBhbmQgYnV0dG9ucyAgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgZC1mbGV4IGp1c3RpZnktYmV0d2VlbiBzY2FubmVyLWFjdGlvbnMtd3JhcHBlciBhYnNvbHV0ZSBib3R0b20tMFwiXHJcbiAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbmNlbGF0aW9uLWJ1dHRvblwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBcIkJVVFRPTlMuQ0FOQ0VMXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYW5jZWxhdGlvbi1idXR0b24gbXgtMlwiIChjbGljayk9XCJtaW5pbWl6RGlhbG9nKClcIj5cclxuICAgICAgICAgICAgICAgIHt7IFwiQlVUVE9OUy5NSU5JTUlaRURcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3JlYXRpb25GYWlsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FubmVyVXBsb2FkQnV0dG9uLmRpc2FibGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlRG9jdW1lbnQoKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNyZWF0ZURvY3VtZW50KClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNjYW5uZXJVcGxvYWRCdXR0b24uZGlzYWJsZWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWRGaWxlLmR5bmFtaWNEYXRhLnZhbGlkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAnb3BhY2l0eS0zMCBjdXJzb3Itbm90LWFsbG93ZWQnOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FubmVyVXBsb2FkQnV0dG9uLmRpc2FibGVkIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZEZpbGUuZHluYW1pY0RhdGEudmFsaWQgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUZvcm0uaW52YWxpZFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN1Ym1pc3Npb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgdXBsb2FkTWFuZ21lbnRTZXJ2aWNlLnNjYW5DcmVhdGlvbkZhaWxlZCA/ICAoXCJCVVRUT05TLlRSWV9BR0FJTlwiIHwgdHJhbnNsYXRlKSA6IChcIkJVVFRPTlMuQ1JFQVRFXCIgfCB0cmFuc2xhdGUpIH19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -3,16 +3,16 @@ import { FormControl, Validators } from '@angular/forms';
3
3
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
4
4
  import { combineLatest, of, Subject } from 'rxjs';
5
5
  import { switchMap, takeUntil } from 'rxjs/operators';
6
- import { UserPreferenceValues } from '../../../../Core/services/user/user-preferences.service';
6
+ import { UserPreferenceValues } from '../../../../core/services/user/user-preferences.service';
7
7
  import { ConfirmationDialogComponent } from '../../../confirmation-dialog/confirmation-dialog/confirmation-dialog.component';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/material/dialog";
10
10
  import * as i2 from "@angular/forms";
11
11
  import * as i3 from "../../../../shared-services/shared-docs.service";
12
12
  import * as i4 from "../../../custom-toastr/services/custom-toastr.service";
13
- import * as i5 from "../../../../Core/services/translation/translation.service";
14
- import * as i6 from "../../../../Core/services/nuxeo/nuxeo.service";
15
- import * as i7 from "../../../../Core/services/user/user-preferences.service";
13
+ import * as i5 from "../../../../core/services/translation/translation.service";
14
+ import * as i6 from "../../../../core/services/nuxeo/nuxeo.service";
15
+ import * as i7 from "../../../../core/services/user/user-preferences.service";
16
16
  import * as i8 from "../../../select-users-by-department/select-users-by-departments/select-users-by-departments.component";
17
17
  import * as i9 from "@ng-select/ng-select";
18
18
  import * as i10 from "@angular/material/icon";
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
291
291
  type: Inject,
292
292
  args: [MAT_DIALOG_DATA]
293
293
  }] }, { type: i1.MatDialogRef }, { type: i1.MatDialog }, { type: i2.FormBuilder }, { type: i3.SharedDocsService }, { type: i4.CustomToastrService }, { type: i5.TranslationService }, { type: i6.NuxeoService }, { type: i7.UserPreferencesService }]; } });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaGFyZS1kaWFsb2cvc2hhcmUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaGFyZS1kaWFsb2cvc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQWUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQTJCLE1BQU0sMEJBQTBCLENBQUM7QUFFcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3RELE9BQU8sRUFBMEIsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2SCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVU3SCxNQUFNLE9BQU8sb0JBQW9CO0lBd0IvQixZQUE0QyxJQUFJLEVBQ3RDLFNBQTZDLEVBQzdDLE1BQWtCLEVBQ2xCLEVBQWUsRUFDZixNQUF5QixFQUN6QixhQUFrQyxFQUNsQyxnQkFBb0MsRUFDcEMsWUFBMEIsRUFD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QUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzswQkF5QmMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vQ29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSwgVXNlclByZWZlcmVuY2VWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9Db3JlL3NlcnZpY2VzL3VzZXIvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hhcmVkRG9jc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvc2hhcmVkLWRvY3Muc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2hhcmUtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaGFyZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtVHlwZTogYW55O1xyXG4gIHNoYXJlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHNlbGVjdGVkVXNlcnMgPSBbXTtcclxuICBzdWJzY3JpcHRpb25zJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBteVNoYXJlZGF0YTogYW55ID0gW107XHJcbiAgc2hhcmVkTGlzdCA9IFtdO1xyXG4gIHNoYXJlZExpc3RVc2VyID0gW107XHJcbiAgZGVwVXNlcnMgPSBbXTtcclxuICBhbGxvd1VzZXJzVG9TaGFyZSA9IFtdO1xyXG4gIGZvcmJpZGRlblVzZXJzID0gW107XHJcbiAgaXNTaGFyZWRCZWZvcmUgPSBbXTtcclxuICBjdXJyZW50VXNlcjogYW55O1xyXG4gIHNhbWVDdXJyZW50VXNlciA9IGZhbHNlO1xyXG4gIGRpc2FibGVkID0gdHJ1ZTtcclxuICByaWdodHMgPSBbXTtcclxuICBjb3BpZWQgPSBmYWxzZTtcclxuICBzaGFyZWFibGVVcmwgPSAnJztcclxuICB0eXBlVG9Vcmw6IGFueTtcclxuICBpc0FyYWJpYyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgbG9jYWxlO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSxcclxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2hhcmVEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBkaWFsb2cgOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgc2hhcmVkOiBTaGFyZWREb2NzU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9zdGVyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlKSB7XHJcbiAgICBpZiAodGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UpIHtcclxuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2VcclxuICAgICAgICAuc2VsZWN0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xyXG4gICAgICAgICAgKHRoaXMubG9jYWxlID09PSAnZW4nKSA/IHRoaXMuaXNBcmFiaWMgPSBmYWxzZSA6IHRoaXMuaXNBcmFiaWMgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yaWdodHMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogKHRoaXMubG9jYWxlID09PSAnZW4nKSA/IFwiUmVhZFwiIDogXCLZgtix2KfYodipXCIsXHJcbiAgICAgICAgdmFsdWU6IFwiUmVhZFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogKHRoaXMubG9jYWxlID09PSAnZW4nKSA/IFwiUmVhZFdyaXRlXCIgOiBcItmC2LHYp9ih2Kkg2Ygg2KrYudiv2YrZhFwiLFxyXG4gICAgICAgIHZhbHVlOiBcIlJlYWRXcml0ZVwiXHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdGhpcy5udXhlb1NlcnZpY2U/Lm51eGVvQ2xpZW50Py51c2VyPy5wcm9wZXJ0aWVzLnVzZXJuYW1lO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBkYXRhLnNlbGVjdGVkSXRlbTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudHlwZSA9PT0gXCJGb2xkZXJcIiB8fCB0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudHlwZSA9PT0gXCJEbXNGb2xkZXJcIikge1xyXG4gICAgICB0aGlzLnNoYXJlYWJsZVVybCA9IGAke3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L2Rtcy9maWxlcz9pZD0ke3RoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS51aWR9YFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1UeXBlID0gdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddWydtaW1lLXR5cGUnXTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZS5pbmNsdWRlcygnaW1hZ2UnKSkge1xyXG4gICAgICAgIHRoaXMudHlwZVRvVXJsID0gJ2ltYWdlJ1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZS5pbmNsdWRlcygndmlkZW8nKSkge1xyXG4gICAgICAgIHRoaXMudHlwZVRvVXJsID0gJ3ZpZGVvJ1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZVRvVXJsID0gJ2ZpbGUnXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaGFyZWFibGVVcmwgPSBgJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9kbXMvc2hhcmUodmlld2VyOnZpZXcvJHt0aGlzLnR5cGVUb1VybH0vJHt0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudWlkfSk/bG9jYXRpb249L3NoYXJlJmZvcm1UeXBlPSR7dGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnR5cGV9YFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNoYXJlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkZXBBbmRpdHNVc2VyczogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgcmlnaHRzOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNoYXJlRm9ybS5nZXQoJ2RlcEFuZGl0c1VzZXJzJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzPy51c2Vycykge1xyXG4gICAgICAgIChKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkVXNlcnMpICE9IEpTT04uc3RyaW5naWZ5KHJlcy51c2VycykpXHJcbiAgICAgICAgICA/IHRoaXMuc2V0VXNlcihyZXMudXNlcnMpXHJcbiAgICAgICAgICA6IG51bGxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuc2hhcmVGb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmdldE15U2hhcmUoKTtcclxuICB9XHJcbiAgcmVtb3ZlRnJvbUZvcmJpZGRlbkFycihldmVudCkge1xyXG4gICAgKHRoaXMuZm9yYmlkZGVuVXNlcnMuaW5jbHVkZXMoZXZlbnQubGFiZWwpKSA/XHJcbiAgICAgIHRoaXMuZm9yYmlkZGVuVXNlcnMuc3BsaWNlKHRoaXMuZm9yYmlkZGVuVXNlcnMuaW5kZXhPZihldmVudC5sYWJlbCksIDEpIDogJyc7XHJcbiAgfVxyXG4gIGNvcHkoKSB7XHJcbiAgICB0aGlzLmNvcGllZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jb3BpZWQgPSBmYWxzZTtcclxuICAgIH0sIDIwMDApXHJcbiAgfVxyXG4gIHNldFVzZXIodXNlcnMpIHtcclxuICAgIHRoaXMuaXNTaGFyZWRCZWZvcmUgPSBbXTtcclxuICAgIHRoaXMuc2FtZUN1cnJlbnRVc2VyID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSB1c2VycztcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2Vycy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LnByb3BlcnRpZXMudXNlcm5hbWUgPT09IHRoaXMuY3VycmVudFVzZXIpIHtcclxuICAgICAgICB0aGlzLnNhbWVDdXJyZW50VXNlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2hhcmVkTGlzdFVzZXIuaW5jbHVkZXMoZWxlbWVudC5wcm9wZXJ0aWVzLnVzZXJuYW1lKSkge1xyXG4gICAgICAgIHRoaXMuaXNTaGFyZWRCZWZvcmUucHVzaChlbGVtZW50LnByb3BlcnRpZXMuZnVsbE5hbWUpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRSaWdodChldmVudCkge1xyXG4gICAgKCF0aGlzLnNhbWVDdXJyZW50VXNlciAmJiAhdGhpcy5pc1NoYXJlZEJlZm9yZS5sZW5ndGggJiYgdGhpcy5zaGFyZUZvcm0uZ2V0KCdyaWdodHMnKS52YWx1ZSkgPyB0aGlzLmRpc2FibGVkID0gZmFsc2UgOiB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZDYW5WaWV3U2VjcmV0KCkge1xyXG4gICAgdGhpcy5mb3JiaWRkZW5Vc2VycyA9IFtdO1xyXG4gICAgbGV0IGFyciA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzLm1hcChlbGVtZW50ID0+IHtcclxuICAgICAgbGV0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGVsZW1lbnQucHJvcGVydGllcy51c2VybmFtZSxcclxuICAgICAgICBzZWNyZWN5TGV2ZWw6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS5wcm9wZXJ0aWVzLnNlY3JlY3lMZXZlbFxyXG4gICAgICB9XHJcbiAgICAgIGFyci5wdXNoKFxyXG4gICAgICAgIHRoaXMuc2hhcmVkLmNhblNlZVNlY3JldGRvY3MoY29udGV4dCkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHsgZWxlbWVudCwgLi4ucmVzIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgfSlcclxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGFycikucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHJlcy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgaWYgKCFlLmNhblZpZXdTZWNyZXRGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcmJpZGRlblVzZXJzLnB1c2goZS5lbGVtZW50LnByb3BlcnRpZXMuZnVsbE5hbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gb2YodGhpcy5mb3JiaWRkZW5Vc2VycylcclxuICAgICAgfSkpXHJcbiAgfVxyXG4gIGRvU2hhcmUodXNlcnMpIHtcclxuICAgIGxldCBjb250ZXh0ID0ge1xyXG4gICAgICB1c2VyczogdXNlcnMsXHJcbiAgICAgIG1vZGU6IHRoaXMuc2hhcmVGb3JtLmdldCgncmlnaHRzJykudmFsdWVcclxuICAgIH1cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQuY29uY2F0KFt0aGlzLnNoYXJlZC5zaGFyZURvY3VtZW50V2l0aFVzZXIoY29udGV4dCwgdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzKVxyXG4gICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5zaGFyZV9Eb2Nfc3VjY2Vzc1wiKTtcclxuICAgICAgdGhpcy5kZXBVc2VycyA9IFtdO1xyXG4gICAgICB0aGlzLnNoYXJlRm9ybS5yZXNldCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZXRNeVNoYXJlKCk7XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsICdUT0FTVEVSLnNoYXJlX0RvY19mYWlsJyk7XHJcbiAgICB9KVxyXG4gICAgXSlcclxuICB9XHJcblxyXG4gIHNoYXJlKCkge1xyXG4gICAgaWYgKHRoaXMuc2hhcmVGb3JtLmludmFsaWQpIHtcclxuICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJzaGFyZS5zZWxlY3RfdXNlcl90b19zaGFyZVwiKSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFsbG93VXNlcnNUb1NoYXJlID0gW107XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkucHJvcGVydGllcy5zZWNyZWN5TGV2ZWxcclxuICAgICAgICAmJiB0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkucHJvcGVydGllcy5zZWNyZWN5TGV2ZWwgIT0gXCJOb3JtYWxcIikge1xyXG4gICAgICAgIHRoaXMuY2hlY2tJZkNhblZpZXdTZWNyZXQoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIGlmICghcmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93VXNlcnNUb1NoYXJlLnB1c2goZWxlbWVudC5wcm9wZXJ0aWVzLnVzZXJuYW1lKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5kb1NoYXJlKHRoaXMuYWxsb3dVc2Vyc1RvU2hhcmUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dVc2Vyc1RvU2hhcmUucHVzaChlbGVtZW50LnByb3BlcnRpZXMudXNlcm5hbWUpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kb1NoYXJlKHRoaXMuYWxsb3dVc2Vyc1RvU2hhcmUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5EaWFsb2coZnVuY3Rpb25Ub0RvLCB1c2VybmFtZT8sIHNoYXJlZE1vZGU/KSB7XHJcbiAgICBsZXQgbWVzc2FnZTogYW55O1xyXG4gICAgKGZ1bmN0aW9uVG9EbyA9PT0gXCJSZW1fQUxMX3NoYXJlc1wiKSA/IG1lc3NhZ2UgPSBcImNvbmZpcm1EaWFsb2cuUmVtX0FsbF9zaGFyZXNcIlxyXG4gICAgICA6IG1lc3NhZ2UgPSBcImNvbmZpcm1EaWFsb2cuUmVtX2N1c3RvbV9zaGFyZVwiO1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCAsIHtcclxuICAgICAgd2lkdGg6ICc1MTBweCcsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImNvbmZpcm1EaWFsb2cuY29uZmlybVwiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UpLFxyXG4gICAgICAgICAgY29uZmlybUJ1dHRvbiA6IGBCVVRUT05TLlJlbW92ZWAsXHJcbiAgICAgICAgICBjYW5jZWxCdXR0b24gOiBcIkJVVFRPTlMuQ2FuY2VsXCJcclxuICAgICAgfSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgfSlcclxuICAgIC8vIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZnVzZUNvbmZpcm1hdGlvblNlcnZpY2Uub3BlbihcclxuICAgIC8vICAge1xyXG4gICAgLy8gICAgIGRpc21pc3NpYmxlOiB0cnVlLFxyXG4gICAgLy8gICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImNvbmZpcm1EaWFsb2cuY29uZmlybVwiKSxcclxuICAgIC8vICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtZXNzYWdlKSxcclxuICAgIC8vICAgICBhY3Rpb25zOiB7XHJcbiAgICAvLyAgICAgICBjb25maXJtOiB7XHJcbiAgICAvLyAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAvLyAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcIkJVVFRPTlMuUmVtb3ZlXCIpLFxyXG4gICAgLy8gICAgICAgICBjb2xvcjogXCJ3YXJuXCJcclxuICAgIC8vICAgICAgIH0sXHJcbiAgICAvLyAgICAgICBjYW5jZWw6IHtcclxuICAgIC8vICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgIC8vICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiQlVUVE9OUy5DYW5jZWxcIiksXHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyApO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIGlmIChmdW5jdGlvblRvRG8gPT09IFwiUmVtX0FMTF9zaGFyZXNcIikge1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJC5jb25jYXQoW3RoaXMuc2hhcmVkLnJlbW92ZUFsbFNoYXJlc2ZvckRvY3ModGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLlJtX0FsbF9TaGFyZXNfc3VjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICB0aGlzLmdldE15U2hhcmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCAnVE9BU1RFUi5SbV9BbGxfU2hhcmVzX2ZhaWwnKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgY29udGV4dCA9IHtcclxuICAgICAgICAgICAgdXNlcjogdXNlcm5hbWUsXHJcbiAgICAgICAgICAgIG1vZGU6IHNoYXJlZE1vZGVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQuY29uY2F0KFtcclxuICAgICAgICAgICAgdGhpcy5zaGFyZWQucmVtb3ZlQ3VzdG9tU2hhcmUoY29udGV4dCwgdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5SZW1fY3VzdG9tX3NoYXJlX3N1Y2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldE15U2hhcmUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCAnVE9BU1RFUi5SZW1fY3VzdG9tX3NoYXJlX2ZhaWwnKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE15U2hhcmUoKSB7XHJcbiAgICB0aGlzLnNoYXJlZExpc3RVc2VyID0gdGhpcy5zaGFyZWRMaXN0ID0gW107XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmNvbmNhdChbXHJcbiAgICAgIHRoaXMuc2hhcmVkLmdldFNoYXJlc0J5TWUodGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCwgdHJ1ZSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLnNoYXJlZExpc3QgPSByZXM7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hhcmVkTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNoYXJlZExpc3RVc2VyLnB1c2goZWxlbWVudC51c2VyLnByb3BlcnRpZXMudXNlcm5hbWUpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJzaGFyZUZvcm1cIiBjbGFzcz1cImgtZnVsbCBwLTUgb3ZlcmZsb3ctYXV0b1wiIFNldFJ0bD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGgtZnVsbFwiPlxyXG4gICAgPCEtLUZvcm0gU2VjdGlvbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1wZXJtc2lvbi13cmFwcGVyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LWxnXCI+XHJcbiAgICAgICAge3sgXCJzaGFyZS5zaGFyZURpYWxvZ1RpdGxlXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNSBzZWxlY3RvcnNXcmFwcGVyXCI+XHJcbiAgICAgICAgPGFwcC1zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudHNcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlcEFuZGl0c1VzZXJzXCJcclxuICAgICAgICAgIFthbGxvd011bHRpcGxlVXNlcnNdPSBcInRydWVcIlxyXG4gICAgICAgICAgW3VzZXJMYWJlbF09XCInc2hhcmUudXNlcnMnICB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICBbZGVwTGFiZWxdPVwiJ3NoYXJlLkRlcCcgIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIFtkaXNwbGF5XT1cIidjb2x1bW4nXCI+XHJcbiAgICAgICAgPC9hcHAtc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnRzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImZvcmJpZGRlblVzZXJzLmxlbmd0aFwiIGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHAgb2YgZm9yYmlkZGVuVXNlcnM7IGxldCBpIGFzIGluZGV4XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAge3twfX0mbmJzcDtcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICA8cCAqbmdJZj1cImZvcmJpZGRlblVzZXJzLmxlbmd0aCA9PSAxXCI+XHJcbiAgICAgICAgICAgIHt7IFwic2hhcmUuc2luZ2xlX2ZvcmJpZGRlblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgIDxwICpuZ0lmPVwiZm9yYmlkZGVuVXNlcnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICAgICAgICB7eyBcInNoYXJlLm11bHRpX2ZvcmJpZGRlblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzYW1lQ3VycmVudFVzZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgIHt7IFwic2hhcmUuc2hhcmVXaXRoTG9nZ2VkSW5Vc2VyXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNTaGFyZWRCZWZvcmUubGVuZ3RoXCIgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAge3sgXCJzaGFyZS5zaGFyZV9leGlzdHNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwIG9mIGlzU2hhcmVkQmVmb3JlXCI+XHJcbiAgICAgICAgICAgICAge3twfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIHt7IFwic2hhcmUuYmVmb3JlXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC00IHJpZ2h0c1NlbGVjdG9yXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZCBtYi0wXCI+XHJcbiAgICAgICAgICB7eyBcInNoYXJlLlJpZ2h0c1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxuZy1zZWxlY3QgXHJcbiAgICAgICAgICBbaXRlbXNdPVwicmlnaHRzXCIgXHJcbiAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXHJcbiAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3Blcm1pc3Npb24ucmlnaHRzUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJpZ2h0c1wiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInNldFJpZ2h0KCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaGFyZWRMaXN0Lmxlbmd0aFwiIGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIG1iLTBcIj5cclxuICAgICAgICAgICAge3sgXCJzaGFyZS5maWxlVXJsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgI2ZpbGVVcmxcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwic2hhcmVhYmxlVXJsXCJcclxuICAgICAgICAgICAgICBkaXNhYmxlZFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXBwZWFyYW5jZS1ub25lIGJsb2NrIHctZnVsbCAgYmctYWNjZW50LTEwMCB0ZXh0LWdyYXktNzAwIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZCBweS0yLjUgcHgtNCBcclxuICAgICAgICAgICAgICBsZWFkaW5nLXRpZ2h0IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpiZy13aGl0ZSBmb2N1czpib3JkZXItZ3JheS01MDBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWJzb2x1dGUgcHQtMi41IGJnLWFjY2VudC0xMDBcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXSA9IFwiJ0JVVFRPTlMuQ09QWScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihsb2NhbGUgPT09ICdlbicpICA/ICdyaWdodC0yJyA6ICdsZWZ0LTInXCJcclxuICAgICAgICAgICAgICBbY2RrQ29weVRvQ2xpcGJvYXJkXT1cImZpbGVVcmwudmFsdWVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb3B5KClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm1hdF9zb2xpZDpjb250ZW50X2NvcHlcIiBjbGFzcz1cImljb24tc2l6ZS02XCI+PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb3BpZWRcIiBjbGFzcz1cImZsZXggYWJzb2x1dGUganVzdGlmeS1hcm91bmQgdy0yNCAtbXQtMTAgYm9yZGVyIFxyXG4gICAgICAgICAgICBib3JkZXItcmVkLTcwMCBoLTcgcm91bmRlZCBiZy1ncmF5LTIwMFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihsb2NhbGUgPT09ICdlbicpICA/ICdyaWdodC0wJyA6ICdsZWZ0LTAnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyBoLTMganVzdGlmeS1jZW50ZXIgYmctZ3JheS0yMDAgdHJhbnNmb3JtIHJvdGF0ZS00NSBib3JkZXJcclxuICAgICAgICAgICAgICAgbXQtNSBib3JkZXJzLWNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhYnNvbHV0ZSBmb250LWV4dHJhbGlnaHRcIj57eyBcInNoYXJlLmNvcGllZFwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNoYXJlcyBTZWN0aW9uLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hhcmVkTGlzdC5sZW5ndGhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIGgtNyBib3JkZXItYi0yIGJvcmRlci1hY2NlbnQtMTAwIG10LTJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGRcIj5cclxuICAgICAgICAgIHt7IFwic2hhcmUuc2hhcmVzXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKnBlcm1pc3Npb249XCJ7bmFtZTogJ2NhblJlbW92ZVNoYXJlJywgZW50aXR5OiBzZWxlY3RlZEl0ZW0uZW50aXR5fVwiXHJcbiAgICAgICAgICBtYXRUb29sdGlwPVwie3snc2hhcmUuUm1fQWxsX3NoYXJlcycgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuRGlhbG9nKCdSZW1fQUxMX3NoYXJlcycpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOnRyYXNoJ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCIobG9jYWxlID09PSAnZW4nKSAgPyAnbXItMicgOiAnbWwtMidcIj48L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTIgb3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIG10LTIuNVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LTEvMiB0ZXh0LWJhc2UgZm9udC1ib2xkXCI+e3tcInNoYXJlLnNoYXJlV2l0aFwiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMS80IHRleHQtYmFzZSBmb250LWJvbGRcIj57e1wic2hhcmUuc2hhcmVfZGF0ZVwiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMS80IHRleHQtYmFzZSBmb250LWJvbGRcIj57e1wic2hhcmUucGVybWlzc2lvblwiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZCBvZiBzaGFyZWRMaXN0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtMi41XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHctMS8yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMCB3LTggaC04IHJvdW5kZWQtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxjdHMtYXZhdGFyIFt1c2VyXT1cIntcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBkLnVzZXIucHJvcGVydGllcz8uZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICBsYXN0TmFtZTogZC51c2VyLnByb3BlcnRpZXM/Lmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9jdHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIC1tdC0yIHB4LTIgYnJlYWstYWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2QudXNlci5mdWxsTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tkLnVzZXIucHJvcGVydGllcy5lbWFpbH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS80IG10LTEuNSBicmVhay1hbGwgcHgtMi41XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3tkLnNoYXJlZERhdGUgIHwgbG9jYWxpemVkRGF0ZTpcImRkIE1NTU0geXl5eVwiOihpc0FyYWJpYz8gJ2FyLUFSJyA6ICdlbi1VUycpfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzQgbXQtMS41IGJyZWFrLWFsbCBweC00XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3tcInJpZ2h0cy5cIiArIGQuc2hhcmVkTW9kZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEuNVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpwZXJtaXNzaW9uPVwie25hbWU6ICdjYW5SZW1vdmVTaGFyZScsIGVudGl0eTogc2VsZWN0ZWRJdGVtLmVudGl0eX1cIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7J3NoYXJlLlJtX2N1c3RvbV9zaGFyZScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRpYWxvZygnUmVtX2N1c3RvbV9zaGFyZScsZC51c2VyLnByb3BlcnRpZXMudXNlcm5hbWUsZC5zaGFyZWRNb2RlKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUNocm9tZUNsb3NlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihsb2NhbGUgPT09ICdlbicpICA/ICdtci0yLjUnIDogJ21sLTIuNSdcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tQnV0dG9ucyBTZWN0aW9uLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtMiBweS0xXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJzaGFyZSgpXCI+XHJcbiAgICAgICAge3sgXCJzaGFyZS5zaGFyZUJ1dHRvblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsYXRpb24tYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICB7eyBcIkJVVFRPTlMuQ2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaGFyZS1kaWFsb2cvc2hhcmUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1tYW5nZXIvY29tcG9uZW50cy9zaGFyZS1kaWFsb2cvc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQWUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQTJCLE1BQU0sMEJBQTBCLENBQUM7QUFFcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3RELE9BQU8sRUFBMEIsb0JBQW9CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2SCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVU3SCxNQUFNLE9BQU8sb0JBQW9CO0lBd0IvQixZQUE0QyxJQUFJLEVBQ3RDLFNBQTZDLEVBQzdDLE1BQWtCLEVBQ2xCLEVBQWUsRUFDZixNQUF5QixFQUN6QixhQUFrQyxFQUNsQyxnQkFBb0MsRUFDcEMsWUFBMEIsRUFD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QUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzswQkF5QmMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQ3VzdG9tVG9hc3RyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10b2FzdHIvc2VydmljZXMvY3VzdG9tLXRvYXN0ci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTnV4ZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9udXhlby9udXhlby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclByZWZlcmVuY2VzU2VydmljZSwgVXNlclByZWZlcmVuY2VWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3VzZXIvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29uZmlybWF0aW9uLWRpYWxvZy9jb25maXJtYXRpb24tZGlhbG9nL2NvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hhcmVkRG9jc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQtc2VydmljZXMvc2hhcmVkLWRvY3Muc2VydmljZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2hhcmUtZGlhbG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2hhcmUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zaGFyZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtVHlwZTogYW55O1xyXG4gIHNoYXJlRm9ybTogRm9ybUdyb3VwO1xyXG4gIHNlbGVjdGVkVXNlcnMgPSBbXTtcclxuICBzdWJzY3JpcHRpb25zJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICBteVNoYXJlZGF0YTogYW55ID0gW107XHJcbiAgc2hhcmVkTGlzdCA9IFtdO1xyXG4gIHNoYXJlZExpc3RVc2VyID0gW107XHJcbiAgZGVwVXNlcnMgPSBbXTtcclxuICBhbGxvd1VzZXJzVG9TaGFyZSA9IFtdO1xyXG4gIGZvcmJpZGRlblVzZXJzID0gW107XHJcbiAgaXNTaGFyZWRCZWZvcmUgPSBbXTtcclxuICBjdXJyZW50VXNlcjogYW55O1xyXG4gIHNhbWVDdXJyZW50VXNlciA9IGZhbHNlO1xyXG4gIGRpc2FibGVkID0gdHJ1ZTtcclxuICByaWdodHMgPSBbXTtcclxuICBjb3BpZWQgPSBmYWxzZTtcclxuICBzaGFyZWFibGVVcmwgPSAnJztcclxuICB0eXBlVG9Vcmw6IGFueTtcclxuICBpc0FyYWJpYyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgb25EZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgbG9jYWxlO1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YSxcclxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2hhcmVEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBkaWFsb2cgOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgc2hhcmVkOiBTaGFyZWREb2NzU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9zdGVyU2VydmljZTogQ3VzdG9tVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBudXhlb1NlcnZpY2U6IE51eGVvU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclByZWZlcmVuY2VTZXJ2aWNlOiBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlKSB7XHJcbiAgICBpZiAodGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2UpIHtcclxuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZVNlcnZpY2VcclxuICAgICAgICAuc2VsZWN0KFVzZXJQcmVmZXJlbmNlVmFsdWVzLkxvY2FsZSlcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChsb2NhbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xyXG4gICAgICAgICAgKHRoaXMubG9jYWxlID09PSAnZW4nKSA/IHRoaXMuaXNBcmFiaWMgPSBmYWxzZSA6IHRoaXMuaXNBcmFiaWMgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yaWdodHMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogKHRoaXMubG9jYWxlID09PSAnZW4nKSA/IFwiUmVhZFwiIDogXCLZgtix2KfYodipXCIsXHJcbiAgICAgICAgdmFsdWU6IFwiUmVhZFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogKHRoaXMubG9jYWxlID09PSAnZW4nKSA/IFwiUmVhZFdyaXRlXCIgOiBcItmC2LHYp9ih2Kkg2Ygg2KrYudiv2YrZhFwiLFxyXG4gICAgICAgIHZhbHVlOiBcIlJlYWRXcml0ZVwiXHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdGhpcy5udXhlb1NlcnZpY2U/Lm51eGVvQ2xpZW50Py51c2VyPy5wcm9wZXJ0aWVzLnVzZXJuYW1lO1xyXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBkYXRhLnNlbGVjdGVkSXRlbTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudHlwZSA9PT0gXCJGb2xkZXJcIiB8fCB0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudHlwZSA9PT0gXCJEbXNGb2xkZXJcIikge1xyXG4gICAgICB0aGlzLnNoYXJlYWJsZVVybCA9IGAke3dpbmRvdy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7d2luZG93LmxvY2F0aW9uLmhvc3R9L2Rtcy9maWxlcz9pZD0ke3RoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS51aWR9YFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1UeXBlID0gdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnByb3BlcnRpZXNbJ2ZpbGU6Y29udGVudCddWydtaW1lLXR5cGUnXTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZS5pbmNsdWRlcygnaW1hZ2UnKSkge1xyXG4gICAgICAgIHRoaXMudHlwZVRvVXJsID0gJ2ltYWdlJ1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtVHlwZS5pbmNsdWRlcygndmlkZW8nKSkge1xyXG4gICAgICAgIHRoaXMudHlwZVRvVXJsID0gJ3ZpZGVvJ1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZVRvVXJsID0gJ2ZpbGUnXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaGFyZWFibGVVcmwgPSBgJHt3aW5kb3cubG9jYXRpb24ucHJvdG9jb2x9Ly8ke3dpbmRvdy5sb2NhdGlvbi5ob3N0fS9kbXMvc2hhcmUodmlld2VyOnZpZXcvJHt0aGlzLnR5cGVUb1VybH0vJHt0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkudWlkfSk/bG9jYXRpb249L3NoYXJlJmZvcm1UeXBlPSR7dGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnR5cGV9YFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNoYXJlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBkZXBBbmRpdHNVc2VyczogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgcmlnaHRzOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNoYXJlRm9ybS5nZXQoJ2RlcEFuZGl0c1VzZXJzJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICBpZiAocmVzPy51c2Vycykge1xyXG4gICAgICAgIChKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkVXNlcnMpICE9IEpTT04uc3RyaW5naWZ5KHJlcy51c2VycykpXHJcbiAgICAgICAgICA/IHRoaXMuc2V0VXNlcihyZXMudXNlcnMpXHJcbiAgICAgICAgICA6IG51bGxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuc2hhcmVGb3JtLnJlc2V0KCk7XHJcbiAgICB0aGlzLmdldE15U2hhcmUoKTtcclxuICB9XHJcbiAgcmVtb3ZlRnJvbUZvcmJpZGRlbkFycihldmVudCkge1xyXG4gICAgKHRoaXMuZm9yYmlkZGVuVXNlcnMuaW5jbHVkZXMoZXZlbnQubGFiZWwpKSA/XHJcbiAgICAgIHRoaXMuZm9yYmlkZGVuVXNlcnMuc3BsaWNlKHRoaXMuZm9yYmlkZGVuVXNlcnMuaW5kZXhPZihldmVudC5sYWJlbCksIDEpIDogJyc7XHJcbiAgfVxyXG4gIGNvcHkoKSB7XHJcbiAgICB0aGlzLmNvcGllZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jb3BpZWQgPSBmYWxzZTtcclxuICAgIH0sIDIwMDApXHJcbiAgfVxyXG4gIHNldFVzZXIodXNlcnMpIHtcclxuICAgIHRoaXMuaXNTaGFyZWRCZWZvcmUgPSBbXTtcclxuICAgIHRoaXMuc2FtZUN1cnJlbnRVc2VyID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkVXNlcnMgPSB1c2VycztcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2Vycy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LnByb3BlcnRpZXMudXNlcm5hbWUgPT09IHRoaXMuY3VycmVudFVzZXIpIHtcclxuICAgICAgICB0aGlzLnNhbWVDdXJyZW50VXNlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuc2hhcmVkTGlzdFVzZXIuaW5jbHVkZXMoZWxlbWVudC5wcm9wZXJ0aWVzLnVzZXJuYW1lKSkge1xyXG4gICAgICAgIHRoaXMuaXNTaGFyZWRCZWZvcmUucHVzaChlbGVtZW50LnByb3BlcnRpZXMuZnVsbE5hbWUpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRSaWdodChldmVudCkge1xyXG4gICAgKCF0aGlzLnNhbWVDdXJyZW50VXNlciAmJiAhdGhpcy5pc1NoYXJlZEJlZm9yZS5sZW5ndGggJiYgdGhpcy5zaGFyZUZvcm0uZ2V0KCdyaWdodHMnKS52YWx1ZSkgPyB0aGlzLmRpc2FibGVkID0gZmFsc2UgOiB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGNoZWNrSWZDYW5WaWV3U2VjcmV0KCkge1xyXG4gICAgdGhpcy5mb3JiaWRkZW5Vc2VycyA9IFtdO1xyXG4gICAgbGV0IGFyciA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJzLm1hcChlbGVtZW50ID0+IHtcclxuICAgICAgbGV0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGVsZW1lbnQucHJvcGVydGllcy51c2VybmFtZSxcclxuICAgICAgICBzZWNyZWN5TGV2ZWw6IHRoaXMuc2VsZWN0ZWRJdGVtLmVudGl0eS5wcm9wZXJ0aWVzLnNlY3JlY3lMZXZlbFxyXG4gICAgICB9XHJcbiAgICAgIGFyci5wdXNoKFxyXG4gICAgICAgIHRoaXMuc2hhcmVkLmNhblNlZVNlY3JldGRvY3MoY29udGV4dCkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKHsgZWxlbWVudCwgLi4ucmVzIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgfSlcclxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGFycikucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHJlcy5mb3JFYWNoKGUgPT4ge1xyXG4gICAgICAgICAgaWYgKCFlLmNhblZpZXdTZWNyZXRGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcmJpZGRlblVzZXJzLnB1c2goZS5lbGVtZW50LnByb3BlcnRpZXMuZnVsbE5hbWUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gb2YodGhpcy5mb3JiaWRkZW5Vc2VycylcclxuICAgICAgfSkpXHJcbiAgfVxyXG4gIGRvU2hhcmUodXNlcnMpIHtcclxuICAgIGxldCBjb250ZXh0ID0ge1xyXG4gICAgICB1c2VyczogdXNlcnMsXHJcbiAgICAgIG1vZGU6IHRoaXMuc2hhcmVGb3JtLmdldCgncmlnaHRzJykudmFsdWVcclxuICAgIH1cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQuY29uY2F0KFt0aGlzLnNoYXJlZC5zaGFyZURvY3VtZW50V2l0aFVzZXIoY29udGV4dCwgdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzKVxyXG4gICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5zaGFyZV9Eb2Nfc3VjY2Vzc1wiKTtcclxuICAgICAgdGhpcy5kZXBVc2VycyA9IFtdO1xyXG4gICAgICB0aGlzLnNoYXJlRm9ybS5yZXNldCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5nZXRNeVNoYXJlKCk7XHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICB0aGlzLnRvc3RlclNlcnZpY2Uuc2hvdygnZXJyb3InLCAnVE9BU1RFUi5FUlJPUicsICdUT0FTVEVSLnNoYXJlX0RvY19mYWlsJyk7XHJcbiAgICB9KVxyXG4gICAgXSlcclxuICB9XHJcblxyXG4gIHNoYXJlKCkge1xyXG4gICAgaWYgKHRoaXMuc2hhcmVGb3JtLmludmFsaWQpIHtcclxuICAgICAgYWxlcnQodGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXCJzaGFyZS5zZWxlY3RfdXNlcl90b19zaGFyZVwiKSlcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmFsbG93VXNlcnNUb1NoYXJlID0gW107XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkucHJvcGVydGllcy5zZWNyZWN5TGV2ZWxcclxuICAgICAgICAmJiB0aGlzLnNlbGVjdGVkSXRlbS5lbnRpdHkucHJvcGVydGllcy5zZWNyZWN5TGV2ZWwgIT0gXCJOb3JtYWxcIikge1xyXG4gICAgICAgIHRoaXMuY2hlY2tJZkNhblZpZXdTZWNyZXQoKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIGlmICghcmVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93VXNlcnNUb1NoYXJlLnB1c2goZWxlbWVudC5wcm9wZXJ0aWVzLnVzZXJuYW1lKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5kb1NoYXJlKHRoaXMuYWxsb3dVc2Vyc1RvU2hhcmUpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVXNlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxsb3dVc2Vyc1RvU2hhcmUucHVzaChlbGVtZW50LnByb3BlcnRpZXMudXNlcm5hbWUpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kb1NoYXJlKHRoaXMuYWxsb3dVc2Vyc1RvU2hhcmUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5EaWFsb2coZnVuY3Rpb25Ub0RvLCB1c2VybmFtZT8sIHNoYXJlZE1vZGU/KSB7XHJcbiAgICBsZXQgbWVzc2FnZTogYW55O1xyXG4gICAgKGZ1bmN0aW9uVG9EbyA9PT0gXCJSZW1fQUxMX3NoYXJlc1wiKSA/IG1lc3NhZ2UgPSBcImNvbmZpcm1EaWFsb2cuUmVtX0FsbF9zaGFyZXNcIlxyXG4gICAgICA6IG1lc3NhZ2UgPSBcImNvbmZpcm1EaWFsb2cuUmVtX2N1c3RvbV9zaGFyZVwiO1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCAsIHtcclxuICAgICAgd2lkdGg6ICc1MTBweCcsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImNvbmZpcm1EaWFsb2cuY29uZmlybVwiKSxcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG1lc3NhZ2UpLFxyXG4gICAgICAgICAgY29uZmlybUJ1dHRvbiA6IGBCVVRUT05TLlJlbW92ZWAsXHJcbiAgICAgICAgICBjYW5jZWxCdXR0b24gOiBcIkJVVFRPTlMuQ2FuY2VsXCJcclxuICAgICAgfSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgfSlcclxuICAgIC8vIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZnVzZUNvbmZpcm1hdGlvblNlcnZpY2Uub3BlbihcclxuICAgIC8vICAge1xyXG4gICAgLy8gICAgIGRpc21pc3NpYmxlOiB0cnVlLFxyXG4gICAgLy8gICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcImNvbmZpcm1EaWFsb2cuY29uZmlybVwiKSxcclxuICAgIC8vICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtZXNzYWdlKSxcclxuICAgIC8vICAgICBhY3Rpb25zOiB7XHJcbiAgICAvLyAgICAgICBjb25maXJtOiB7XHJcbiAgICAvLyAgICAgICAgIHNob3c6IHRydWUsXHJcbiAgICAvLyAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcIkJVVFRPTlMuUmVtb3ZlXCIpLFxyXG4gICAgLy8gICAgICAgICBjb2xvcjogXCJ3YXJuXCJcclxuICAgIC8vICAgICAgIH0sXHJcbiAgICAvLyAgICAgICBjYW5jZWw6IHtcclxuICAgIC8vICAgICAgICAgc2hvdzogdHJ1ZSxcclxuICAgIC8vICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFwiQlVUVE9OUy5DYW5jZWxcIiksXHJcbiAgICAvLyAgICAgICB9XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9XHJcbiAgICAvLyApO1xyXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgIGlmIChmdW5jdGlvblRvRG8gPT09IFwiUmVtX0FMTF9zaGFyZXNcIikge1xyXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJC5jb25jYXQoW3RoaXMuc2hhcmVkLnJlbW92ZUFsbFNoYXJlc2ZvckRvY3ModGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ3N1Y2Nlc3MnLCAnVE9BU1RFUi5TVUNDRVNTJywgXCJUT0FTVEVSLlJtX0FsbF9TaGFyZXNfc3VjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICB0aGlzLmdldE15U2hhcmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCAnVE9BU1RFUi5SbV9BbGxfU2hhcmVzX2ZhaWwnKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgY29udGV4dCA9IHtcclxuICAgICAgICAgICAgdXNlcjogdXNlcm5hbWUsXHJcbiAgICAgICAgICAgIG1vZGU6IHNoYXJlZE1vZGVcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyQuY29uY2F0KFtcclxuICAgICAgICAgICAgdGhpcy5zaGFyZWQucmVtb3ZlQ3VzdG9tU2hhcmUoY29udGV4dCwgdGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9zdGVyU2VydmljZS5zaG93KCdzdWNjZXNzJywgJ1RPQVNURVIuU1VDQ0VTUycsIFwiVE9BU1RFUi5SZW1fY3VzdG9tX3NoYXJlX3N1Y2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldE15U2hhcmUoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy50b3N0ZXJTZXJ2aWNlLnNob3coJ2Vycm9yJywgJ1RPQVNURVIuRVJST1InLCAnVE9BU1RFUi5SZW1fY3VzdG9tX3NoYXJlX2ZhaWwnKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE15U2hhcmUoKSB7XHJcbiAgICB0aGlzLnNoYXJlZExpc3RVc2VyID0gdGhpcy5zaGFyZWRMaXN0ID0gW107XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmNvbmNhdChbXHJcbiAgICAgIHRoaXMuc2hhcmVkLmdldFNoYXJlc0J5TWUodGhpcy5zZWxlY3RlZEl0ZW0uZW50aXR5LnVpZCwgdHJ1ZSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLnNoYXJlZExpc3QgPSByZXM7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hhcmVkTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNoYXJlZExpc3RVc2VyLnB1c2goZWxlbWVudC51c2VyLnByb3BlcnRpZXMudXNlcm5hbWUpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIF0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJzaGFyZUZvcm1cIiBjbGFzcz1cImgtZnVsbCBwLTUgb3ZlcmZsb3ctYXV0b1wiIFNldFJ0bD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGgtZnVsbFwiPlxyXG4gICAgPCEtLUZvcm0gU2VjdGlvbi0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImFkZC1wZXJtc2lvbi13cmFwcGVyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1ncmF5LTkwMCB0ZXh0LWxnXCI+XHJcbiAgICAgICAge3sgXCJzaGFyZS5zaGFyZURpYWxvZ1RpdGxlXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNSBzZWxlY3RvcnNXcmFwcGVyXCI+XHJcbiAgICAgICAgPGFwcC1zZWxlY3QtdXNlcnMtYnktZGVwYXJ0bWVudHNcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlcEFuZGl0c1VzZXJzXCJcclxuICAgICAgICAgIFthbGxvd011bHRpcGxlVXNlcnNdPSBcInRydWVcIlxyXG4gICAgICAgICAgW3VzZXJMYWJlbF09XCInc2hhcmUudXNlcnMnICB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICBbZGVwTGFiZWxdPVwiJ3NoYXJlLkRlcCcgIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIFtkaXNwbGF5XT1cIidjb2x1bW4nXCI+XHJcbiAgICAgICAgPC9hcHAtc2VsZWN0LXVzZXJzLWJ5LWRlcGFydG1lbnRzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImZvcmJpZGRlblVzZXJzLmxlbmd0aFwiIGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHAgb2YgZm9yYmlkZGVuVXNlcnM7IGxldCBpIGFzIGluZGV4XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAge3twfX0mbmJzcDtcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICA8cCAqbmdJZj1cImZvcmJpZGRlblVzZXJzLmxlbmd0aCA9PSAxXCI+XHJcbiAgICAgICAgICAgIHt7IFwic2hhcmUuc2luZ2xlX2ZvcmJpZGRlblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgIDxwICpuZ0lmPVwiZm9yYmlkZGVuVXNlcnMubGVuZ3RoID4gMVwiPlxyXG4gICAgICAgICAgICB7eyBcInNoYXJlLm11bHRpX2ZvcmJpZGRlblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzYW1lQ3VycmVudFVzZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgIHt7IFwic2hhcmUuc2hhcmVXaXRoTG9nZ2VkSW5Vc2VyXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNTaGFyZWRCZWZvcmUubGVuZ3RoXCIgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtcmVkLTUwMCB0ZXh0LWJhc2VcIj5cclxuICAgICAgICAgICAge3sgXCJzaGFyZS5zaGFyZV9leGlzdHNcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwIG9mIGlzU2hhcmVkQmVmb3JlXCI+XHJcbiAgICAgICAgICAgICAge3twfX1cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIHt7IFwic2hhcmUuYmVmb3JlXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC00IHJpZ2h0c1NlbGVjdG9yXCI+XHJcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZCBtYi0wXCI+XHJcbiAgICAgICAgICB7eyBcInNoYXJlLlJpZ2h0c1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj5cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDxuZy1zZWxlY3QgXHJcbiAgICAgICAgICBbaXRlbXNdPVwicmlnaHRzXCIgXHJcbiAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXHJcbiAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3Blcm1pc3Npb24ucmlnaHRzUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJpZ2h0c1wiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInNldFJpZ2h0KCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaGFyZWRMaXN0Lmxlbmd0aFwiIGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkIG1iLTBcIj5cclxuICAgICAgICAgICAge3sgXCJzaGFyZS5maWxlVXJsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCByZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgI2ZpbGVVcmxcclxuICAgICAgICAgICAgICBbdmFsdWVdPVwic2hhcmVhYmxlVXJsXCJcclxuICAgICAgICAgICAgICBkaXNhYmxlZFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXBwZWFyYW5jZS1ub25lIGJsb2NrIHctZnVsbCAgYmctYWNjZW50LTEwMCB0ZXh0LWdyYXktNzAwIGJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZCBweS0yLjUgcHgtNCBcclxuICAgICAgICAgICAgICBsZWFkaW5nLXRpZ2h0IGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpiZy13aGl0ZSBmb2N1czpib3JkZXItZ3JheS01MDBcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWJzb2x1dGUgcHQtMi41IGJnLWFjY2VudC0xMDBcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXSA9IFwiJ0JVVFRPTlMuQ09QWScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihsb2NhbGUgPT09ICdlbicpICA/ICdyaWdodC0yJyA6ICdsZWZ0LTInXCJcclxuICAgICAgICAgICAgICBbY2RrQ29weVRvQ2xpcGJvYXJkXT1cImZpbGVVcmwudmFsdWVcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJjb3B5KClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm1hdF9zb2xpZDpjb250ZW50X2NvcHlcIiBjbGFzcz1cImljb24tc2l6ZS02XCI+PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb3BpZWRcIiBjbGFzcz1cImZsZXggYWJzb2x1dGUganVzdGlmeS1hcm91bmQgdy0yNCAtbXQtMTAgYm9yZGVyIFxyXG4gICAgICAgICAgICBib3JkZXItcmVkLTcwMCBoLTcgcm91bmRlZCBiZy1ncmF5LTIwMFwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihsb2NhbGUgPT09ICdlbicpICA/ICdyaWdodC0wJyA6ICdsZWZ0LTAnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMyBoLTMganVzdGlmeS1jZW50ZXIgYmctZ3JheS0yMDAgdHJhbnNmb3JtIHJvdGF0ZS00NSBib3JkZXJcclxuICAgICAgICAgICAgICAgbXQtNSBib3JkZXJzLWNvbG9yXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhYnNvbHV0ZSBmb250LWV4dHJhbGlnaHRcIj57eyBcInNoYXJlLmNvcGllZFwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNoYXJlcyBTZWN0aW9uLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hhcmVkTGlzdC5sZW5ndGhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIGgtNyBib3JkZXItYi0yIGJvcmRlci1hY2NlbnQtMTAwIG10LTJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGRcIj5cclxuICAgICAgICAgIHt7IFwic2hhcmUuc2hhcmVzXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKnBlcm1pc3Npb249XCJ7bmFtZTogJ2NhblJlbW92ZVNoYXJlJywgZW50aXR5OiBzZWxlY3RlZEl0ZW0uZW50aXR5fVwiXHJcbiAgICAgICAgICBtYXRUb29sdGlwPVwie3snc2hhcmUuUm1fQWxsX3NoYXJlcycgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJvcGVuRGlhbG9nKCdSZW1fQUxMX3NoYXJlcycpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19vdXRsaW5lOnRyYXNoJ1wiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCIobG9jYWxlID09PSAnZW4nKSAgPyAnbXItMicgOiAnbWwtMidcIj48L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTIgb3ZlcmZsb3cteS1hdXRvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIG10LTIuNVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LTEvMiB0ZXh0LWJhc2UgZm9udC1ib2xkXCI+e3tcInNoYXJlLnNoYXJlV2l0aFwiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMS80IHRleHQtYmFzZSBmb250LWJvbGRcIj57e1wic2hhcmUuc2hhcmVfZGF0ZVwiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMS80IHRleHQtYmFzZSBmb250LWJvbGRcIj57e1wic2hhcmUucGVybWlzc2lvblwiIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3Bhbj4mbmJzcDs8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZCBvZiBzaGFyZWRMaXN0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtMi41XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IHctMS8yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMCB3LTggaC04IHJvdW5kZWQtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgICAgIDxjdHMtYXZhdGFyIFt1c2VyXT1cIntcclxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBkLnVzZXIucHJvcGVydGllcz8uZmlyc3ROYW1lLFxyXG4gICAgICAgICAgICAgICAgICBsYXN0TmFtZTogZC51c2VyLnByb3BlcnRpZXM/Lmxhc3ROYW1lXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9jdHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIC1tdC0yIHB4LTIgYnJlYWstYWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57e2QudXNlci5mdWxsTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3tkLnVzZXIucHJvcGVydGllcy5lbWFpbH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS80IG10LTEuNSBicmVhay1hbGwgcHgtMi41XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3tkLnNoYXJlZERhdGUgIHwgbG9jYWxpemVkRGF0ZTpcImRkIE1NTU0geXl5eVwiOihpc0FyYWJpYz8gJ2FyLUFSJyA6ICdlbi1VUycpfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzQgbXQtMS41IGJyZWFrLWFsbCBweC00XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4+e3tcInJpZ2h0cy5cIiArIGQuc2hhcmVkTW9kZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEuNVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uICpwZXJtaXNzaW9uPVwie25hbWU6ICdjYW5SZW1vdmVTaGFyZScsIGVudGl0eTogc2VsZWN0ZWRJdGVtLmVudGl0eX1cIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7J3NoYXJlLlJtX2N1c3RvbV9zaGFyZScgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkRpYWxvZygnUmVtX2N1c3RvbV9zaGFyZScsZC51c2VyLnByb3BlcnRpZXMudXNlcm5hbWUsZC5zaGFyZWRNb2RlKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtcy1JY29uIG1zLUljb24tLUNocm9tZUNsb3NlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihsb2NhbGUgPT09ICdlbicpICA/ICdtci0yLjUnIDogJ21sLTIuNSdcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tQnV0dG9ucyBTZWN0aW9uLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gbXQtMiBweS0xXCI+XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXNzaW9uLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJzaGFyZSgpXCI+XHJcbiAgICAgICAge3sgXCJzaGFyZS5zaGFyZUJ1dHRvblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsYXRpb24tYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cclxuICAgICAgICB7eyBcIkJVVFRPTlMuQ2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPiJdfQ==