@tuki-io/tuki-widgets 0.0.219-dev.40 → 0.0.219-dev.41

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 (221) hide show
  1. package/README.md +24 -24
  2. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +1 -1
  3. package/esm2020/contact-center/cc-readiness/cc-readiness.service.mjs +1 -1
  4. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +3 -3
  5. package/esm2020/di2mt/widgets/site-upgrade/progress-bar/progress-bar.component.mjs +3 -3
  6. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +2 -2
  7. package/esm2020/di2mt/widgets/upgrade-overview/cards/pending-activation-users/pending-activation-users.component.mjs +17 -17
  8. package/esm2020/lib/widgets.component.mjs +9 -9
  9. package/esm2020/lib/widgets.module.mjs +1 -1
  10. package/esm2020/lib/widgets.service.mjs +1 -1
  11. package/esm2020/locations/public-api.mjs +1 -1
  12. package/esm2020/locations/src/app.constants.mjs +1 -1
  13. package/esm2020/locations/src/locations.component.mjs +3 -3
  14. package/esm2020/locations/src/locations.module.mjs +1 -1
  15. package/esm2020/locations/src/material.module.mjs +1 -1
  16. package/esm2020/locations/src/services/api.service.mjs +1 -1
  17. package/esm2020/locations/src/services/locations.service.mjs +1 -1
  18. package/esm2020/locations/src/types/location.mjs +1 -1
  19. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +3 -3
  20. package/esm2020/meetings/src/app.constants.mjs +1 -1
  21. package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +3 -3
  22. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +3 -3
  23. package/esm2020/meetings/src/meetings.component.mjs +3 -3
  24. package/esm2020/meetings/src/meetings.module.mjs +1 -1
  25. package/esm2020/meetings/src/services/live-meetings.service.mjs +1 -1
  26. package/esm2020/meetings/src/services/meeting-spaces.service.mjs +1 -1
  27. package/esm2020/meetings/src/types/live-meeting.mjs +1 -1
  28. package/esm2020/meetings/src/types/meeting-space.mjs +1 -1
  29. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +3 -3
  30. package/esm2020/public-api.mjs +1 -1
  31. package/esm2020/user-creation/src/app.constants.mjs +1 -1
  32. package/esm2020/user-creation/src/classes/notification.mjs +1 -1
  33. package/esm2020/user-creation/src/classes/site.mjs +1 -1
  34. package/esm2020/user-creation/src/environments/environment.mjs +1 -1
  35. package/esm2020/user-creation/src/interfaces/user-creation-wizard.interfaces.mjs +1 -1
  36. package/esm2020/user-creation/src/shared/components/notification/notification.component.mjs +3 -3
  37. package/esm2020/user-creation/src/shared/pipes/truncate.pipe.mjs +1 -1
  38. package/esm2020/user-creation/src/shared/services/notification.service.mjs +1 -1
  39. package/esm2020/user-creation/src/shared/services/user-creation-api.service.mjs +1 -1
  40. package/esm2020/user-creation/src/shared/services/utils.mjs +1 -1
  41. package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +3 -3
  42. package/esm2020/user-creation/src/utils/build-savable-end-user.mjs +1 -1
  43. package/esm2020/user-creation/src/utils/device-default-prefix.mjs +1 -1
  44. package/esm2020/user-creation/src/utils/device-name-dynamic-tokens.mjs +1 -1
  45. package/esm2020/user-creation/src/utils/device-name-validation.mjs +1 -1
  46. package/esm2020/user-creation/src/utils/model.mjs +1 -1
  47. package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +1 -1
  48. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +3 -3
  49. package/esm2020/user-device-manage/public-api.mjs +1 -1
  50. package/esm2020/user-device-manage/src/app.constants.mjs +1 -1
  51. package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
  52. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  53. package/esm2020/user-device-manage/src/classes/line-association-interface.mjs +1 -1
  54. package/esm2020/user-device-manage/src/classes/line-association.mjs +1 -1
  55. package/esm2020/user-device-manage/src/classes/line-call-info-display.mjs +1 -1
  56. package/esm2020/user-device-manage/src/classes/line-directory.mjs +1 -1
  57. package/esm2020/user-device-manage/src/classes/line.mjs +1 -1
  58. package/esm2020/user-device-manage/src/classes/notification.mjs +1 -1
  59. package/esm2020/user-device-manage/src/classes/recording-options.mjs +1 -1
  60. package/esm2020/user-device-manage/src/classes/simplified-user.mjs +1 -1
  61. package/esm2020/user-device-manage/src/classes/site-defaults.mjs +1 -1
  62. package/esm2020/user-device-manage/src/classes/translation-pattern.mjs +1 -1
  63. package/esm2020/user-device-manage/src/classes/types.mjs +1 -1
  64. package/esm2020/user-device-manage/src/common-functions.mjs +1 -1
  65. package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +3 -3
  66. package/esm2020/user-device-manage/src/device-associated-line/associated-line-row/associated-line-row.component.mjs +3 -3
  67. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-details-box/device-associated-line-details-box.component.mjs +3 -3
  68. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +3 -3
  69. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line.component.mjs +1 -1
  70. package/esm2020/user-device-manage/src/device-info/device-info.component.mjs +3 -3
  71. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +2 -2
  72. package/esm2020/user-device-manage/src/environments/environment.mjs +1 -1
  73. package/esm2020/user-device-manage/src/interseptors/auth.interceptor.mjs +1 -1
  74. package/esm2020/user-device-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  75. package/esm2020/user-device-manage/src/material.module.mjs +1 -1
  76. package/esm2020/user-device-manage/src/notifications/notification.component.mjs +3 -3
  77. package/esm2020/user-device-manage/src/pipes/mac-address.pipe.mjs +1 -1
  78. package/esm2020/user-device-manage/src/services/api.service.mjs +1 -1
  79. package/esm2020/user-device-manage/src/services/device.service.mjs +1 -1
  80. package/esm2020/user-device-manage/src/services/dns.service.mjs +1 -1
  81. package/esm2020/user-device-manage/src/services/line.service.mjs +1 -1
  82. package/esm2020/user-device-manage/src/services/notification.service.mjs +1 -1
  83. package/esm2020/user-device-manage/src/services/removeKynFromIBM.service.mjs +1 -1
  84. package/esm2020/user-device-manage/src/services/site-settings.service.mjs +1 -1
  85. package/esm2020/user-device-manage/src/services/sorting-utils.service.mjs +1 -1
  86. package/esm2020/user-device-manage/src/services/user.service.mjs +1 -1
  87. package/esm2020/user-device-manage/src/services/utils.service.mjs +1 -1
  88. package/esm2020/user-device-manage/src/services/validation.service.mjs +1 -1
  89. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +3 -3
  90. package/esm2020/user-manage/public-api.mjs +1 -1
  91. package/esm2020/user-manage/src/app.constants.mjs +1 -1
  92. package/esm2020/user-manage/src/classes/device.mjs +1 -1
  93. package/esm2020/user-manage/src/classes/line-association-interface.mjs +1 -1
  94. package/esm2020/user-manage/src/classes/line-association.mjs +1 -1
  95. package/esm2020/user-manage/src/classes/line-call-info-display.mjs +1 -1
  96. package/esm2020/user-manage/src/classes/line-directory.mjs +1 -1
  97. package/esm2020/user-manage/src/classes/line.mjs +1 -1
  98. package/esm2020/user-manage/src/classes/notification.mjs +1 -1
  99. package/esm2020/user-manage/src/classes/pagination.mjs +1 -1
  100. package/esm2020/user-manage/src/classes/recording-options.mjs +1 -1
  101. package/esm2020/user-manage/src/classes/simplified-user.mjs +1 -1
  102. package/esm2020/user-manage/src/classes/table-data.mjs +1 -1
  103. package/esm2020/user-manage/src/classes/translation-pattern.mjs +1 -1
  104. package/esm2020/user-manage/src/classes/user-list.mjs +1 -1
  105. package/esm2020/user-manage/src/common-functions.mjs +1 -1
  106. package/esm2020/user-manage/src/device-list/device-list.component.mjs +3 -3
  107. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +3 -3
  108. package/esm2020/user-manage/src/environments/environment.mjs +1 -1
  109. package/esm2020/user-manage/src/interseptors/auth.interceptor.mjs +1 -1
  110. package/esm2020/user-manage/src/lazy-loading-select/lazy-loading-select.component.mjs +3 -3
  111. package/esm2020/user-manage/src/material.module.mjs +1 -1
  112. package/esm2020/user-manage/src/notifications/notification.component.mjs +3 -3
  113. package/esm2020/user-manage/src/removeKynFromIBM.service.mjs +1 -1
  114. package/esm2020/user-manage/src/services/api.service.mjs +1 -1
  115. package/esm2020/user-manage/src/services/dcp-api.service.mjs +1 -1
  116. package/esm2020/user-manage/src/services/dns.service.mjs +1 -1
  117. package/esm2020/user-manage/src/services/line.service.mjs +1 -1
  118. package/esm2020/user-manage/src/services/notification.service.mjs +1 -1
  119. package/esm2020/user-manage/src/services/removeKynFromIBM.service.mjs +1 -1
  120. package/esm2020/user-manage/src/services/site-settings.service.mjs +1 -1
  121. package/esm2020/user-manage/src/services/sorting-utils.service.mjs +1 -1
  122. package/esm2020/user-manage/src/services/user.service.mjs +1 -1
  123. package/esm2020/user-manage/src/services/utils.service.mjs +1 -1
  124. package/esm2020/user-manage/src/user-calling/user-calling-extension/user-calling-extension.component.mjs +3 -3
  125. package/esm2020/user-manage/src/user-info/user-info.component.mjs +3 -3
  126. package/esm2020/user-manage/src/user-manage-widget.component.mjs +2 -2
  127. package/esm2020/user-manage/src/user-manage.module.mjs +1 -1
  128. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +3 -3
  129. package/esm2020/user-manage/src/utils/pagination/pagination.component.mjs +3 -3
  130. package/esm2020/users-list/public-api.mjs +1 -1
  131. package/esm2020/users-list/src/app.constants.mjs +1 -1
  132. package/esm2020/users-list/src/classes/app-location.mjs +1 -1
  133. package/esm2020/users-list/src/classes/device.mjs +1 -1
  134. package/esm2020/users-list/src/classes/line.mjs +1 -1
  135. package/esm2020/users-list/src/classes/move-user.mjs +1 -1
  136. package/esm2020/users-list/src/classes/notification.mjs +1 -1
  137. package/esm2020/users-list/src/classes/simlified-user.mjs +1 -1
  138. package/esm2020/users-list/src/classes/table-data.mjs +1 -1
  139. package/esm2020/users-list/src/classes/user-list.mjs +1 -1
  140. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user/device-move-user-wizard.component.mjs +3 -3
  141. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/device-move-user-tab/devices-move-user-wizard-tab.component.mjs +3 -3
  142. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +3 -3
  143. package/esm2020/users-list/src/services/api-webex.service.mjs +1 -1
  144. package/esm2020/users-list/src/services/api.service.mjs +1 -1
  145. package/esm2020/users-list/src/services/dns.service.mjs +1 -1
  146. package/esm2020/users-list/src/services/events-communication.service.mjs +1 -1
  147. package/esm2020/users-list/src/services/notification.service.mjs +1 -1
  148. package/esm2020/users-list/src/services/removeKynFromIBM.service.mjs +1 -1
  149. package/esm2020/users-list/src/services/site-settings.service.mjs +1 -1
  150. package/esm2020/users-list/src/services/user.service.mjs +1 -1
  151. package/esm2020/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.mjs +3 -3
  152. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +3 -3
  153. package/esm2020/users-list/src/utils/common-functions.mjs +1 -1
  154. package/esm2020/users-list/src/utils/notifications/notification.component.mjs +3 -3
  155. package/esm2020/users-list/src/utils/utils.service.mjs +1 -1
  156. package/esm2020/workspaces/public-api.mjs +1 -1
  157. package/esm2020/workspaces/src/app.constants.mjs +10 -2
  158. package/esm2020/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.mjs +32 -0
  159. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +3 -3
  160. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +3 -3
  161. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +38 -10
  162. package/esm2020/workspaces/src/material.module.mjs +12 -5
  163. package/esm2020/workspaces/src/services/api-webex.service.mjs +14 -0
  164. package/esm2020/workspaces/src/services/api.service.mjs +1 -1
  165. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +1 -1
  166. package/esm2020/workspaces/src/services/workspaces-migration.service.mjs +59 -0
  167. package/esm2020/workspaces/src/services/workspaces.service.mjs +1 -1
  168. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  169. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +3 -3
  170. package/esm2020/workspaces/src/utils/device-icon.mjs +1 -1
  171. package/esm2020/workspaces/src/workspaces.component.mjs +189 -18
  172. package/esm2020/workspaces/src/workspaces.module.mjs +4 -1
  173. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +2 -2
  174. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  175. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +20 -20
  176. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  177. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +4 -4
  178. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  179. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +8 -8
  180. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  181. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +6 -6
  182. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  183. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +18 -18
  184. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  185. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +18 -18
  186. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  187. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +12 -12
  188. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  189. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +343 -36
  190. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  191. package/fesm2015/tuki-io-tuki-widgets.mjs +8 -8
  192. package/fesm2015/tuki-io-tuki-widgets.mjs.map +1 -1
  193. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +2 -2
  194. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  195. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +20 -20
  196. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  197. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +4 -4
  198. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  199. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +8 -8
  200. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  201. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +6 -6
  202. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  203. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +18 -18
  204. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  205. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +18 -18
  206. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  207. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +12 -12
  208. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  209. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +340 -36
  210. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  211. package/fesm2020/tuki-io-tuki-widgets.mjs +8 -8
  212. package/fesm2020/tuki-io-tuki-widgets.mjs.map +1 -1
  213. package/package.json +1 -1
  214. package/workspaces/src/app.constants.d.ts +8 -0
  215. package/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.d.ts +20 -0
  216. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +10 -3
  217. package/workspaces/src/material.module.d.ts +2 -1
  218. package/workspaces/src/services/api-webex.service.d.ts +6 -0
  219. package/workspaces/src/services/workspaces-migration.service.d.ts +18 -0
  220. package/workspaces/src/workspaces.component.d.ts +20 -6
  221. package/workspaces/src/workspaces.module.d.ts +7 -6
@@ -0,0 +1,59 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { API } from '../app.constants';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./api-webex.service";
5
+ export class WorkspacesMigrationService {
6
+ constructor(apiWebexService) {
7
+ this.apiWebexService = apiWebexService;
8
+ }
9
+ moveToMT(customerId, device) {
10
+ return this.apiWebexService.post(API.MIGRATION.MOVE, this.getMoveBody(customerId, device));
11
+ }
12
+ getMigrationFormStatus(customerId, formId) {
13
+ const url = API.MIGRATION.MIGRATION_FORM
14
+ .replace(':customerId', String(customerId))
15
+ .replace(':formId', String(formId));
16
+ return this.apiWebexService.fetch(url);
17
+ }
18
+ getMigratedMigrationFormEntities(customerId, webexUUID, feature = 'PERSON') {
19
+ const url = API.MIGRATION.MIGRATION_FORM_ENTITIES_MIGRATED.replace(':customerId', String(customerId));
20
+ return this.apiWebexService.fetch(url, { webexUUID, feature });
21
+ }
22
+ triggerFirmwareUpgrade(customerId, migrationFormId, deviceMap) {
23
+ const url = API.MIGRATION.TRIGGER_FIRMWARE_MIGRATION
24
+ .replace(':migrationType', 'WEBEX')
25
+ .replace(':customerId', String(customerId))
26
+ .replace(':migrationFormId', String(migrationFormId));
27
+ return this.apiWebexService.post(url, deviceMap);
28
+ }
29
+ removeUcmLicense(customerId, migrationFormId, controlHubType = 'WEBEX') {
30
+ const url = API.MIGRATION.REMOVE_UCM_LICENSE
31
+ .replace(':controlHubType', controlHubType)
32
+ .replace(':customerId', String(customerId))
33
+ .replace(':migrationFormId', String(migrationFormId));
34
+ return this.apiWebexService.post(url, {});
35
+ }
36
+ revertMigration(customerId, personId) {
37
+ const url = API.MIGRATION.WEBEX_REVERT
38
+ .replace(':customerId', String(customerId))
39
+ .replace(':personId', personId);
40
+ return this.apiWebexService.post(url, {});
41
+ }
42
+ getMoveBody(customerId, device) {
43
+ return {
44
+ customerId,
45
+ entities: {
46
+ PERSON: [{ cucmId: device.cucmId, entityId: device.name }],
47
+ },
48
+ };
49
+ }
50
+ }
51
+ WorkspacesMigrationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesMigrationService, deps: [{ token: i1.ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
52
+ WorkspacesMigrationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesMigrationService, providedIn: 'root' });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesMigrationService, decorators: [{
54
+ type: Injectable,
55
+ args: [{
56
+ providedIn: 'root',
57
+ }]
58
+ }], ctorParameters: function () { return [{ type: i1.ApiWebexService }]; } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy1taWdyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy9zZXJ2aWNlcy93b3Jrc3BhY2VzLW1pZ3JhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFTdkMsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFBSSxDQUFDO0lBRXpELFFBQVEsQ0FBQyxVQUEyQixFQUFFLE1BQTZCO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsc0JBQXNCLENBQUMsVUFBMkIsRUFBRSxNQUFjO1FBQ2hFLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYzthQUNyQyxPQUFPLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMxQyxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELGdDQUFnQyxDQUM5QixVQUEyQixFQUMzQixTQUFpQixFQUNqQixPQUFPLEdBQUcsUUFBUTtRQUVsQixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEcsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsc0JBQXNCLENBQ3BCLFVBQTJCLEVBQzNCLGVBQXVCLEVBQ3ZCLFNBQTRCO1FBRTVCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsMEJBQTBCO2FBQ2pELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7YUFDbEMsT0FBTyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxVQUEyQixFQUMzQixlQUF1QixFQUN2QixjQUFjLEdBQUcsT0FBTztRQUV4QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLGtCQUFrQjthQUN6QyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsY0FBYyxDQUFDO2FBQzFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQTJCLEVBQUUsUUFBZ0I7UUFDM0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZO2FBQ25DLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxVQUEyQixFQUFFLE1BQTZCO1FBQzVFLE9BQU87WUFDTCxVQUFVO1lBQ1YsUUFBUSxFQUFFO2dCQUNSLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMzRDtTQUNGLENBQUM7SUFDSixDQUFDOzt3SEE3RFUsMEJBQTBCOzRIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs0RkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vYXBwLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQgfSBmcm9tICcuLi90eXBlcy93b3Jrc3BhY2UnO1xuaW1wb3J0IHsgQXBpV2ViZXhTZXJ2aWNlIH0gZnJvbSAnLi9hcGktd2ViZXguc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIEZpcm13YXJlRGV2aWNlTWFwID0gUmVjb3JkPG51bWJlciwgUmVjb3JkPHN0cmluZywgc3RyaW5nW10+PjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZXNNaWdyYXRpb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlXZWJleFNlcnZpY2U6IEFwaVdlYmV4U2VydmljZSkgeyB9XG5cbiAgbW92ZVRvTVQoY3VzdG9tZXJJZDogc3RyaW5nIHwgbnVtYmVyLCBkZXZpY2U6IFdvcmtzcGFjZURldmljZVJlY29yZCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLnBvc3QoQVBJLk1JR1JBVElPTi5NT1ZFLCB0aGlzLmdldE1vdmVCb2R5KGN1c3RvbWVySWQsIGRldmljZSkpO1xuICB9XG5cbiAgZ2V0TWlncmF0aW9uRm9ybVN0YXR1cyhjdXN0b21lcklkOiBzdHJpbmcgfCBudW1iZXIsIGZvcm1JZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBBUEkuTUlHUkFUSU9OLk1JR1JBVElPTl9GT1JNXG4gICAgICAucmVwbGFjZSgnOmN1c3RvbWVySWQnLCBTdHJpbmcoY3VzdG9tZXJJZCkpXG4gICAgICAucmVwbGFjZSgnOmZvcm1JZCcsIFN0cmluZyhmb3JtSWQpKTtcbiAgICByZXR1cm4gdGhpcy5hcGlXZWJleFNlcnZpY2UuZmV0Y2godXJsKTtcbiAgfVxuXG4gIGdldE1pZ3JhdGVkTWlncmF0aW9uRm9ybUVudGl0aWVzKFxuICAgIGN1c3RvbWVySWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICB3ZWJleFVVSUQ6IHN0cmluZyxcbiAgICBmZWF0dXJlID0gJ1BFUlNPTicsXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gQVBJLk1JR1JBVElPTi5NSUdSQVRJT05fRk9STV9FTlRJVElFU19NSUdSQVRFRC5yZXBsYWNlKCc6Y3VzdG9tZXJJZCcsIFN0cmluZyhjdXN0b21lcklkKSk7XG4gICAgcmV0dXJuIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLmZldGNoKHVybCwgeyB3ZWJleFVVSUQsIGZlYXR1cmUgfSk7XG4gIH1cblxuICB0cmlnZ2VyRmlybXdhcmVVcGdyYWRlKFxuICAgIGN1c3RvbWVySWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtaWdyYXRpb25Gb3JtSWQ6IG51bWJlcixcbiAgICBkZXZpY2VNYXA6IEZpcm13YXJlRGV2aWNlTWFwLFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IEFQSS5NSUdSQVRJT04uVFJJR0dFUl9GSVJNV0FSRV9NSUdSQVRJT05cbiAgICAgIC5yZXBsYWNlKCc6bWlncmF0aW9uVHlwZScsICdXRUJFWCcpXG4gICAgICAucmVwbGFjZSgnOmN1c3RvbWVySWQnLCBTdHJpbmcoY3VzdG9tZXJJZCkpXG4gICAgICAucmVwbGFjZSgnOm1pZ3JhdGlvbkZvcm1JZCcsIFN0cmluZyhtaWdyYXRpb25Gb3JtSWQpKTtcbiAgICByZXR1cm4gdGhpcy5hcGlXZWJleFNlcnZpY2UucG9zdCh1cmwsIGRldmljZU1hcCk7XG4gIH1cblxuICByZW1vdmVVY21MaWNlbnNlKFxuICAgIGN1c3RvbWVySWQ6IHN0cmluZyB8IG51bWJlcixcbiAgICBtaWdyYXRpb25Gb3JtSWQ6IG51bWJlcixcbiAgICBjb250cm9sSHViVHlwZSA9ICdXRUJFWCcsXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gQVBJLk1JR1JBVElPTi5SRU1PVkVfVUNNX0xJQ0VOU0VcbiAgICAgIC5yZXBsYWNlKCc6Y29udHJvbEh1YlR5cGUnLCBjb250cm9sSHViVHlwZSlcbiAgICAgIC5yZXBsYWNlKCc6Y3VzdG9tZXJJZCcsIFN0cmluZyhjdXN0b21lcklkKSlcbiAgICAgIC5yZXBsYWNlKCc6bWlncmF0aW9uRm9ybUlkJywgU3RyaW5nKG1pZ3JhdGlvbkZvcm1JZCkpO1xuICAgIHJldHVybiB0aGlzLmFwaVdlYmV4U2VydmljZS5wb3N0KHVybCwge30pO1xuICB9XG5cbiAgcmV2ZXJ0TWlncmF0aW9uKGN1c3RvbWVySWQ6IHN0cmluZyB8IG51bWJlciwgcGVyc29uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gQVBJLk1JR1JBVElPTi5XRUJFWF9SRVZFUlRcbiAgICAgIC5yZXBsYWNlKCc6Y3VzdG9tZXJJZCcsIFN0cmluZyhjdXN0b21lcklkKSlcbiAgICAgIC5yZXBsYWNlKCc6cGVyc29uSWQnLCBwZXJzb25JZCk7XG4gICAgcmV0dXJuIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLnBvc3QodXJsLCB7fSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vdmVCb2R5KGN1c3RvbWVySWQ6IHN0cmluZyB8IG51bWJlciwgZGV2aWNlOiBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21lcklkLFxuICAgICAgZW50aXRpZXM6IHtcbiAgICAgICAgUEVSU09OOiBbeyBjdWNtSWQ6IGRldmljZS5jdWNtSWQsIGVudGl0eUlkOiBkZXZpY2UubmFtZSB9XSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
87
87
  providedIn: 'root'
88
88
  }]
89
89
  }], ctorParameters: function () { return [{ type: i1.APIService }]; } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUl2QyxTQUFTLGFBQWEsQ0FBQyxRQUFhO0lBQ2xDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLGtCQUFpQztJQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDdkIsT0FBTyxhQUFhLENBQUM7S0FDdEI7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQXVCLEVBQUUsS0FBYTtJQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNCLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFFOUUsT0FBTztRQUNMLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMs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QUFJLENBQ3BFLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQXVCLENBQUM7WUFDN0QsT0FBTztnQkFDTCxVQUFVLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbEYsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksQ0FBQzthQUMxQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OytHQXhCVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9hcHAuY29uc3RhbnRzJztcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtzcGFjZSwgV29ya3NwYWNlTGlzdEl0ZW0sIFdvcmtzcGFjZXNQYWdlLCBXb3Jrc3BhY2VzUmVzcG9uc2UsIFdvcmtzcGFjZVN0YXR1cyB9IGZyb20gJy4uL3R5cGVzL3dvcmtzcGFjZSc7XG5cbmZ1bmN0aW9uIHBhcnNlUmVzcG9uc2UocmVzcG9uc2U6IGFueSk6IGFueSB7XG4gIHJldHVybiB0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZSkgOiByZXNwb25zZTtcbn1cblxuZnVuY3Rpb24gdG9TdGF0dXMocHJvdmlzaW9uaW5nU3RhdHVzOiBzdHJpbmcgfCBudWxsKTogV29ya3NwYWNlU3RhdHVzIHtcbiAgaWYgKCFwcm92aXNpb25pbmdTdGF0dXMpIHtcbiAgICByZXR1cm4gJ3VuYXZhaWxhYmxlJztcbiAgfVxuICByZXR1cm4gcHJvdmlzaW9uaW5nU3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdhY3RpdmUnID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnO1xufVxuXG5mdW5jdGlvbiB0b1dvcmtzcGFjZShpdGVtOiBXb3Jrc3BhY2VMaXN0SXRlbSwgaW5kZXg6IG51bWJlcik6IFdvcmtzcGFjZSB7XG4gIGNvbnN0IGRldmljZSA9IGl0ZW0uZGV2aWNlO1xuICBjb25zdCBmaXJzdERpcmVjdG9yeU51bWJlciA9IGRldmljZS5hc3NvY2lhdGVkRE5zPy5bMF0/LmRpcmVjdG9yeU51bWJlciA/PyAnJztcblxuICByZXR1cm4ge1xuICAgIGlkOiBkZXZpY2UucGtpZCB8fCBpdGVtLndvcmtzcGFjZURldmljZXM/LlswXT8uZGV2aWNlSWQgfHwgZGV2aWNlLm5hbWUgfHwgYHdvcmtzcGFjZS0ke2luZGV4fWAsXG4gICAgZGlzcGxheU5hbWU6IGRldmljZS5uZXdOYW1lIHx8IGRldmljZS5uYW1lIHx8ICdVbm5hbWVkIGRldmljZScsXG4gICAgdHlwZUxhYmVsOiBkZXZpY2UudXNlckRldmljZVR5cGUgfHwgJ05vIHR5cGUnLFxuICAgIGNhcGFjaXR5OiBudWxsLFxuICAgIGxvY2F0aW9uOiBpdGVtLnNpdGU/Lm5hbWUgfHwgZGV2aWNlLnNpdGVOYW1lIHx8IGRldmljZS5sb2NhdGlvbiB8fCAnJyxcbiAgICBkZXZpY2VzOiAoaXRlbS53b3Jrc3BhY2VEZXZpY2VzIHx8IFtdKS5tYXAod29ya3NwYWNlRGV2aWNlID0+ICh7XG4gICAgICBpZDogd29ya3NwYWNlRGV2aWNlLmRldmljZUlkLFxuICAgICAga2luZDogJ2RldmljZScgYXMgY29uc3QsXG4gICAgICBsYWJlbDogd29ya3NwYWNlRGV2aWNlLm1vZGVsIHx8IHdvcmtzcGFjZURldmljZS5tYWMsXG4gICAgICBtb2RlbDogd29ya3NwYWNlRGV2aWNlLm1vZGVsLFxuICAgIH0pKSxcbiAgICBzY2hlZHVsaW5nOiAnTm90IHNldCcsXG4gICAgY2FsbGluZ0xpY2Vuc2U6IGZpcnN0RGlyZWN0b3J5TnVtYmVyLFxuICAgIHByb3Zpc2lvbmluZ1R5cGU6ICdPbi1wcmVtaXNlcycsXG4gICAgc3RhdHVzOiB0b1N0YXR1cyhkZXZpY2UucHJvdmlzaW9uaW5nU3RhdHVzKSxcbiAgICBzdGF0dXNMYWJlbDogZGV2aWNlLnByb3Zpc2lvbmluZ1N0YXR1cyB8fCAnU3RhdHVzIHVuYXZhaWxhYmxlJyxcbiAgICBkZXZpY2UsXG4gICAgaXNIeWJyaWQ6IGZhbHNlLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZURldmljZXMoYTogV29ya3NwYWNlWydkZXZpY2UnXSwgYjogV29ya3NwYWNlWydkZXZpY2UnXSk6IFdvcmtzcGFjZVsnZGV2aWNlJ10ge1xuICByZXR1cm4ge1xuICAgIC4uLmEsXG4gICAgLi4uYixcbiAgICBjdWNtSWQ6IGIuY3VjbUlkID8/IGEuY3VjbUlkLFxuICAgIHdlYmV4VVVJRDogYi53ZWJleFVVSUQgPz8gYS53ZWJleFVVSUQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlV29ya3NwYWNlc0J5RGV2aWNlTmFtZSh3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXSk6IFdvcmtzcGFjZVtdIHtcbiAgY29uc3QgbWVyZ2VkID0gbmV3IE1hcDxzdHJpbmcsIFdvcmtzcGFjZT4oKTtcblxuICBmb3IgKGNvbnN0IHdvcmtzcGFjZSBvZiB3b3Jrc3BhY2VzKSB7XG4gICAgY29uc3Qga2V5ID0gd29ya3NwYWNlLmRldmljZS5uYW1lO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbWVyZ2VkLmdldChrZXkpO1xuICAgIG1lcmdlZC5zZXQoa2V5LCBleGlzdGluZyA/IHtcbiAgICAgIC4uLmV4aXN0aW5nLFxuICAgICAgLi4ud29ya3NwYWNlLFxuICAgICAgZGV2aWNlOiBtZXJnZURldmljZXMoZXhpc3RpbmcuZGV2aWNlLCB3b3Jrc3BhY2UuZGV2aWNlKSxcbiAgICAgIGlzSHlicmlkOiB0cnVlLFxuICAgIH0gOiB3b3Jrc3BhY2UpO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmZyb20obWVyZ2VkLnZhbHVlcygpKTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UpIHsgfVxuXG4gIGZldGNoV29ya3NwYWNlcyhcbiAgICBjdXN0b21lcklkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgc2l6ZSA9IDEwLFxuICAgIHBhZ2UgPSAwLFxuICApOiBPYnNlcnZhYmxlPFdvcmtzcGFjZXNQYWdlPiB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICB0eXBlOiAnT1JQSEFOX0RFVklDRScsXG4gICAgICAnZGV2aWNlLW5hbWUnOiAnU0VQJyxcbiAgICAgIGN1c3RvbWVyaWQ6IGN1c3RvbWVySWQudG9TdHJpbmcoKSxcbiAgICAgIHNpemU6IHNpemUudG9TdHJpbmcoKSxcbiAgICAgIHBhZ2U6IHBhZ2UudG9TdHJpbmcoKSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLldPUktTUEFDRVMuR0VUX0FMTCwgcXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VSZXNwb25zZShyZXNwb25zZSkgYXMgV29ya3NwYWNlc1Jlc3BvbnNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdvcmtzcGFjZXM6IG1lcmdlV29ya3NwYWNlc0J5RGV2aWNlTmFtZSgocGFyc2VkPy5wYWdlRGF0YSB8fCBbXSkubWFwKHRvV29ya3NwYWNlKSksXG4gICAgICAgICAgdG90YWw6IHBhcnNlZD8udG90YWwgPz8gMCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUl2QyxTQUFTLGFBQWEsQ0FBQyxRQUFhO0lBQ2xDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLGtCQUFpQztJQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDdkIsT0FBTyxhQUFhLENBQUM7S0FDdEI7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQXVCLEVBQUUsS0FBYTtJQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNCLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFFOUUsT0FBTztRQUNMLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMs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QUFJLENBQ3BFLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQXVCLENBQUM7WUFDN0QsT0FBTztnQkFDTCxVQUFVLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbEYsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksQ0FBQzthQUMxQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OytHQXhCVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9hcHAuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxpc3RJdGVtLCBXb3Jrc3BhY2VzUGFnZSwgV29ya3NwYWNlc1Jlc3BvbnNlLCBXb3Jrc3BhY2VTdGF0dXMgfSBmcm9tICcuLi90eXBlcy93b3Jrc3BhY2UnO1xyXG5cclxuZnVuY3Rpb24gcGFyc2VSZXNwb25zZShyZXNwb25zZTogYW55KTogYW55IHtcclxuICByZXR1cm4gdHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UocmVzcG9uc2UpIDogcmVzcG9uc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvU3RhdHVzKHByb3Zpc2lvbmluZ1N0YXR1czogc3RyaW5nIHwgbnVsbCk6IFdvcmtzcGFjZVN0YXR1cyB7XHJcbiAgaWYgKCFwcm92aXNpb25pbmdTdGF0dXMpIHtcclxuICAgIHJldHVybiAndW5hdmFpbGFibGUnO1xyXG4gIH1cclxuICByZXR1cm4gcHJvdmlzaW9uaW5nU3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdhY3RpdmUnID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b1dvcmtzcGFjZShpdGVtOiBXb3Jrc3BhY2VMaXN0SXRlbSwgaW5kZXg6IG51bWJlcik6IFdvcmtzcGFjZSB7XHJcbiAgY29uc3QgZGV2aWNlID0gaXRlbS5kZXZpY2U7XHJcbiAgY29uc3QgZmlyc3REaXJlY3RvcnlOdW1iZXIgPSBkZXZpY2UuYXNzb2NpYXRlZEROcz8uWzBdPy5kaXJlY3RvcnlOdW1iZXIgPz8gJyc7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBpZDogZGV2aWNlLnBraWQgfHwgaXRlbS53b3Jrc3BhY2VEZXZpY2VzPy5bMF0/LmRldmljZUlkIHx8IGRldmljZS5uYW1lIHx8IGB3b3Jrc3BhY2UtJHtpbmRleH1gLFxyXG4gICAgZGlzcGxheU5hbWU6IGRldmljZS5uZXdOYW1lIHx8IGRldmljZS5uYW1lIHx8ICdVbm5hbWVkIGRldmljZScsXHJcbiAgICB0eXBlTGFiZWw6IGRldmljZS51c2VyRGV2aWNlVHlwZSB8fCAnTm8gdHlwZScsXHJcbiAgICBjYXBhY2l0eTogbnVsbCxcclxuICAgIGxvY2F0aW9uOiBpdGVtLnNpdGU/Lm5hbWUgfHwgZGV2aWNlLnNpdGVOYW1lIHx8IGRldmljZS5sb2NhdGlvbiB8fCAnJyxcclxuICAgIGRldmljZXM6IChpdGVtLndvcmtzcGFjZURldmljZXMgfHwgW10pLm1hcCh3b3Jrc3BhY2VEZXZpY2UgPT4gKHtcclxuICAgICAgaWQ6IHdvcmtzcGFjZURldmljZS5kZXZpY2VJZCxcclxuICAgICAga2luZDogJ2RldmljZScgYXMgY29uc3QsXHJcbiAgICAgIGxhYmVsOiB3b3Jrc3BhY2VEZXZpY2UubW9kZWwgfHwgd29ya3NwYWNlRGV2aWNlLm1hYyxcclxuICAgICAgbW9kZWw6IHdvcmtzcGFjZURldmljZS5tb2RlbCxcclxuICAgIH0pKSxcclxuICAgIHNjaGVkdWxpbmc6ICdOb3Qgc2V0JyxcclxuICAgIGNhbGxpbmdMaWNlbnNlOiBmaXJzdERpcmVjdG9yeU51bWJlcixcclxuICAgIHByb3Zpc2lvbmluZ1R5cGU6ICdPbi1wcmVtaXNlcycsXHJcbiAgICBzdGF0dXM6IHRvU3RhdHVzKGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMpLFxyXG4gICAgc3RhdHVzTGFiZWw6IGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMgfHwgJ1N0YXR1cyB1bmF2YWlsYWJsZScsXHJcbiAgICBkZXZpY2UsXHJcbiAgICBpc0h5YnJpZDogZmFsc2UsXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWVyZ2VEZXZpY2VzKGE6IFdvcmtzcGFjZVsnZGV2aWNlJ10sIGI6IFdvcmtzcGFjZVsnZGV2aWNlJ10pOiBXb3Jrc3BhY2VbJ2RldmljZSddIHtcclxuICByZXR1cm4ge1xyXG4gICAgLi4uYSxcclxuICAgIC4uLmIsXHJcbiAgICBjdWNtSWQ6IGIuY3VjbUlkID8/IGEuY3VjbUlkLFxyXG4gICAgd2ViZXhVVUlEOiBiLndlYmV4VVVJRCA/PyBhLndlYmV4VVVJRCxcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZVdvcmtzcGFjZXNCeURldmljZU5hbWUod29ya3NwYWNlczogV29ya3NwYWNlW10pOiBXb3Jrc3BhY2VbXSB7XHJcbiAgY29uc3QgbWVyZ2VkID0gbmV3IE1hcDxzdHJpbmcsIFdvcmtzcGFjZT4oKTtcclxuXHJcbiAgZm9yIChjb25zdCB3b3Jrc3BhY2Ugb2Ygd29ya3NwYWNlcykge1xyXG4gICAgY29uc3Qga2V5ID0gd29ya3NwYWNlLmRldmljZS5uYW1lO1xyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBtZXJnZWQuZ2V0KGtleSk7XHJcbiAgICBtZXJnZWQuc2V0KGtleSwgZXhpc3RpbmcgPyB7XHJcbiAgICAgIC4uLmV4aXN0aW5nLFxyXG4gICAgICAuLi53b3Jrc3BhY2UsXHJcbiAgICAgIGRldmljZTogbWVyZ2VEZXZpY2VzKGV4aXN0aW5nLmRldmljZSwgd29ya3NwYWNlLmRldmljZSksXHJcbiAgICAgIGlzSHlicmlkOiB0cnVlLFxyXG4gICAgfSA6IHdvcmtzcGFjZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gQXJyYXkuZnJvbShtZXJnZWQudmFsdWVzKCkpO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlKSB7IH1cclxuXHJcbiAgZmV0Y2hXb3Jrc3BhY2VzKFxyXG4gICAgY3VzdG9tZXJJZDogc3RyaW5nIHwgbnVtYmVyLFxyXG4gICAgc2l6ZSA9IDEwLFxyXG4gICAgcGFnZSA9IDAsXHJcbiAgKTogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VzUGFnZT4ge1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAgIHR5cGU6ICdPUlBIQU5fREVWSUNFJyxcclxuICAgICAgJ2RldmljZS1uYW1lJzogJ1NFUCcsXHJcbiAgICAgIGN1c3RvbWVyaWQ6IGN1c3RvbWVySWQudG9TdHJpbmcoKSxcclxuICAgICAgc2l6ZTogc2l6ZS50b1N0cmluZygpLFxyXG4gICAgICBwYWdlOiBwYWdlLnRvU3RyaW5nKCksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuV09SS1NQQUNFUy5HRVRfQUxMLCBxdWVyeVBhcmFtcykucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VSZXNwb25zZShyZXNwb25zZSkgYXMgV29ya3NwYWNlc1Jlc3BvbnNlO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB3b3Jrc3BhY2VzOiBtZXJnZVdvcmtzcGFjZXNCeURldmljZU5hbWUoKHBhcnNlZD8ucGFnZURhdGEgfHwgW10pLm1hcCh0b1dvcmtzcGFjZSkpLFxyXG4gICAgICAgICAgdG90YWw6IHBhcnNlZD8udG90YWwgPz8gMCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
1
  // Raw shapes returned by /api/search/quicknonuserdevices (a paginated CUCM
2
2
  // non-user/shared device search, reused here as the "Workspaces" list).
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3R5cGVzL3dvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyRUFBMkU7QUFDM0Usd0VBQXdFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUmF3IHNoYXBlcyByZXR1cm5lZCBieSAvYXBpL3NlYXJjaC9xdWlja25vbnVzZXJkZXZpY2VzIChhIHBhZ2luYXRlZCBDVUNNXG4vLyBub24tdXNlci9zaGFyZWQgZGV2aWNlIHNlYXJjaCwgcmV1c2VkIGhlcmUgYXMgdGhlIFwiV29ya3NwYWNlc1wiIGxpc3QpLlxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUFzc29jaWF0ZWREaXJlY3RvcnlOdW1iZXIge1xuICBkaXJlY3RvcnlOdW1iZXI6IHN0cmluZztcbiAgcm91dGVQYXJ0aXRpb25OYW1lOiBzdHJpbmc7XG4gIHBraWQ6IHN0cmluZyB8IG51bGw7XG4gIGRuVHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgc3ViVHlwZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VMaW5lQXNzb2NpYXRpb24ge1xuICBsaW5lUGtpZDogc3RyaW5nIHwgbnVsbDtcbiAgaW5kZXg6IG51bWJlciB8IG51bGw7XG4gIHBvc2l0aW9uOiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVNpdGUge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlRGV2aWNlQXNzb2NpYXRpb24ge1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICBtYWM6IHN0cmluZztcbiAgbW9kZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5ld05hbWU6IHN0cmluZztcbiAgcGtpZDogc3RyaW5nIHwgbnVsbDtcbiAgZW50aXR5Q2hhbmdlVHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgZGV2aWNlVHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgYWN0aXZlTG9hZElkOiBzdHJpbmcgfCBudWxsO1xuICBhc3NvY2lhdGVkRE5zOiBXb3Jrc3BhY2VBc3NvY2lhdGVkRGlyZWN0b3J5TnVtYmVyW107XG4gIGF1dGhlbnRpY2F0aW9uTW9kZTogc3RyaW5nIHwgbnVsbDtcbiAgYXV0aGVudGljYXRpb25TdHJpbmc6IHN0cmluZyB8IG51bGw7XG4gIGJ1aWx0SW5CcmlkZ2U6IHN0cmluZyB8IG51bGw7XG4gIGJ1c3lMYW1wRmllbGRzOiB1bmtub3duW107XG4gIGJ1dHRvblRlbXBsYXRlOiBzdHJpbmcgfCBudWxsO1xuICBjYWxsaW5nU2VhcmNoU3BhY2VOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBjZXJ0aWZpY2F0ZU9wZXJhdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgY2VydGlmaWNhdGVTdGF0dXM6IHN0cmluZyB8IG51bGw7XG4gIGNoYW5nZWRMaW5lQXBwRW50aXR5OiBzdHJpbmcgfCBudWxsO1xuICBjaGFuZ2VkTWVldE1lRW50aXR5OiBzdHJpbmcgfCBudWxsO1xuICBjb21tb25QaG9uZUNvbmZpZ05hbWU6IHN0cmluZyB8IG51bGw7XG4gIGN0aVJlbW90ZURldmljZTogYm9vbGVhbjtcbiAgY3VjbUlkOiBzdHJpbmcgfCBudWxsO1xuICBjdXN0b21lcklkOiBudW1iZXI7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBkZXZpY2VQb29sTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgZGV2aWNlUmVnU3RhdHVzOiBzdHJpbmcgfCBudWxsO1xuICBkZXZpY2VTZWN1cml0eU1vZGU6IHN0cmluZyB8IG51bGw7XG4gIGVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eTogYm9vbGVhbjtcbiAgZXhjbHVkZURldmljZUV4dHJhT3B0aW9uczogYm9vbGVhbjtcbiAgZXh0cmFPcHRpb25zOiB1bmtub3duIHwgbnVsbDtcbiAgZmlybXdhcmVWZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBmaXJzdEV4cGFuc2lvbk1vZHVsZTogc3RyaW5nIHwgbnVsbDtcbiAgaW50ZXJjb21MaW5lQXNzb2NpYXRpb25zOiB1bmtub3duW107XG4gIGlwQWRkcmVzczogc3RyaW5nIHwgbnVsbDtcbiAgbGFzdFJlZ1RpbWU6IHN0cmluZyB8IG51bGw7XG4gIGxpbmVBc3NvY2lhdGlvbnM6IFdvcmtzcGFjZUxpbmVBc3NvY2lhdGlvbltdO1xuICBsaW5lczogdW5rbm93bltdO1xuICBsb2NhdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgbWVldE1lRW5hYmxlZDogYm9vbGVhbjtcbiAgbmV0d29ya0xvY2FsZTogc3RyaW5nIHwgbnVsbDtcbiAgb3BlcmF0aW9uQ29tcGxldGVzQnk6IHN0cmluZyB8IG51bGw7XG4gIG93bmVyVXNlcklkOiBzdHJpbmcgfCBudWxsO1xuICBwbGFyRGV2aWNlOiBib29sZWFuO1xuICBwcm90b2NvbDogc3RyaW5nIHwgbnVsbDtcbiAgcHJvdmlzaW9uaW5nU3RhdHVzOiBzdHJpbmcgfCBudWxsO1xuICByZXJvdXRpbmdDc3M6IHN0cmluZyB8IG51bGw7XG4gIHJzYUtleVNpemU6IHN0cmluZyB8IG51bGw7XG4gIHNlY29uZEV4cGFuc2lvbk1vZHVsZTogc3RyaW5nIHwgbnVsbDtcbiAgc2VjdXJpdHlQcm9maWxlOiBzdHJpbmcgfCBudWxsO1xuICBzZWN1cml0eVByb2ZpbGVVdWlkOiBzdHJpbmcgfCBudWxsO1xuICBzZWxlY3RlZERldmljZXNBYXJTZXR0aW5nczogdW5rbm93bltdO1xuICBzZWxlY3RlZERldmljZXNBZGRpdGlvbmFsSW5mb3M6IHVua25vd25bXTtcbiAgc2VsZWN0ZWREZXZpY2VzRG5kU2V0dGluZ3M6IHVua25vd25bXTtcbiAgc2VsZWN0ZWREZXZpY2VzRXh0ZXJuYWxEYXRhTG9jYXRpb25zOiB1bmtub3duW107XG4gIHNlbGVjdGVkRGV2aWNlc0dlbmVyYWxJbmZvczogdW5rbm93bltdO1xuICBzZWxlY3RlZERldmljZXNNZWRpYVNldHRpbmdzOiB1bmtub3duW107XG4gIHNlbGVjdGVkRGV2aWNlc01scHBJbmZvczogdW5rbm93bltdO1xuICBzZWxlY3RlZERldmljZXNOdW1iZXJQcmVzZW50YXRpb25zOiB1bmtub3duW107XG4gIHNlbGVjdGVkRGV2aWNlc1Bob25lU3BlY2lmaWNzOiB1bmtub3duW107XG4gIHNlbGVjdGVkRGV2aWNlc1Byb3RvY29sU3BlY2lmaWNzOiB1bmtub3duW107XG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgc2VydmljZXM6IHN0cmluZ1tdO1xuICBzaGFyZWRVc2Vyczogc3RyaW5nW107XG4gIHNpcFByb2ZpbGU6IHN0cmluZyB8IG51bGw7XG4gIHNpdGVJZDogbnVtYmVyO1xuICBzaXRlTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgc29mdGtleVRlbXBsYXRlOiBzdHJpbmcgfCBudWxsO1xuICBzcGVlZERpYWxzOiB1bmtub3duW107XG4gIHN1YnNjcmliZUNhbGxpbmdTZWFyY2hTcGFjZU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIHRoaXJkRXhwYW5zaW9uTW9kdWxlOiBzdHJpbmcgfCBudWxsO1xuICB1blN1cHBvcnRlZEZvclNEOiB1bmtub3duIHwgbnVsbDtcbiAgdXNlckRldmljZVR5cGU6IHN0cmluZyB8IG51bGw7XG4gIHVzZXJMb2NhbGU6IHN0cmluZyB8IG51bGw7XG4gIHZvaWNlbWFpbEVuYWJsZWQ6IGJvb2xlYW47XG4gIHdlYmV4VVVJRDogc3RyaW5nIHwgbnVsbDtcbiAgd2l0aFVkcDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VMaXN0SXRlbSB7XG4gIGRldmljZTogV29ya3NwYWNlRGV2aWNlUmVjb3JkO1xuICBsaW5lczogdW5rbm93bltdO1xuICBzaXRlOiBXb3Jrc3BhY2VTaXRlIHwgbnVsbDtcbiAgd29ya3NwYWNlRGV2aWNlczogV29ya3NwYWNlRGV2aWNlQXNzb2NpYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VzUmVzcG9uc2Uge1xuICB0b3RhbDogbnVtYmVyO1xuICBwYWdlRGF0YTogV29ya3NwYWNlTGlzdEl0ZW1bXTtcbn1cblxuLy8gRGlzcGxheS1mcmllbmRseSBzaGFwZSBjb25zdW1lZCBieSB0aGUgZmlsdGVycy90YWJsZSBjb21wb25lbnRzLlxuXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VTdGF0dXMgPSAnYWN0aXZlJyB8ICdpbmFjdGl2ZScgfCAndW5hdmFpbGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZURldmljZSB7XG4gIGlkOiBzdHJpbmc7XG4gIGtpbmQ6ICdkZXZpY2UnIHwgJ3BlcnNvbic7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGluaXRpYWxzPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgbW9kZWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlc1BhZ2Uge1xuICB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXTtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2Uge1xuICBpZDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICB0eXBlTGFiZWw6IHN0cmluZztcbiAgY2FwYWNpdHk6IG51bWJlciB8IG51bGw7XG4gIGxvY2F0aW9uOiBzdHJpbmc7XG4gIGRldmljZXM6IFdvcmtzcGFjZURldmljZVtdO1xuICBzY2hlZHVsaW5nOiBzdHJpbmc7XG4gIGNhbGxpbmdMaWNlbnNlOiBzdHJpbmc7XG4gIHByb3Zpc2lvbmluZ1R5cGU6IHN0cmluZztcbiAgc3RhdHVzOiBXb3Jrc3BhY2VTdGF0dXM7XG4gIHN0YXR1c0xhYmVsOiBzdHJpbmc7XG4gIGRldmljZTogV29ya3NwYWNlRGV2aWNlUmVjb3JkO1xuICBpc0h5YnJpZDogYm9vbGVhbjtcbn1cblxuLy8gTW9jayBkYXRhIHNob3duIG9uIHRoZSB3b3Jrc3BhY2UgZGV0YWlsIChPdmVydmlldyAvIENhbGxpbmcpIHZpZXcsIHVudGlsIGFcbi8vIGRlZGljYXRlZCBkZXRhaWwgQVBJIGlzIGF2YWlsYWJsZS5cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VJc3N1ZSB7XG4gIGlkOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBzdHJpbmc7XG4gIGFjdGlvbkxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlTG9jYXRpb25EZXRhaWxzIHtcbiAgY291bnRyeTogc3RyaW5nO1xuICBhZGRyZXNzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlQ2FsbGluZ0RldGFpbHMge1xuICBsaWNlbnNlOiBzdHJpbmc7XG4gIHNpcEFkZHJlc3M6IHN0cmluZztcbiAgZGlyZWN0b3J5TnVtYmVyOiBzdHJpbmc7XG4gIHJvdXRlUGFydGl0aW9uOiBzdHJpbmc7XG4gIGNhbGxpbmdTZWFyY2hTcGFjZTogc3RyaW5nO1xuICBzZWN1cml0eVByb2ZpbGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VEZXRhaWxzIHtcbiAgaXNzdWVzOiBXb3Jrc3BhY2VJc3N1ZVtdO1xuICBsb2NhdGlvbjogV29ya3NwYWNlTG9jYXRpb25EZXRhaWxzO1xuICBjYWxsaW5nOiBXb3Jrc3BhY2VDYWxsaW5nRGV0YWlscztcbiAgc2NoZWR1bGluZ0NvbmZpZ3VyZWQ6IGJvb2xlYW47XG4gIHBsYW5uZWRNYWludGVuYW5jZUVuYWJsZWQ6IGJvb2xlYW47XG4gIG5vdGVzOiBzdHJpbmcgfCBudWxsO1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3R5cGVzL3dvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyRUFBMkU7QUFDM0Usd0VBQXdFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUmF3IHNoYXBlcyByZXR1cm5lZCBieSAvYXBpL3NlYXJjaC9xdWlja25vbnVzZXJkZXZpY2VzIChhIHBhZ2luYXRlZCBDVUNNXHJcbi8vIG5vbi11c2VyL3NoYXJlZCBkZXZpY2Ugc2VhcmNoLCByZXVzZWQgaGVyZSBhcyB0aGUgXCJXb3Jrc3BhY2VzXCIgbGlzdCkuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUFzc29jaWF0ZWREaXJlY3RvcnlOdW1iZXIge1xyXG4gIGRpcmVjdG9yeU51bWJlcjogc3RyaW5nO1xyXG4gIHJvdXRlUGFydGl0aW9uTmFtZTogc3RyaW5nO1xyXG4gIHBraWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgZG5UeXBlOiBzdHJpbmcgfCBudWxsO1xyXG4gIHN1YlR5cGU6IHN0cmluZyB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlTGluZUFzc29jaWF0aW9uIHtcclxuICBsaW5lUGtpZDogc3RyaW5nIHwgbnVsbDtcclxuICBpbmRleDogbnVtYmVyIHwgbnVsbDtcclxuICBwb3NpdGlvbjogbnVtYmVyIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VTaXRlIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VEZXZpY2VBc3NvY2lhdGlvbiB7XHJcbiAgZGV2aWNlSWQ6IHN0cmluZztcclxuICBtYWM6IHN0cmluZztcclxuICBtb2RlbDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZURldmljZVJlY29yZCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIG5ld05hbWU6IHN0cmluZztcclxuICBwa2lkOiBzdHJpbmcgfCBudWxsO1xyXG4gIGVudGl0eUNoYW5nZVR5cGU6IHN0cmluZyB8IG51bGw7XHJcbiAgZGV2aWNlVHlwZTogc3RyaW5nIHwgbnVsbDtcclxuICBhY3RpdmVMb2FkSWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgYXNzb2NpYXRlZEROczogV29ya3NwYWNlQXNzb2NpYXRlZERpcmVjdG9yeU51bWJlcltdO1xyXG4gIGF1dGhlbnRpY2F0aW9uTW9kZTogc3RyaW5nIHwgbnVsbDtcclxuICBhdXRoZW50aWNhdGlvblN0cmluZzogc3RyaW5nIHwgbnVsbDtcclxuICBidWlsdEluQnJpZGdlOiBzdHJpbmcgfCBudWxsO1xyXG4gIGJ1c3lMYW1wRmllbGRzOiB1bmtub3duW107XHJcbiAgYnV0dG9uVGVtcGxhdGU6IHN0cmluZyB8IG51bGw7XHJcbiAgY2FsbGluZ1NlYXJjaFNwYWNlTmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICBjZXJ0aWZpY2F0ZU9wZXJhdGlvbjogc3RyaW5nIHwgbnVsbDtcclxuICBjZXJ0aWZpY2F0ZVN0YXR1czogc3RyaW5nIHwgbnVsbDtcclxuICBjaGFuZ2VkTGluZUFwcEVudGl0eTogc3RyaW5nIHwgbnVsbDtcclxuICBjaGFuZ2VkTWVldE1lRW50aXR5OiBzdHJpbmcgfCBudWxsO1xyXG4gIGNvbW1vblBob25lQ29uZmlnTmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICBjdGlSZW1vdGVEZXZpY2U6IGJvb2xlYW47XHJcbiAgY3VjbUlkOiBzdHJpbmcgfCBudWxsO1xyXG4gIGN1c3RvbWVySWQ6IG51bWJlcjtcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgbnVsbDtcclxuICBkZXZpY2VQb29sTmFtZTogc3RyaW5nIHwgbnVsbDtcclxuICBkZXZpY2VSZWdTdGF0dXM6IHN0cmluZyB8IG51bGw7XHJcbiAgZGV2aWNlU2VjdXJpdHlNb2RlOiBzdHJpbmcgfCBudWxsO1xyXG4gIGVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eTogYm9vbGVhbjtcclxuICBleGNsdWRlRGV2aWNlRXh0cmFPcHRpb25zOiBib29sZWFuO1xyXG4gIGV4dHJhT3B0aW9uczogdW5rbm93biB8IG51bGw7XHJcbiAgZmlybXdhcmVWZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xyXG4gIGZpcnN0RXhwYW5zaW9uTW9kdWxlOiBzdHJpbmcgfCBudWxsO1xyXG4gIGludGVyY29tTGluZUFzc29jaWF0aW9uczogdW5rbm93bltdO1xyXG4gIGlwQWRkcmVzczogc3RyaW5nIHwgbnVsbDtcclxuICBsYXN0UmVnVGltZTogc3RyaW5nIHwgbnVsbDtcclxuICBsaW5lQXNzb2NpYXRpb25zOiBXb3Jrc3BhY2VMaW5lQXNzb2NpYXRpb25bXTtcclxuICBsaW5lczogdW5rbm93bltdO1xyXG4gIGxvY2F0aW9uOiBzdHJpbmcgfCBudWxsO1xyXG4gIG1lZXRNZUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgbmV0d29ya0xvY2FsZTogc3RyaW5nIHwgbnVsbDtcclxuICBvcGVyYXRpb25Db21wbGV0ZXNCeTogc3RyaW5nIHwgbnVsbDtcclxuICBvd25lclVzZXJJZDogc3RyaW5nIHwgbnVsbDtcclxuICBwbGFyRGV2aWNlOiBib29sZWFuO1xyXG4gIHByb3RvY29sOiBzdHJpbmcgfCBudWxsO1xyXG4gIHByb3Zpc2lvbmluZ1N0YXR1czogc3RyaW5nIHwgbnVsbDtcclxuICByZXJvdXRpbmdDc3M6IHN0cmluZyB8IG51bGw7XHJcbiAgcnNhS2V5U2l6ZTogc3RyaW5nIHwgbnVsbDtcclxuICBzZWNvbmRFeHBhbnNpb25Nb2R1bGU6IHN0cmluZyB8IG51bGw7XHJcbiAgc2VjdXJpdHlQcm9maWxlOiBzdHJpbmcgfCBudWxsO1xyXG4gIHNlY3VyaXR5UHJvZmlsZVV1aWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgc2VsZWN0ZWREZXZpY2VzQWFyU2V0dGluZ3M6IHVua25vd25bXTtcclxuICBzZWxlY3RlZERldmljZXNBZGRpdGlvbmFsSW5mb3M6IHVua25vd25bXTtcclxuICBzZWxlY3RlZERldmljZXNEbmRTZXR0aW5nczogdW5rbm93bltdO1xyXG4gIHNlbGVjdGVkRGV2aWNlc0V4dGVybmFsRGF0YUxvY2F0aW9uczogdW5rbm93bltdO1xyXG4gIHNlbGVjdGVkRGV2aWNlc0dlbmVyYWxJbmZvczogdW5rbm93bltdO1xyXG4gIHNlbGVjdGVkRGV2aWNlc01lZGlhU2V0dGluZ3M6IHVua25vd25bXTtcclxuICBzZWxlY3RlZERldmljZXNNbHBwSW5mb3M6IHVua25vd25bXTtcclxuICBzZWxlY3RlZERldmljZXNOdW1iZXJQcmVzZW50YXRpb25zOiB1bmtub3duW107XHJcbiAgc2VsZWN0ZWREZXZpY2VzUGhvbmVTcGVjaWZpY3M6IHVua25vd25bXTtcclxuICBzZWxlY3RlZERldmljZXNQcm90b2NvbFNwZWNpZmljczogdW5rbm93bltdO1xyXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcclxuICBzZXJ2aWNlczogc3RyaW5nW107XHJcbiAgc2hhcmVkVXNlcnM6IHN0cmluZ1tdO1xyXG4gIHNpcFByb2ZpbGU6IHN0cmluZyB8IG51bGw7XHJcbiAgc2l0ZUlkOiBudW1iZXI7XHJcbiAgc2l0ZU5hbWU6IHN0cmluZyB8IG51bGw7XHJcbiAgc29mdGtleVRlbXBsYXRlOiBzdHJpbmcgfCBudWxsO1xyXG4gIHNwZWVkRGlhbHM6IHVua25vd25bXTtcclxuICBzdWJzY3JpYmVDYWxsaW5nU2VhcmNoU3BhY2VOYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIHRoaXJkRXhwYW5zaW9uTW9kdWxlOiBzdHJpbmcgfCBudWxsO1xyXG4gIHVuU3VwcG9ydGVkRm9yU0Q6IHVua25vd24gfCBudWxsO1xyXG4gIHVzZXJEZXZpY2VUeXBlOiBzdHJpbmcgfCBudWxsO1xyXG4gIHVzZXJMb2NhbGU6IHN0cmluZyB8IG51bGw7XHJcbiAgdm9pY2VtYWlsRW5hYmxlZDogYm9vbGVhbjtcclxuICB3ZWJleFVVSUQ6IHN0cmluZyB8IG51bGw7XHJcbiAgd2l0aFVkcDogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VMaXN0SXRlbSB7XHJcbiAgZGV2aWNlOiBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQ7XHJcbiAgbGluZXM6IHVua25vd25bXTtcclxuICBzaXRlOiBXb3Jrc3BhY2VTaXRlIHwgbnVsbDtcclxuICB3b3Jrc3BhY2VEZXZpY2VzOiBXb3Jrc3BhY2VEZXZpY2VBc3NvY2lhdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZXNSZXNwb25zZSB7XHJcbiAgdG90YWw6IG51bWJlcjtcclxuICBwYWdlRGF0YTogV29ya3NwYWNlTGlzdEl0ZW1bXTtcclxufVxyXG5cclxuLy8gRGlzcGxheS1mcmllbmRseSBzaGFwZSBjb25zdW1lZCBieSB0aGUgZmlsdGVycy90YWJsZSBjb21wb25lbnRzLlxyXG5cclxuZXhwb3J0IHR5cGUgV29ya3NwYWNlU3RhdHVzID0gJ2FjdGl2ZScgfCAnaW5hY3RpdmUnIHwgJ3VuYXZhaWxhYmxlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlRGV2aWNlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGtpbmQ6ICdkZXZpY2UnIHwgJ3BlcnNvbic7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpbml0aWFscz86IHN0cmluZztcclxuICBjb2xvcj86IHN0cmluZztcclxuICBtb2RlbD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VzUGFnZSB7XHJcbiAgd29ya3NwYWNlczogV29ya3NwYWNlW107XHJcbiAgdG90YWw6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2Uge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcclxuICB0eXBlTGFiZWw6IHN0cmluZztcclxuICBjYXBhY2l0eTogbnVtYmVyIHwgbnVsbDtcclxuICBsb2NhdGlvbjogc3RyaW5nO1xyXG4gIGRldmljZXM6IFdvcmtzcGFjZURldmljZVtdO1xyXG4gIHNjaGVkdWxpbmc6IHN0cmluZztcclxuICBjYWxsaW5nTGljZW5zZTogc3RyaW5nO1xyXG4gIHByb3Zpc2lvbmluZ1R5cGU6IHN0cmluZztcclxuICBzdGF0dXM6IFdvcmtzcGFjZVN0YXR1cztcclxuICBzdGF0dXNMYWJlbDogc3RyaW5nO1xyXG4gIGRldmljZTogV29ya3NwYWNlRGV2aWNlUmVjb3JkO1xyXG4gIGlzSHlicmlkOiBib29sZWFuO1xyXG59XHJcblxyXG4vLyBNb2NrIGRhdGEgc2hvd24gb24gdGhlIHdvcmtzcGFjZSBkZXRhaWwgKE92ZXJ2aWV3IC8gQ2FsbGluZykgdmlldywgdW50aWwgYVxyXG4vLyBkZWRpY2F0ZWQgZGV0YWlsIEFQSSBpcyBhdmFpbGFibGUuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUlzc3VlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICB0aW1lc3RhbXA6IHN0cmluZztcclxuICBhY3Rpb25MYWJlbDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUxvY2F0aW9uRGV0YWlscyB7XHJcbiAgY291bnRyeTogc3RyaW5nO1xyXG4gIGFkZHJlc3M6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VDYWxsaW5nRGV0YWlscyB7XHJcbiAgbGljZW5zZTogc3RyaW5nO1xyXG4gIHNpcEFkZHJlc3M6IHN0cmluZztcclxuICBkaXJlY3RvcnlOdW1iZXI6IHN0cmluZztcclxuICByb3V0ZVBhcnRpdGlvbjogc3RyaW5nO1xyXG4gIGNhbGxpbmdTZWFyY2hTcGFjZTogc3RyaW5nO1xyXG4gIHNlY3VyaXR5UHJvZmlsZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZURldGFpbHMge1xyXG4gIGlzc3VlczogV29ya3NwYWNlSXNzdWVbXTtcclxuICBsb2NhdGlvbjogV29ya3NwYWNlTG9jYXRpb25EZXRhaWxzO1xyXG4gIGNhbGxpbmc6IFdvcmtzcGFjZUNhbGxpbmdEZXRhaWxzO1xyXG4gIHNjaGVkdWxpbmdDb25maWd1cmVkOiBib29sZWFuO1xyXG4gIHBsYW5uZWRNYWludGVuYW5jZUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgbm90ZXM6IHN0cmluZyB8IG51bGw7XHJcbn1cclxuIl19
@@ -6,9 +6,9 @@ export class AppLoaderComponent {
6
6
  }
7
7
  }
8
8
  AppLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"70\"\n strokeWidth=\"3\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"], dependencies: [{ kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
9
+ AppLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AppLoaderComponent, selector: "app-loader", ngImport: i0, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"], dependencies: [{ kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }], encapsulation: i0.ViewEncapsulation.None });
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppLoaderComponent, decorators: [{
11
11
  type: Component,
12
- args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\n <mat-progress-spinner\n class=\"page-spinner\"\n mode=\"indeterminate\"\n [diameter]=\"70\"\n strokeWidth=\"3\"></mat-progress-spinner>\n</div>\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"] }]
12
+ args: [{ selector: 'app-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"70\"\r\n strokeWidth=\"3\"></mat-progress-spinner>\r\n</div>\r\n", styles: [".overlay{position:fixed;width:100%;height:100%;inset:0;background-color:#fff3;z-index:200}.mat-progress-spinner circle,.mat-spinner circle{stroke:#000!important}\n"] }]
13
13
  }], ctorParameters: function () { return []; } });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy91dGlscy9hcHAtbG9hZGVyL2FwcC1sb2FkZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvdXRpbHMvYXBwLWxvYWRlci9hcHAtbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVE3RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCO0lBQ0EsQ0FBQzs7Z0hBRlUsa0JBQWtCO29HQUFsQixrQkFBa0Isa0RDUi9CLDBMQU9BOzRGRENhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxZQUFZLGlCQUdQLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2FkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXBwLWxvYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC1sb2FkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwTG9hZGVyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm92ZXJsYXlcIj5cbiAgPG1hdC1wcm9ncmVzcy1zcGlubmVyXG4gICAgY2xhc3M9XCJwYWdlLXNwaW5uZXJcIlxuICAgIG1vZGU9XCJpbmRldGVybWluYXRlXCJcbiAgICBbZGlhbWV0ZXJdPVwiNzBcIlxuICAgIHN0cm9rZVdpZHRoPVwiM1wiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XG48L2Rpdj5cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3NyYy91dGlscy9hcHAtbG9hZGVyL2FwcC1sb2FkZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvdXRpbHMvYXBwLWxvYWRlci9hcHAtbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVE3RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCO0lBQ0EsQ0FBQzs7Z0hBRlUsa0JBQWtCO29HQUFsQixrQkFBa0Isa0RDUi9CLHdNQU9BOzRGRENhLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxZQUFZLGlCQUdQLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1sb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hcHAtbG9hZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcExvYWRlckNvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxyXG4gIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgY2xhc3M9XCJwYWdlLXNwaW5uZXJcIlxyXG4gICAgbW9kZT1cImluZGV0ZXJtaW5hdGVcIlxyXG4gICAgW2RpYW1ldGVyXT1cIjcwXCJcclxuICAgIHN0cm9rZVdpZHRoPVwiM1wiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -10,4 +10,4 @@ export function getDeviceIcon(model) {
10
10
  }
11
11
  return DEVICE_MODEL_ICONS[model.trim().toLowerCase()] ?? DEFAULT_DEVICE_ICON;
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWljb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvdXRpbHMvZGV2aWNlLWljb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxtQkFBbUIsR0FBRyw2QkFBNkIsQ0FBQztBQUUxRCxNQUFNLGtCQUFrQixHQUEyQjtJQUNqRCxZQUFZLEVBQUUsNkJBQTZCO0lBQzNDLFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsWUFBWSxFQUFFLDZCQUE2QjtDQUM1QyxDQUFDO0FBRUYsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFjO0lBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLG1CQUFtQixDQUFDO0tBQzVCO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgREVGQVVMVF9ERVZJQ0VfSUNPTiA9ICdhc3NldHMvaWNvbnMvY2lzY29fODg1MS5wbmcnO1xuXG5jb25zdCBERVZJQ0VfTU9ERUxfSUNPTlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdjaXNjbyA4ODUxJzogJ2Fzc2V0cy9pY29ucy9jaXNjb184ODUxLnBuZycsXG4gICdjaXNjbyA4ODQ1JzogJ2Fzc2V0cy9pY29ucy9jaXNjb184ODQ1LnBuZycsXG4gICdjaXNjbyA5ODQxJzogJ2Fzc2V0cy9pY29ucy9jaXNjb185ODQxLnBuZycsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGV2aWNlSWNvbihtb2RlbD86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghbW9kZWwpIHtcbiAgICByZXR1cm4gREVGQVVMVF9ERVZJQ0VfSUNPTjtcbiAgfVxuICByZXR1cm4gREVWSUNFX01PREVMX0lDT05TW21vZGVsLnRyaW0oKS50b0xvd2VyQ2FzZSgpXSA/PyBERUZBVUxUX0RFVklDRV9JQ09OO1xufVxuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWljb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvdXRpbHMvZGV2aWNlLWljb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxtQkFBbUIsR0FBRyw2QkFBNkIsQ0FBQztBQUUxRCxNQUFNLGtCQUFrQixHQUEyQjtJQUNqRCxZQUFZLEVBQUUsNkJBQTZCO0lBQzNDLFlBQVksRUFBRSw2QkFBNkI7SUFDM0MsWUFBWSxFQUFFLDZCQUE2QjtDQUM1QyxDQUFDO0FBRUYsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFjO0lBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLG1CQUFtQixDQUFDO0tBQzVCO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQztBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgREVGQVVMVF9ERVZJQ0VfSUNPTiA9ICdhc3NldHMvaWNvbnMvY2lzY29fODg1MS5wbmcnO1xyXG5cclxuY29uc3QgREVWSUNFX01PREVMX0lDT05TOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICdjaXNjbyA4ODUxJzogJ2Fzc2V0cy9pY29ucy9jaXNjb184ODUxLnBuZycsXHJcbiAgJ2Npc2NvIDg4NDUnOiAnYXNzZXRzL2ljb25zL2Npc2NvXzg4NDUucG5nJyxcclxuICAnY2lzY28gOTg0MSc6ICdhc3NldHMvaWNvbnMvY2lzY29fOTg0MS5wbmcnLFxyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERldmljZUljb24obW9kZWw/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGlmICghbW9kZWwpIHtcclxuICAgIHJldHVybiBERUZBVUxUX0RFVklDRV9JQ09OO1xyXG4gIH1cclxuICByZXR1cm4gREVWSUNFX01PREVMX0lDT05TW21vZGVsLnRyaW0oKS50b0xvd2VyQ2FzZSgpXSA/PyBERUZBVUxUX0RFVklDRV9JQ09OO1xyXG59XHJcbiJdfQ==
@@ -1,21 +1,27 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { map, switchMap, takeWhile, timer } from 'rxjs';
3
+ import { WorkspaceConfirmDialogComponent } from './components/workspace-confirm-dialog/workspace-confirm-dialog.component';
2
4
  import * as i0 from "@angular/core";
3
5
  import * as i1 from "./services/api.service";
4
- import * as i2 from "./services/workspaces.service";
5
- import * as i3 from "@angular/common";
6
- import * as i4 from "./components/workspaces-filters/workspaces-filters.component";
7
- import * as i5 from "./components/workspaces-table/workspaces-table.component";
8
- import * as i6 from "./components/workspace-detail/workspace-detail.component";
9
- import * as i7 from "./utils/app-loader/app-loader";
6
+ import * as i2 from "./services/api-webex.service";
7
+ import * as i3 from "./services/workspaces.service";
8
+ import * as i4 from "./services/workspaces-migration.service";
9
+ import * as i5 from "@angular/material/dialog";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "./components/workspaces-filters/workspaces-filters.component";
12
+ import * as i8 from "./components/workspaces-table/workspaces-table.component";
13
+ import * as i9 from "./components/workspace-detail/workspace-detail.component";
14
+ import * as i10 from "./utils/app-loader/app-loader";
10
15
  export class WorkspacesComponent {
11
- constructor(apiService, workspacesService, location) {
16
+ constructor(apiService, apiWebexService, workspacesService, migrationService, dialog, location) {
12
17
  this.apiService = apiService;
18
+ this.apiWebexService = apiWebexService;
13
19
  this.workspacesService = workspacesService;
20
+ this.migrationService = migrationService;
21
+ this.dialog = dialog;
14
22
  this.location = location;
15
23
  this.addWorkspace = new EventEmitter();
16
24
  this.openWorkspace = new EventEmitter();
17
- this.editWorkspace = new EventEmitter();
18
- this.deleteWorkspace = new EventEmitter();
19
25
  this.addDevice = new EventEmitter();
20
26
  this.tabs = [
21
27
  { id: 'workspaces', label: 'Workspaces', icon: 'assets/icons/device-in-room-regular.svg' },
@@ -34,12 +40,19 @@ export class WorkspacesComponent {
34
40
  this.searchTerm = '';
35
41
  this.typeFilter = '';
36
42
  this.locationFilter = '';
43
+ this.pendingWorkspaceIds = new Set();
44
+ this.subscriptions = [];
37
45
  }
38
46
  ngOnInit() {
39
47
  this.apiService.token = this.token;
40
48
  this.apiService.apiUrl = this.host + '/dcp';
49
+ this.apiWebexService.token = this.token;
50
+ this.apiWebexService.apiUrl = this.host + '/webex';
41
51
  this.fetchWorkspaces();
42
52
  }
53
+ ngOnDestroy() {
54
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
55
+ }
43
56
  get typeOptions() {
44
57
  return [...new Set(this.workspaces.map(workspace => workspace.typeLabel).filter(Boolean))];
45
58
  }
@@ -83,6 +96,168 @@ export class WorkspacesComponent {
83
96
  this.pageSize = pageSize;
84
97
  this.fetchWorkspaces();
85
98
  }
99
+ onMoveToMT(workspace) {
100
+ const dialogRef = this.dialog.open(WorkspaceConfirmDialogComponent, {
101
+ data: {
102
+ title: `Upgrade workspace ${workspace.displayName} to Multi Tenant?`,
103
+ message: `<p>Upgrading this workspace will prepare it for migration to Multi Tenant.</p>
104
+ <p>During this process, the workspace configuration will be copied to the Multi Tenant environment.
105
+ The workspace will remain active on the current system until the Activate step is completed.</p>
106
+ <p>Do you want to continue?</p>`,
107
+ confirmButtonText: 'Yes, upgrade',
108
+ },
109
+ });
110
+ dialogRef.beforeClosed().subscribe((result) => {
111
+ if (!result) {
112
+ return;
113
+ }
114
+ this.pendingWorkspaceIds.add(workspace.id);
115
+ const subscription = this.migrationService.moveToMT(this.customerId, workspace.device).subscribe({
116
+ next: (formId) => {
117
+ if (formId) {
118
+ this.pollMigrationFormStatus(Number(formId), workspace.id);
119
+ }
120
+ else {
121
+ this.pendingWorkspaceIds.delete(workspace.id);
122
+ this.fetchWorkspaces();
123
+ }
124
+ },
125
+ error: () => {
126
+ this.pendingWorkspaceIds.delete(workspace.id);
127
+ this.fetchWorkspaces();
128
+ },
129
+ });
130
+ this.subscriptions.push(subscription);
131
+ });
132
+ }
133
+ onEnableWebexCalling(workspace) {
134
+ const device = workspace.device;
135
+ if (!device.webexUUID || workspace.status !== 'inactive') {
136
+ return;
137
+ }
138
+ const dialogRef = this.dialog.open(WorkspaceConfirmDialogComponent, {
139
+ data: {
140
+ title: `Activate workspace ${workspace.displayName} on Multi Tenant?`,
141
+ message: `<p>Activating this workspace will perform the cutover to Multi Tenant and complete the migration process.</p>
142
+ <p>After activation, the workspace will become active on Multi Tenant and the original workspace will become inactive.</p>
143
+ <p>Do you want to continue?</p>`,
144
+ confirmButtonText: 'Activate',
145
+ },
146
+ });
147
+ dialogRef.beforeClosed().subscribe((result) => {
148
+ if (!result) {
149
+ return;
150
+ }
151
+ this.pendingWorkspaceIds.add(workspace.id);
152
+ const subscription = this.migrationService
153
+ .getMigratedMigrationFormEntities(this.customerId, device.webexUUID, 'PERSON')
154
+ .pipe(map((entities) => (Array.isArray(entities) ? entities[0] : entities || null)))
155
+ .subscribe({
156
+ next: (entity) => {
157
+ const formId = entity?.migrationFormId ?? entity?.id ?? null;
158
+ if (!formId) {
159
+ this.pendingWorkspaceIds.delete(workspace.id);
160
+ return;
161
+ }
162
+ const deviceMap = this.buildFirmwareDeviceMap(entity, device);
163
+ const upgradeSubscription = this.migrationService
164
+ .triggerFirmwareUpgrade(this.customerId, Number(formId), deviceMap)
165
+ .subscribe({
166
+ next: () => {
167
+ window.setTimeout(() => {
168
+ this.pollMigrationFormStatus(Number(formId), workspace.id, () => {
169
+ this.migrationService.removeUcmLicense(this.customerId, Number(formId)).subscribe();
170
+ });
171
+ }, 10000);
172
+ },
173
+ error: () => {
174
+ this.pendingWorkspaceIds.delete(workspace.id);
175
+ this.fetchWorkspaces();
176
+ },
177
+ });
178
+ this.subscriptions.push(upgradeSubscription);
179
+ },
180
+ error: () => {
181
+ this.pendingWorkspaceIds.delete(workspace.id);
182
+ },
183
+ });
184
+ this.subscriptions.push(subscription);
185
+ });
186
+ }
187
+ onMigrateToUCM(workspace) {
188
+ const device = workspace.device;
189
+ if (!device.webexUUID || workspace.status !== 'active') {
190
+ return;
191
+ }
192
+ this.pendingWorkspaceIds.add(workspace.id);
193
+ const subscription = this.migrationService
194
+ .revertMigration(this.customerId, device.webexUUID)
195
+ .pipe(switchMap(() => timer(2000)))
196
+ .subscribe({
197
+ next: () => {
198
+ this.pendingWorkspaceIds.delete(workspace.id);
199
+ this.fetchWorkspaces();
200
+ },
201
+ error: () => {
202
+ this.pendingWorkspaceIds.delete(workspace.id);
203
+ this.fetchWorkspaces();
204
+ },
205
+ });
206
+ this.subscriptions.push(subscription);
207
+ }
208
+ pollMigrationFormStatus(formId, workspaceId, onCompleted) {
209
+ const subscription = timer(0, 10000)
210
+ .pipe(switchMap(() => this.migrationService.getMigrationFormStatus(this.customerId, formId)), takeWhile((response) => !this.isTerminalMigrationStatus(response?.status), true))
211
+ .subscribe({
212
+ next: (response) => {
213
+ const status = this.normalizeMigrationStatus(response?.status);
214
+ if (!this.isTerminalMigrationStatus(status)) {
215
+ return;
216
+ }
217
+ this.pendingWorkspaceIds.delete(workspaceId);
218
+ this.fetchWorkspaces();
219
+ if (status === 'COMPLETED') {
220
+ onCompleted?.();
221
+ }
222
+ },
223
+ error: () => {
224
+ this.pendingWorkspaceIds.delete(workspaceId);
225
+ this.fetchWorkspaces();
226
+ },
227
+ });
228
+ this.subscriptions.push(subscription);
229
+ }
230
+ buildFirmwareDeviceMap(entity, device) {
231
+ const deviceMap = {};
232
+ const entityDevices = [
233
+ ...(Array.isArray(entity?.devices) ? entity.devices : []),
234
+ ...(Array.isArray(entity?.webexMigrationDevices) ? entity.webexMigrationDevices : []),
235
+ ];
236
+ const sourceDevices = entityDevices.length ? entityDevices : [device];
237
+ const cucmId = Number(device.cucmId) || 0;
238
+ sourceDevices.forEach((rawDevice) => {
239
+ const name = rawDevice?.name || device.name || '';
240
+ if (!name) {
241
+ return;
242
+ }
243
+ const deviceName = name.includes('SEP') ? name : `SEP${name}`;
244
+ if (!deviceMap[cucmId]) {
245
+ deviceMap[cucmId] = {};
246
+ }
247
+ if (!deviceMap[cucmId]['PERSON']) {
248
+ deviceMap[cucmId]['PERSON'] = [];
249
+ }
250
+ deviceMap[cucmId]['PERSON'].push(deviceName);
251
+ });
252
+ return deviceMap;
253
+ }
254
+ normalizeMigrationStatus(status) {
255
+ return (status || '').toUpperCase();
256
+ }
257
+ isTerminalMigrationStatus(status) {
258
+ const normalized = this.normalizeMigrationStatus(status);
259
+ return normalized === 'COMPLETED' || normalized === 'FAILED' || normalized === 'ERROR' || normalized === 'COMPLETED_WITH_ERRORS';
260
+ }
86
261
  fetchWorkspaces() {
87
262
  this.isLoading = true;
88
263
  this.workspacesService.fetchWorkspaces(this.customerId, this.pageSize, this.pageIndex).subscribe({
@@ -99,12 +274,12 @@ export class WorkspacesComponent {
99
274
  });
100
275
  }
101
276
  }
102
- WorkspacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, deps: [{ token: i1.APIService }, { token: i2.WorkspacesService }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
103
- WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", editWorkspace: "editWorkspace", deleteWorkspace: "deleteWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<div class=\"tk-workspaces\">\n <ng-container *ngIf=\"view === 'list'; else detailView\">\n <header class=\"tk-workspaces__header\">\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\n </header>\n\n <nav class=\"tk-workspaces__tabs\">\n <button\n type=\"button\"\n *ngFor=\"let tab of tabs\"\n class=\"tk-workspaces__tab\"\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\n (click)=\"selectTab(tab.id)\">\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\n {{ tab.label }}\n </button>\n </nav>\n\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\n <app-loader *ngIf=\"isLoading\"></app-loader>\n\n <tk-workspaces-filters\n [resultCount]=\"total\"\n [typeOptions]=\"typeOptions\"\n [locationOptions]=\"locationOptions\"\n (searchChange)=\"onSearchChange($event)\"\n (typeChange)=\"onTypeFilterChange($event)\"\n (locationChange)=\"onLocationFilterChange($event)\"\n (addWorkspace)=\"addWorkspace.emit()\">\n </tk-workspaces-filters>\n\n <tk-workspaces-table\n [workspaces]=\"filteredWorkspaces\"\n [total]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n (openWorkspace)=\"onOpenWorkspace($event)\"\n (editWorkspace)=\"editWorkspace.emit($event)\"\n (deleteWorkspace)=\"deleteWorkspace.emit($event)\"\n (addDevice)=\"addDevice.emit($event)\"\n (pageChange)=\"onPageChange($event)\">\n </tk-workspaces-table>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\n </ng-template>\n </ng-container>\n\n <ng-template #detailView>\n <tk-workspace-detail\n *ngIf=\"selectedWorkspace\"\n [workspace]=\"selectedWorkspace\"\n (back)=\"onBackToList()\">\n </tk-workspace-detail>\n </ng-template>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: ["resultCount", "typeOptions", "locationOptions"], outputs: ["searchChange", "typeChange", "locationChange", "addWorkspace"] }, { kind: "component", type: i5.WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: ["workspaces", "total", "pageIndex", "pageSize", "pageSizeOptions"], outputs: ["openWorkspace", "editWorkspace", "deleteWorkspace", "addDevice", "pageChange"] }, { kind: "component", type: i6.WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: ["workspace"], outputs: ["back"] }, { kind: "component", type: i7.AppLoaderComponent, selector: "app-loader" }] });
277
+ WorkspacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, deps: [{ token: i1.APIService }, { token: i2.ApiWebexService }, { token: i3.WorkspacesService }, { token: i4.WorkspacesMigrationService }, { token: i5.MatDialog }, { token: i6.Location }], target: i0.ɵɵFactoryTarget.Component });
278
+ WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (licenseWithHybrid)=\"onMoveToMT($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: ["resultCount", "typeOptions", "locationOptions"], outputs: ["searchChange", "typeChange", "locationChange", "addWorkspace"] }, { kind: "component", type: i8.WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: ["workspaces", "total", "pageIndex", "pageSize", "pageSizeOptions", "pendingWorkspaceIds"], outputs: ["openWorkspace", "licenseWithHybrid", "migrateToMT", "enableWebexCalling", "migrateToUCM", "addDevice", "pageChange"] }, { kind: "component", type: i9.WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: ["workspace"], outputs: ["back"] }, { kind: "component", type: i10.AppLoaderComponent, selector: "app-loader" }] });
104
279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, decorators: [{
105
280
  type: Component,
106
- args: [{ selector: 'tk-workspaces', template: "<div class=\"tk-workspaces\">\n <ng-container *ngIf=\"view === 'list'; else detailView\">\n <header class=\"tk-workspaces__header\">\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\n </header>\n\n <nav class=\"tk-workspaces__tabs\">\n <button\n type=\"button\"\n *ngFor=\"let tab of tabs\"\n class=\"tk-workspaces__tab\"\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\n (click)=\"selectTab(tab.id)\">\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\n {{ tab.label }}\n </button>\n </nav>\n\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\n <app-loader *ngIf=\"isLoading\"></app-loader>\n\n <tk-workspaces-filters\n [resultCount]=\"total\"\n [typeOptions]=\"typeOptions\"\n [locationOptions]=\"locationOptions\"\n (searchChange)=\"onSearchChange($event)\"\n (typeChange)=\"onTypeFilterChange($event)\"\n (locationChange)=\"onLocationFilterChange($event)\"\n (addWorkspace)=\"addWorkspace.emit()\">\n </tk-workspaces-filters>\n\n <tk-workspaces-table\n [workspaces]=\"filteredWorkspaces\"\n [total]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n (openWorkspace)=\"onOpenWorkspace($event)\"\n (editWorkspace)=\"editWorkspace.emit($event)\"\n (deleteWorkspace)=\"deleteWorkspace.emit($event)\"\n (addDevice)=\"addDevice.emit($event)\"\n (pageChange)=\"onPageChange($event)\">\n </tk-workspaces-table>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\n </ng-template>\n </ng-container>\n\n <ng-template #detailView>\n <tk-workspace-detail\n *ngIf=\"selectedWorkspace\"\n [workspace]=\"selectedWorkspace\"\n (back)=\"onBackToList()\">\n </tk-workspace-detail>\n </ng-template>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"] }]
107
- }], ctorParameters: function () { return [{ type: i1.APIService }, { type: i2.WorkspacesService }, { type: i3.Location }]; }, propDecorators: { host: [{
281
+ args: [{ selector: 'tk-workspaces', template: "<div class=\"tk-workspaces\">\r\n <ng-container *ngIf=\"view === 'list'; else detailView\">\r\n <header class=\"tk-workspaces__header\">\r\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\r\n </header>\r\n\r\n <nav class=\"tk-workspaces__tabs\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let tab of tabs\"\r\n class=\"tk-workspaces__tab\"\r\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\r\n (click)=\"selectTab(tab.id)\">\r\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\r\n {{ tab.label }}\r\n </button>\r\n </nav>\r\n\r\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\r\n <app-loader *ngIf=\"isLoading\"></app-loader>\r\n\r\n <tk-workspaces-filters\r\n [resultCount]=\"total\"\r\n [typeOptions]=\"typeOptions\"\r\n [locationOptions]=\"locationOptions\"\r\n (searchChange)=\"onSearchChange($event)\"\r\n (typeChange)=\"onTypeFilterChange($event)\"\r\n (locationChange)=\"onLocationFilterChange($event)\"\r\n (addWorkspace)=\"addWorkspace.emit()\">\r\n </tk-workspaces-filters>\r\n\r\n <tk-workspaces-table\r\n [workspaces]=\"filteredWorkspaces\"\r\n [total]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\r\n (openWorkspace)=\"onOpenWorkspace($event)\"\r\n (licenseWithHybrid)=\"onMoveToMT($event)\"\r\n (migrateToMT)=\"onMoveToMT($event)\"\r\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\r\n (migrateToUCM)=\"onMigrateToUCM($event)\"\r\n (addDevice)=\"addDevice.emit($event)\"\r\n (pageChange)=\"onPageChange($event)\">\r\n </tk-workspaces-table>\r\n </ng-container>\r\n\r\n <ng-template #placeholder>\r\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #detailView>\r\n <tk-workspace-detail\r\n *ngIf=\"selectedWorkspace\"\r\n [workspace]=\"selectedWorkspace\"\r\n (back)=\"onBackToList()\">\r\n </tk-workspace-detail>\r\n </ng-template>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"] }]
282
+ }], ctorParameters: function () { return [{ type: i1.APIService }, { type: i2.ApiWebexService }, { type: i3.WorkspacesService }, { type: i4.WorkspacesMigrationService }, { type: i5.MatDialog }, { type: i6.Location }]; }, propDecorators: { host: [{
108
283
  type: Input
109
284
  }], token: [{
110
285
  type: Input
@@ -114,11 +289,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
114
289
  type: Output
115
290
  }], openWorkspace: [{
116
291
  type: Output
117
- }], editWorkspace: [{
118
- type: Output
119
- }], deleteWorkspace: [{
120
- type: Output
121
292
  }], addDevice: [{
122
293
  type: Output
123
294
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFvQi9FLE1BQU0sT0FBTyxtQkFBbUI7SUFrQzlCLFlBQ1UsVUFBc0IsRUFDdEIsaUJBQW9DLEVBQ3BDLFFBQWtCO1FBRmxCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBaENsQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDN0MsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFeEMsU0FBSSxHQUE4QjtZQUN6QyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUseUNBQXlDLEVBQUU7WUFDMUYsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLG1DQUFtQyxFQUFFO1lBQ2hGLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSx1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LElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztpSEFySFUsbUJBQW1CO3FHQUFuQixtQkFBbUIsZ1NDckJoQyx1K0RBeURBOzRGRHBDYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsZUFBZTt3SkFLaEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtzcGFjZXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93b3Jrc3BhY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya3NwYWNlIH0gZnJvbSAnLi90eXBlcy93b3Jrc3BhY2UnO1xuXG50eXBlIFdvcmtzcGFjZXNWaWV3ID0gJ2xpc3QnIHwgJ2RldGFpbCc7XG5cbnR5cGUgV29ya3NwYWNlc1RhYiA9ICd3b3Jrc3BhY2VzJyB8ICdpbnNpZ2h0cycgfCAnaW50ZWdyYXRpb25zJyB8ICdzZXR0aW5ncyc7XG5cbmludGVyZmFjZSBXb3Jrc3BhY2VzVGFiRGVmaW5pdGlvbiB7XG4gIGlkOiBXb3Jrc3BhY2VzVGFiO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RrLXdvcmtzcGFjZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtzcGFjZXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGhvc3QhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21lcklkITogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBhZGRXb3Jrc3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvcGVuV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBlZGl0V29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGVXb3Jrc3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGFkZERldmljZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IHRhYnM6IFdvcmtzcGFjZXNUYWJEZWZpbml0aW9uW10gPSBbXG4gICAgeyBpZDogJ3dvcmtzcGFjZXMnLCBsYWJlbDogJ1dvcmtzcGFjZXMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2RldmljZS1pbi1yb29tLXJlZ3VsYXIuc3ZnJyB9LFxuICAgIHsgaWQ6ICdpbnNpZ2h0cycsIGxhYmVsOiAnSW5zaWdodHMnLCBpY29uOiAnYXNzZXRzL2ljb25zL2FuYWx5c2lzLXJlZ3VsYXIuc3ZnJyB9LFxuICAgIHsgaWQ6ICdpbnRlZ3JhdGlvbnMnLCBsYWJlbDogJ0ludGVncmF0aW9ucycsIGljb246ICdhc3NldHMvaWNvbnMvaW50ZWdyYXRpb25zLXJlZ3VsYXIuc3ZnJyB9LFxuICAgIHsgaWQ6ICdzZXR0aW5ncycsIGxhYmVsOiAnU2V0dGluZ3MnLCBpY29uOiAnYXNzZXRzL2ljb25zL3Rvb2xzLXJlZ3VsYXIuc3ZnJyB9LFxuICBdO1xuXG4gIGFjdGl2ZVRhYjogV29ya3NwYWNlc1RhYiA9ICd3b3Jrc3BhY2VzJztcblxuICB2aWV3OiBXb3Jrc3BhY2VzVmlldyA9ICdsaXN0JztcbiAgc2VsZWN0ZWRXb3Jrc3BhY2U6IFdvcmtzcGFjZSB8IG51bGwgPSBudWxsO1xuXG4gIHdvcmtzcGFjZXM6IFdvcmtzcGFjZVtdID0gW107XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIHBhZ2VJbmRleCA9IDA7XG4gIHBhZ2VTaXplID0gMTA7XG4gIHRvdGFsID0gMDtcblxuICBzZWFyY2hUZXJtID0gJyc7XG4gIHR5cGVGaWx0ZXIgPSAnJztcbiAgbG9jYXRpb25GaWx0ZXIgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3b3Jrc3BhY2VzU2VydmljZTogV29ya3NwYWNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcGlTZXJ2aWNlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0ICsgJy9kY3AnO1xuICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XG4gIH1cblxuICBnZXQgdHlwZU9wdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4ubmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UudHlwZUxhYmVsKS5maWx0ZXIoQm9vbGVhbikpXTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbk9wdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbLi4ubmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UubG9jYXRpb24pLmZpbHRlcihCb29sZWFuKSldO1xuICB9XG5cbiAgZ2V0IGZpbHRlcmVkV29ya3NwYWNlcygpOiBXb3Jrc3BhY2VbXSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLmZpbHRlcih3b3Jrc3BhY2UgPT5cbiAgICAgICghdGVybSB8fCB3b3Jrc3BhY2UuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fCB3b3Jrc3BhY2UubG9jYXRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSkgJiZcbiAgICAgICghdGhpcy50eXBlRmlsdGVyIHx8IHdvcmtzcGFjZS50eXBlTGFiZWwgPT09IHRoaXMudHlwZUZpbHRlcikgJiZcbiAgICAgICghdGhpcy5sb2NhdGlvbkZpbHRlciB8fCB3b3Jrc3BhY2UubG9jYXRpb24gPT09IHRoaXMubG9jYXRpb25GaWx0ZXIpXG4gICAgKTtcbiAgfVxuXG4gIHNlbGVjdFRhYih0YWI6IFdvcmtzcGFjZXNUYWIpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcbiAgfVxuXG4gIG9uT3BlbldvcmtzcGFjZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkgPz8gbnVsbDtcbiAgICB0aGlzLm9wZW5Xb3Jrc3BhY2UuZW1pdChpZCk7XG5cbiAgICBpZiAoIXdvcmtzcGFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRXb3Jrc3BhY2UgPSB3b3Jrc3BhY2U7XG4gICAgdGhpcy52aWV3ID0gJ2RldGFpbCc7XG4gIH1cblxuICBvbkJhY2tUb0xpc3QoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3ID0gJ2xpc3QnO1xuICAgIHRoaXMuc2VsZWN0ZWRXb3Jrc3BhY2UgPSBudWxsO1xuICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCcvd29ya3NwYWNlcycpO1xuICB9XG5cbiAgb25TZWFyY2hDaGFuZ2UodGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gdGVybTtcbiAgfVxuXG4gIG9uVHlwZUZpbHRlckNoYW5nZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGVGaWx0ZXIgPSB0eXBlO1xuICB9XG5cbiAgb25Mb2NhdGlvbkZpbHRlckNoYW5nZShsb2NhdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhdGlvbkZpbHRlciA9IGxvY2F0aW9uO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9OiB7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hXb3Jrc3BhY2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLndvcmtzcGFjZXNTZXJ2aWNlLmZldGNoV29ya3NwYWNlcyh0aGlzLmN1c3RvbWVySWQsIHRoaXMucGFnZVNpemUsIHRoaXMucGFnZUluZGV4KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHsgd29ya3NwYWNlcywgdG90YWwgfSkgPT4ge1xuICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSB3b3Jrc3BhY2VzO1xuICAgICAgICB0aGlzLnRvdGFsID0gdG90YWw7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gW107XG4gICAgICAgIHRoaXMudG90YWwgPSAwO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcgPT09ICdsaXN0JzsgZWxzZSBkZXRhaWxWaWV3XCI+XG4gICAgPGhlYWRlciBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX2hlYWRlclwiPlxuICAgICAgPGgxIGNsYXNzPVwidGstd29ya3NwYWNlc19fdGl0bGVcIj5Xb3Jrc3BhY2VzPC9oMT5cbiAgICA8L2hlYWRlcj5cblxuICAgIDxuYXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX190YWJzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIlxuICAgICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RhYlwiXG4gICAgICAgIFtjbGFzcy50ay13b3Jrc3BhY2VzX190YWItLWFjdGl2ZV09XCJhY3RpdmVUYWIgPT09IHRhYi5pZFwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3RUYWIodGFiLmlkKVwiPlxuICAgICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFiLWljb25cIiBbc3JjXT1cInRhYi5pY29uXCIgYWx0PVwiXCIgLz5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25hdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICd3b3Jrc3BhY2VzJzsgZWxzZSBwbGFjZWhvbGRlclwiPlxuICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkZXI+XG5cbiAgICAgIDx0ay13b3Jrc3BhY2VzLWZpbHRlcnNcbiAgICAgICAgW3Jlc3VsdENvdW50XT1cInRvdGFsXCJcbiAgICAgICAgW3R5cGVPcHRpb25zXT1cInR5cGVPcHRpb25zXCJcbiAgICAgICAgW2xvY2F0aW9uT3B0aW9uc109XCJsb2NhdGlvbk9wdGlvbnNcIlxuICAgICAgICAoc2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAodHlwZUNoYW5nZSk9XCJvblR5cGVGaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChsb2NhdGlvbkNoYW5nZSk9XCJvbkxvY2F0aW9uRmlsdGVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoYWRkV29ya3NwYWNlKT1cImFkZFdvcmtzcGFjZS5lbWl0KClcIj5cbiAgICAgIDwvdGstd29ya3NwYWNlcy1maWx0ZXJzPlxuXG4gICAgICA8dGstd29ya3NwYWNlcy10YWJsZVxuICAgICAgICBbd29ya3NwYWNlc109XCJmaWx0ZXJlZFdvcmtzcGFjZXNcIlxuICAgICAgICBbdG90YWxdPVwidG90YWxcIlxuICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgIChvcGVuV29ya3NwYWNlKT1cIm9uT3BlbldvcmtzcGFjZSgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRXb3Jrc3BhY2UpPVwiZWRpdFdvcmtzcGFjZS5lbWl0KCRldmVudClcIlxuICAgICAgICAoZGVsZXRlV29ya3NwYWNlKT1cImRlbGV0ZVdvcmtzcGFjZS5lbWl0KCRldmVudClcIlxuICAgICAgICAoYWRkRGV2aWNlKT1cImFkZERldmljZS5lbWl0KCRldmVudClcIlxuICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC90ay13b3Jrc3BhY2VzLXRhYmxlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX19wbGFjZWhvbGRlclwiPlRoaXMgc2VjdGlvbiBpc24ndCBhdmFpbGFibGUgaW4gdGhpcyB3aWRnZXQgeWV0LjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGV0YWlsVmlldz5cbiAgICA8dGstd29ya3NwYWNlLWRldGFpbFxuICAgICAgKm5nSWY9XCJzZWxlY3RlZFdvcmtzcGFjZVwiXG4gICAgICBbd29ya3NwYWNlXT1cInNlbGVjdGVkV29ya3NwYWNlXCJcbiAgICAgIChiYWNrKT1cIm9uQmFja1RvTGlzdCgpXCI+XG4gICAgPC90ay13b3Jrc3BhY2UtZGV0YWlsPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU10RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBaUIzSCxNQUFNLE9BQU8sbUJBQW1CO0lBb0M5QixZQUNVLFVBQXNCLEVBQ3RCLGVBQWdDLEVBQ2hDLGlCQUFvQyxFQUNwQyxnQkFBNEMsRUFDNUMsTUFBaUIsRUFDakIsUUFBa0I7UUFMbEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRCO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXJDbEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV4QyxTQUFJLEdBQThCO1lBQ3pDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVB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RyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQWpUVSxtQkFBbUI7cUdBQW5CLG1CQUFtQiw0TkMxQmhDLHN2RUE0REE7NEZEbENhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxlQUFlO3VQQUtoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBtYXAsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YWtlV2hpbGUsIHRpbWVyIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBpV2ViZXhTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGktd2ViZXguc2VydmljZSc7XHJcbmltcG9ydCB7IEZpcm13YXJlRGV2aWNlTWFwLCBXb3Jrc3BhY2VzTWlncmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd29ya3NwYWNlcy1taWdyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy93b3Jrc3BhY2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZURldmljZVJlY29yZCB9IGZyb20gJy4vdHlwZXMvd29ya3NwYWNlJztcclxuaW1wb3J0IHsgV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy93b3Jrc3BhY2UtY29uZmlybS1kaWFsb2cvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG50eXBlIFdvcmtzcGFjZXNWaWV3ID0gJ2xpc3QnIHwgJ2RldGFpbCc7XHJcblxyXG50eXBlIFdvcmtzcGFjZXNUYWIgPSAnd29ya3NwYWNlcycgfCAnaW5zaWdodHMnIHwgJ2ludGVncmF0aW9ucycgfCAnc2V0dGluZ3MnO1xyXG5cclxuaW50ZXJmYWNlIFdvcmtzcGFjZXNUYWJEZWZpbml0aW9uIHtcclxuICBpZDogV29ya3NwYWNlc1RhYjtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ay13b3Jrc3BhY2VzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya3NwYWNlcy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGN1c3RvbWVySWQhOiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoKSBhZGRXb3Jrc3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5Xb3Jrc3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYWRkRGV2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIHJlYWRvbmx5IHRhYnM6IFdvcmtzcGFjZXNUYWJEZWZpbml0aW9uW10gPSBbXHJcbiAgICB7IGlkOiAnd29ya3NwYWNlcycsIGxhYmVsOiAnV29ya3NwYWNlcycsIGljb246ICdhc3NldHMvaWNvbnMvZGV2aWNlLWluLXJvb20tcmVndWxhci5zdmcnIH0sXHJcbiAgICB7IGlkOiAnaW5zaWdodHMnLCBsYWJlbDogJ0luc2lnaHRzJywgaWNvbjogJ2Fzc2V0cy9pY29ucy9hbmFseXNpcy1yZWd1bGFyLnN2ZycgfSxcclxuICAgIHsgaWQ6ICdpbnRlZ3JhdGlvbnMnLCBsYWJlbDogJ0ludGVncmF0aW9ucycsIGljb246ICdhc3NldHMvaWNvbnMvaW50ZWdyYXRpb25zLXJlZ3VsYXIuc3ZnJyB9LFxyXG4gICAgeyBpZDogJ3NldHRpbmdzJywgbGFiZWw6ICdTZXR0aW5ncycsIGljb246ICdhc3NldHMvaWNvbnMvdG9vbHMtcmVndWxhci5zdmcnIH0sXHJcbiAgXTtcclxuXHJcbiAgYWN0aXZlVGFiOiBXb3Jrc3BhY2VzVGFiID0gJ3dvcmtzcGFjZXMnO1xyXG5cclxuICB2aWV3OiBXb3Jrc3BhY2VzVmlldyA9ICdsaXN0JztcclxuICBzZWxlY3RlZFdvcmtzcGFjZTogV29ya3NwYWNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHdvcmtzcGFjZXM6IFdvcmtzcGFjZVtdID0gW107XHJcbiAgaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gIHBhZ2VJbmRleCA9IDA7XHJcbiAgcGFnZVNpemUgPSAxMDtcclxuICB0b3RhbCA9IDA7XHJcblxyXG4gIHNlYXJjaFRlcm0gPSAnJztcclxuICB0eXBlRmlsdGVyID0gJyc7XHJcbiAgbG9jYXRpb25GaWx0ZXIgPSAnJztcclxuXHJcbiAgcGVuZGluZ1dvcmtzcGFjZUlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcGlXZWJleFNlcnZpY2U6IEFwaVdlYmV4U2VydmljZSxcclxuICAgIHByaXZhdGUgd29ya3NwYWNlc1NlcnZpY2U6IFdvcmtzcGFjZXNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtaWdyYXRpb25TZXJ2aWNlOiBXb3Jrc3BhY2VzTWlncmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0ICsgJy9kY3AnO1xyXG4gICAgdGhpcy5hcGlXZWJleFNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlXZWJleFNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0ICsgJy93ZWJleCc7XHJcbiAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGVPcHRpb25zKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbLi4ubmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UudHlwZUxhYmVsKS5maWx0ZXIoQm9vbGVhbikpXTtcclxuICB9XHJcblxyXG4gIGdldCBsb2NhdGlvbk9wdGlvbnMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMud29ya3NwYWNlcy5tYXAod29ya3NwYWNlID0+IHdvcmtzcGFjZS5sb2NhdGlvbikuZmlsdGVyKEJvb2xlYW4pKV07XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyZWRXb3Jrc3BhY2VzKCk6IFdvcmtzcGFjZVtdIHtcclxuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy53b3Jrc3BhY2VzLmZpbHRlcih3b3Jrc3BhY2UgPT5cclxuICAgICAgKCF0ZXJtIHx8IHdvcmtzcGFjZS5kaXNwbGF5TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8IHdvcmtzcGFjZS5sb2NhdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSAmJlxyXG4gICAgICAoIXRoaXMudHlwZUZpbHRlciB8fCB3b3Jrc3BhY2UudHlwZUxhYmVsID09PSB0aGlzLnR5cGVGaWx0ZXIpICYmXHJcbiAgICAgICghdGhpcy5sb2NhdGlvbkZpbHRlciB8fCB3b3Jrc3BhY2UubG9jYXRpb24gPT09IHRoaXMubG9jYXRpb25GaWx0ZXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VGFiKHRhYjogV29ya3NwYWNlc1RhYik6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5Xb3Jrc3BhY2UoaWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkgPz8gbnVsbDtcclxuICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KGlkKTtcclxuXHJcbiAgICBpZiAoIXdvcmtzcGFjZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZFdvcmtzcGFjZSA9IHdvcmtzcGFjZTtcclxuICAgIHRoaXMudmlldyA9ICdkZXRhaWwnO1xyXG4gIH1cclxuXHJcbiAgb25CYWNrVG9MaXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3ID0gJ2xpc3QnO1xyXG4gICAgdGhpcy5zZWxlY3RlZFdvcmtzcGFjZSA9IG51bGw7XHJcbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSgnL3dvcmtzcGFjZXMnKTtcclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKHRlcm06IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtID0gdGVybTtcclxuICB9XHJcblxyXG4gIG9uVHlwZUZpbHRlckNoYW5nZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZUZpbHRlciA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBvbkxvY2F0aW9uRmlsdGVyQ2hhbmdlKGxvY2F0aW9uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMubG9jYXRpb25GaWx0ZXIgPSBsb2NhdGlvbjtcclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZSh7IHBhZ2VJbmRleCwgcGFnZVNpemUgfTogeyBwYWdlSW5kZXg6IG51bWJlcjsgcGFnZVNpemU6IG51bWJlciB9KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcclxuICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgfVxyXG5cclxuICBvbk1vdmVUb01UKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFdvcmtzcGFjZUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRpdGxlOiBgVXBncmFkZSB3b3Jrc3BhY2UgJHt3b3Jrc3BhY2UuZGlzcGxheU5hbWV9IHRvIE11bHRpIFRlbmFudD9gLFxyXG4gICAgICAgIG1lc3NhZ2U6IGA8cD5VcGdyYWRpbmcgdGhpcyB3b3Jrc3BhY2Ugd2lsbCBwcmVwYXJlIGl0IGZvciBtaWdyYXRpb24gdG8gTXVsdGkgVGVuYW50LjwvcD5cclxuICAgICAgICAgIDxwPkR1cmluZyB0aGlzIHByb2Nlc3MsIHRoZSB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNvcGllZCB0byB0aGUgTXVsdGkgVGVuYW50IGVudmlyb25tZW50LlxyXG4gICAgICAgICAgVGhlIHdvcmtzcGFjZSB3aWxsIHJlbWFpbiBhY3RpdmUgb24gdGhlIGN1cnJlbnQgc3lzdGVtIHVudGlsIHRoZSBBY3RpdmF0ZSBzdGVwIGlzIGNvbXBsZXRlZC48L3A+XHJcbiAgICAgICAgICA8cD5EbyB5b3Ugd2FudCB0byBjb250aW51ZT88L3A+YCxcclxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcywgdXBncmFkZScsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmFkZCh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2UubW92ZVRvTVQodGhpcy5jdXN0b21lcklkLCB3b3Jrc3BhY2UuZGV2aWNlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChmb3JtSWQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm1JZCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKE51bWJlcihmb3JtSWQpLCB3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRW5hYmxlV2ViZXhDYWxsaW5nKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZXZpY2UgPSB3b3Jrc3BhY2UuZGV2aWNlO1xyXG4gICAgaWYgKCFkZXZpY2Uud2ViZXhVVUlEIHx8IHdvcmtzcGFjZS5zdGF0dXMgIT09ICdpbmFjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgdGl0bGU6IGBBY3RpdmF0ZSB3b3Jrc3BhY2UgJHt3b3Jrc3BhY2UuZGlzcGxheU5hbWV9IG9uIE11bHRpIFRlbmFudD9gLFxyXG4gICAgICAgIG1lc3NhZ2U6IGA8cD5BY3RpdmF0aW5nIHRoaXMgd29ya3NwYWNlIHdpbGwgcGVyZm9ybSB0aGUgY3V0b3ZlciB0byBNdWx0aSBUZW5hbnQgYW5kIGNvbXBsZXRlIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy48L3A+XHJcbiAgICAgICAgICA8cD5BZnRlciBhY3RpdmF0aW9uLCB0aGUgd29ya3NwYWNlIHdpbGwgYmVjb21lIGFjdGl2ZSBvbiBNdWx0aSBUZW5hbnQgYW5kIHRoZSBvcmlnaW5hbCB3b3Jrc3BhY2Ugd2lsbCBiZWNvbWUgaW5hY3RpdmUuPC9wPlxyXG4gICAgICAgICAgPHA+RG8geW91IHdhbnQgdG8gY29udGludWU/PC9wPmAsXHJcbiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdBY3RpdmF0ZScsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKCFyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmFkZCh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2VcclxuICAgICAgICAuZ2V0TWlncmF0ZWRNaWdyYXRpb25Gb3JtRW50aXRpZXModGhpcy5jdXN0b21lcklkLCBkZXZpY2Uud2ViZXhVVUlEIGFzIHN0cmluZywgJ1BFUlNPTicpXHJcbiAgICAgICAgLnBpcGUobWFwKChlbnRpdGllczogYW55W10pID0+IChBcnJheS5pc0FycmF5KGVudGl0aWVzKSA/IGVudGl0aWVzWzBdIDogZW50aXRpZXMgfHwgbnVsbCkpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1JZCA9IGVudGl0eT8ubWlncmF0aW9uRm9ybUlkID8/IGVudGl0eT8uaWQgPz8gbnVsbDtcclxuICAgICAgICAgICAgaWYgKCFmb3JtSWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRldmljZU1hcCA9IHRoaXMuYnVpbGRGaXJtd2FyZURldmljZU1hcChlbnRpdHksIGRldmljZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVwZ3JhZGVTdWJzY3JpcHRpb24gPSB0aGlzLm1pZ3JhdGlvblNlcnZpY2VcclxuICAgICAgICAgICAgICAudHJpZ2dlckZpcm13YXJlVXBncmFkZSh0aGlzLmN1c3RvbWVySWQsIE51bWJlcihmb3JtSWQpLCBkZXZpY2VNYXApXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKE51bWJlcihmb3JtSWQpLCB3b3Jrc3BhY2UuaWQsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWlncmF0aW9uU2VydmljZS5yZW1vdmVVY21MaWNlbnNlKHRoaXMuY3VzdG9tZXJJZCwgTnVtYmVyKGZvcm1JZCkpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godXBncmFkZVN1YnNjcmlwdGlvbik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25NaWdyYXRlVG9VQ00od29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRldmljZSA9IHdvcmtzcGFjZS5kZXZpY2U7XHJcbiAgICBpZiAoIWRldmljZS53ZWJleFVVSUQgfHwgd29ya3NwYWNlLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcclxuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZVxyXG4gICAgICAucmV2ZXJ0TWlncmF0aW9uKHRoaXMuY3VzdG9tZXJJZCwgZGV2aWNlLndlYmV4VVVJRClcclxuICAgICAgLnBpcGUoc3dpdGNoTWFwKCgpID0+IHRpbWVyKDIwMDApKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xyXG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcG9sbE1pZ3JhdGlvbkZvcm1TdGF0dXMoZm9ybUlkOiBudW1iZXIsIHdvcmtzcGFjZUlkOiBzdHJpbmcsIG9uQ29tcGxldGVkPzogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGltZXIoMCwgMTAwMDApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLm1pZ3JhdGlvblNlcnZpY2UuZ2V0TWlncmF0aW9uRm9ybVN0YXR1cyh0aGlzLmN1c3RvbWVySWQsIGZvcm1JZCkpLFxyXG4gICAgICAgIHRha2VXaGlsZSgocmVzcG9uc2U6IGFueSkgPT4gIXRoaXMuaXNUZXJtaW5hbE1pZ3JhdGlvblN0YXR1cyhyZXNwb25zZT8uc3RhdHVzKSwgdHJ1ZSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMubm9ybWFsaXplTWlncmF0aW9uU3RhdHVzKHJlc3BvbnNlPy5zdGF0dXMpO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmlzVGVybWluYWxNaWdyYXRpb25TdGF0dXMoc3RhdHVzKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZUlkKTtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XHJcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnQ09NUExFVEVEJykge1xyXG4gICAgICAgICAgICBvbkNvbXBsZXRlZD8uKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2VJZCk7XHJcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGaXJtd2FyZURldmljZU1hcChlbnRpdHk6IGFueSwgZGV2aWNlOiBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQpOiBGaXJtd2FyZURldmljZU1hcCB7XHJcbiAgICBjb25zdCBkZXZpY2VNYXA6IEZpcm13YXJlRGV2aWNlTWFwID0ge307XHJcbiAgICBjb25zdCBlbnRpdHlEZXZpY2VzOiBhbnlbXSA9IFtcclxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZW50aXR5Py5kZXZpY2VzKSA/IGVudGl0eS5kZXZpY2VzIDogW10pLFxyXG4gICAgICAuLi4oQXJyYXkuaXNBcnJheShlbnRpdHk/LndlYmV4TWlncmF0aW9uRGV2aWNlcykgPyBlbnRpdHkud2ViZXhNaWdyYXRpb25EZXZpY2VzIDogW10pLFxyXG4gICAgXTtcclxuICAgIGNvbnN0IHNvdXJjZURldmljZXMgPSBlbnRpdHlEZXZpY2VzLmxlbmd0aCA/IGVudGl0eURldmljZXMgOiBbZGV2aWNlXTtcclxuICAgIGNvbnN0IGN1Y21JZCA9IE51bWJlcihkZXZpY2UuY3VjbUlkKSB8fCAwO1xyXG5cclxuICAgIHNvdXJjZURldmljZXMuZm9yRWFjaCgocmF3RGV2aWNlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gcmF3RGV2aWNlPy5uYW1lIHx8IGRldmljZS5uYW1lIHx8ICcnO1xyXG4gICAgICBpZiAoIW5hbWUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGV2aWNlTmFtZSA9IG5hbWUuaW5jbHVkZXMoJ1NFUCcpID8gbmFtZSA6IGBTRVAke25hbWV9YDtcclxuICAgICAgaWYgKCFkZXZpY2VNYXBbY3VjbUlkXSkge1xyXG4gICAgICAgIGRldmljZU1hcFtjdWNtSWRdID0ge307XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFkZXZpY2VNYXBbY3VjbUlkXVsnUEVSU09OJ10pIHtcclxuICAgICAgICBkZXZpY2VNYXBbY3VjbUlkXVsnUEVSU09OJ10gPSBbXTtcclxuICAgICAgfVxyXG4gICAgICBkZXZpY2VNYXBbY3VjbUlkXVsnUEVSU09OJ10ucHVzaChkZXZpY2VOYW1lKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkZXZpY2VNYXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG5vcm1hbGl6ZU1pZ3JhdGlvblN0YXR1cyhzdGF0dXM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChzdGF0dXMgfHwgJycpLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzVGVybWluYWxNaWdyYXRpb25TdGF0dXMoc3RhdHVzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVNaWdyYXRpb25TdGF0dXMoc3RhdHVzKTtcclxuICAgIHJldHVybiBub3JtYWxpemVkID09PSAnQ09NUExFVEVEJyB8fCBub3JtYWxpemVkID09PSAnRkFJTEVEJyB8fCBub3JtYWxpemVkID09PSAnRVJST1InIHx8IG5vcm1hbGl6ZWQgPT09ICdDT01QTEVURURfV0lUSF9FUlJPUlMnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaFdvcmtzcGFjZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLndvcmtzcGFjZXNTZXJ2aWNlLmZldGNoV29ya3NwYWNlcyh0aGlzLmN1c3RvbWVySWQsIHRoaXMucGFnZVNpemUsIHRoaXMucGFnZUluZGV4KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoeyB3b3Jrc3BhY2VzLCB0b3RhbCB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gd29ya3NwYWNlcztcclxuICAgICAgICB0aGlzLnRvdGFsID0gdG90YWw7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLndvcmtzcGFjZXMgPSBbXTtcclxuICAgICAgICB0aGlzLnRvdGFsID0gMDtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcgPT09ICdsaXN0JzsgZWxzZSBkZXRhaWxWaWV3XCI+XHJcbiAgICA8aGVhZGVyIGNsYXNzPVwidGstd29ya3NwYWNlc19faGVhZGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RpdGxlXCI+V29ya3NwYWNlczwvaDE+XHJcbiAgICA8L2hlYWRlcj5cclxuXHJcbiAgICA8bmF2IGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFic1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcclxuICAgICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RhYlwiXHJcbiAgICAgICAgW2NsYXNzLnRrLXdvcmtzcGFjZXNfX3RhYi0tYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gdGFiLmlkXCJcclxuICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYi5pZClcIj5cclxuICAgICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFiLWljb25cIiBbc3JjXT1cInRhYi5pY29uXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICB7eyB0YWIubGFiZWwgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L25hdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnd29ya3NwYWNlcyc7IGVsc2UgcGxhY2Vob2xkZXJcIj5cclxuICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj48L2FwcC1sb2FkZXI+XHJcblxyXG4gICAgICA8dGstd29ya3NwYWNlcy1maWx0ZXJzXHJcbiAgICAgICAgW3Jlc3VsdENvdW50XT1cInRvdGFsXCJcclxuICAgICAgICBbdHlwZU9wdGlvbnNdPVwidHlwZU9wdGlvbnNcIlxyXG4gICAgICAgIFtsb2NhdGlvbk9wdGlvbnNdPVwibG9jYXRpb25PcHRpb25zXCJcclxuICAgICAgICAoc2VhcmNoQ2hhbmdlKT1cIm9uU2VhcmNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICh0eXBlQ2hhbmdlKT1cIm9uVHlwZUZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAobG9jYXRpb25DaGFuZ2UpPVwib25Mb2NhdGlvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAoYWRkV29ya3NwYWNlKT1cImFkZFdvcmtzcGFjZS5lbWl0KClcIj5cclxuICAgICAgPC90ay13b3Jrc3BhY2VzLWZpbHRlcnM+XHJcblxyXG4gICAgICA8dGstd29ya3NwYWNlcy10YWJsZVxyXG4gICAgICAgIFt3b3Jrc3BhY2VzXT1cImZpbHRlcmVkV29ya3NwYWNlc1wiXHJcbiAgICAgICAgW3RvdGFsXT1cInRvdGFsXCJcclxuICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICBbcGVuZGluZ1dvcmtzcGFjZUlkc109XCJwZW5kaW5nV29ya3NwYWNlSWRzXCJcclxuICAgICAgICAob3BlbldvcmtzcGFjZSk9XCJvbk9wZW5Xb3Jrc3BhY2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKGxpY2Vuc2VXaXRoSHlicmlkKT1cIm9uTW92ZVRvTVQoJGV2ZW50KVwiXHJcbiAgICAgICAgKG1pZ3JhdGVUb01UKT1cIm9uTW92ZVRvTVQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGVuYWJsZVdlYmV4Q2FsbGluZyk9XCJvbkVuYWJsZVdlYmV4Q2FsbGluZygkZXZlbnQpXCJcclxuICAgICAgICAobWlncmF0ZVRvVUNNKT1cIm9uTWlncmF0ZVRvVUNNKCRldmVudClcIlxyXG4gICAgICAgIChhZGREZXZpY2UpPVwiYWRkRGV2aWNlLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC90ay13b3Jrc3BhY2VzLXRhYmxlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3BsYWNlaG9sZGVyXCI+VGhpcyBzZWN0aW9uIGlzbid0IGF2YWlsYWJsZSBpbiB0aGlzIHdpZGdldCB5ZXQuPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctdGVtcGxhdGUgI2RldGFpbFZpZXc+XHJcbiAgICA8dGstd29ya3NwYWNlLWRldGFpbFxyXG4gICAgICAqbmdJZj1cInNlbGVjdGVkV29ya3NwYWNlXCJcclxuICAgICAgW3dvcmtzcGFjZV09XCJzZWxlY3RlZFdvcmtzcGFjZVwiXHJcbiAgICAgIChiYWNrKT1cIm9uQmFja1RvTGlzdCgpXCI+XHJcbiAgICA8L3RrLXdvcmtzcGFjZS1kZXRhaWw+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==