@tuki-io/tuki-widgets 0.0.219-dev.54 → 0.0.219-dev.56

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 (86) hide show
  1. package/contact-center/cc-import/cc-import.module.d.ts +13 -0
  2. package/contact-center/cc-import/cc-import.service.d.ts +85 -0
  3. package/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.d.ts +56 -0
  4. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.d.ts +77 -0
  5. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.d.ts +3 -0
  6. package/contact-center/cc-import/constants/cc-import.constants.d.ts +37 -0
  7. package/contact-center/cc-import/mock/cc-import.mock.d.ts +4 -0
  8. package/contact-center/cc-import/types/cc-import.d.ts +73 -0
  9. package/contact-center/cc-import/types/uccx.d.ts +109 -0
  10. package/contact-center/cc-readiness/cc-readiness.module.d.ts +3 -3
  11. package/contact-center/public-api.d.ts +8 -0
  12. package/contact-center/shared/api.endpoints.d.ts +25 -0
  13. package/contact-center/shared/api.service.d.ts +3 -1
  14. package/contact-center/shared/components/card/card.component.d.ts +13 -0
  15. package/contact-center/shared/dcp-api.service.d.ts +15 -0
  16. package/contact-center/shared/shared.module.d.ts +11 -5
  17. package/esm2020/contact-center/cc-import/cc-import.module.mjs +45 -0
  18. package/esm2020/contact-center/cc-import/cc-import.service.mjs +228 -0
  19. package/esm2020/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.mjs +144 -0
  20. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.mjs +243 -0
  21. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.mjs +3 -0
  22. package/esm2020/contact-center/cc-import/constants/cc-import.constants.mjs +62 -0
  23. package/esm2020/contact-center/cc-import/mock/cc-import.mock.mjs +78 -0
  24. package/esm2020/contact-center/cc-import/types/cc-import.mjs +2 -0
  25. package/esm2020/contact-center/cc-import/types/uccx.mjs +24 -0
  26. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +7 -6
  27. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +5 -5
  28. package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +2 -2
  29. package/esm2020/contact-center/public-api.mjs +9 -1
  30. package/esm2020/contact-center/shared/api.endpoints.mjs +26 -1
  31. package/esm2020/contact-center/shared/api.service.mjs +8 -3
  32. package/esm2020/contact-center/shared/components/card/card.component.mjs +24 -0
  33. package/esm2020/contact-center/shared/dcp-api.service.mjs +26 -0
  34. package/esm2020/contact-center/shared/shared.module.mjs +15 -5
  35. package/esm2020/user-device-manage/public-api.mjs +4 -1
  36. package/esm2020/user-device-manage/src/app.constants.mjs +9 -3
  37. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +311 -0
  38. package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
  39. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  40. package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +2 -2
  41. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +34 -17
  42. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +207 -0
  43. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +401 -0
  44. package/esm2020/user-device-manage/src/services/device.service.mjs +32 -2
  45. package/esm2020/user-device-manage/src/services/user.service.mjs +34 -6
  46. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +19 -4
  47. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +17 -4
  48. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +66 -0
  49. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -3
  50. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +43 -1
  51. package/esm2020/workspaces/src/services/workspaces.service.mjs +2 -1
  52. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  53. package/esm2020/workspaces/src/workspaces.module.mjs +4 -1
  54. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +998 -127
  55. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  56. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +1018 -40
  57. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  58. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +142 -16
  59. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  60. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +989 -127
  61. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  62. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +1001 -39
  63. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  64. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +133 -16
  65. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  66. package/package.json +1 -1
  67. package/user-device-manage/public-api.d.ts +3 -0
  68. package/user-device-manage/src/app.constants.d.ts +6 -0
  69. package/user-device-manage/src/associate-lines/associate-lines.component.d.ts +95 -0
  70. package/user-device-manage/src/classes/device.d.ts +15 -0
  71. package/user-device-manage/src/classes/deviceProfile.d.ts +5 -0
  72. package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +1 -0
  73. package/user-device-manage/src/device-manage-widget.component.d.ts +6 -1
  74. package/user-device-manage/src/device-settings/device-settings.component.d.ts +53 -0
  75. package/user-device-manage/src/line-key-config/line-key-config.component.d.ts +84 -0
  76. package/user-device-manage/src/services/device.service.d.ts +6 -1
  77. package/user-device-manage/src/services/user.service.d.ts +2 -1
  78. package/user-device-manage/src/user-device-manage.module.d.ts +10 -7
  79. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +6 -1
  80. package/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.d.ts +25 -0
  81. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +1 -0
  82. package/workspaces/src/services/workspace-detail.service.d.ts +2 -0
  83. package/workspaces/src/types/workspace.d.ts +19 -0
  84. package/workspaces/src/workspaces.module.d.ts +8 -7
  85. package/contact-center/cc-readiness/components/card/card.component.d.ts +0 -6
  86. package/esm2020/contact-center/cc-readiness/components/card/card.component.mjs +0 -13
@@ -9,6 +9,7 @@ export class DeviceService {
9
9
  constructor(apiService) {
10
10
  this.apiService = apiService;
11
11
  this.dataPending = false;
12
+ this.siteDirectoryNumbers = [];
12
13
  }
13
14
  hasUnsavedChanges(device, originDevice) {
14
15
  if (device?.lineAssociationsHasChanges) {
@@ -40,9 +41,22 @@ export class DeviceService {
40
41
  return this.apiService.fetch(API.LEAN_USER_DEVICES_CONVERSATION_START.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))));
41
42
  }
42
43
  getSlotsByButtonTemplate(siteId, buttonTemplateName) {
43
- return this.apiService.fetch(API.LINE_SLOTS.replace(':siteId', String(siteId)), { name: buttonTemplateName }, true);
44
+ return this.apiService.fetch(API.LINE_SLOTS.replace(':siteId', String(siteId)), { name: buttonTemplateName });
44
45
  // .pipe(this.handleError(true, true));
45
46
  }
47
+ getDeviceDefaults(siteId, deviceType) {
48
+ return this.apiService.fetch(API.DEVICE_DEFAULTS.replace(':siteId', String(siteId)).replace(':deviceType', deviceType), {});
49
+ // .pipe(this.handleError(true, true));
50
+ }
51
+ getAllSiteDirectoryNumbers(siteId) {
52
+ return this.apiService.fetch(API.ALL_SITE_DIRECTORY_NUMBERS.replace(':siteId', String(siteId)), {})
53
+ .pipe(map((directoryNumbers) => {
54
+ this.siteDirectoryNumbers = directoryNumbers || [];
55
+ if (!this.siteDirectoryNumbers.includes(' '))
56
+ this.siteDirectoryNumbers.unshift(' ');
57
+ return this.siteDirectoryNumbers;
58
+ }));
59
+ }
46
60
  putDeviceFields(siteId, deviceName, token, body) {
47
61
  console.log('userToken = ', token);
48
62
  const URL = API.UPDATE_DEVICE_FIELDS
@@ -53,6 +67,22 @@ export class DeviceService {
53
67
  return this.apiService.post(URL, body);
54
68
  // .pipe(this.handleError(true, true));
55
69
  }
70
+ updateSpeedDialLines(siteId, deviceName, userToken, body) {
71
+ const URL = API.UPDATE_DEVICE_SPEED_DIAL_LINES
72
+ .replace(':siteId', String(siteId))
73
+ .replace(':deviceName', deviceName)
74
+ .replace(':userToken', userToken);
75
+ return this.apiService.post(URL, body);
76
+ // .pipe(this.handleError(true, true));
77
+ }
78
+ updateBlfSpeedDialLines(siteId, deviceName, userToken, body) {
79
+ const URL = API.UPDATE_DEVICE_BLF_SPEED_DIAL_LINES
80
+ .replace(':siteId', String(siteId))
81
+ .replace(':deviceName', deviceName)
82
+ .replace(':userToken', userToken);
83
+ return this.apiService.post(URL, body);
84
+ // .pipe(this.handleError(true, true));
85
+ }
56
86
  updateAvailableSlots(siteId, device) {
57
87
  if (!device) {
58
88
  throw throwError(() => new Error('test'));
@@ -80,4 +110,4 @@ DeviceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
80
110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceService, decorators: [{
81
111
  type: Injectable
82
112
  }], ctorParameters: function () { return [{ type: i1.APIService }]; } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9zZXJ2aWNlcy9kZXZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUs5RCxNQUFNLE9BQU8sYUFBYTtJQU14QixZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFIaEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFLcEIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLE1BQWMsRUFBRSxZQUFvQjtRQUMzRCxJQUFJLE1BQU0sRUFBRSwwQkFBMEIsRUFBRTtZQUN0QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxNQUFNLElBQUksWUFBWSxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQ2xHO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sMkJBQTJCLENBQUMsTUFBYyxFQUFFLFlBQW9CO1FBQ3JFLElBQUksTUFBTSxJQUFJLFlBQVksRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFLENB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QUFHLENBQUMsQ0FBQyxjQUE4QixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQy9HLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDSCx1Q0FBdUM7SUFDM0MsQ0FBQzs7MkdBbEZVLGFBQWE7K0dBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vYXBwLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTb3J0aW5nVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi9zb3J0aW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQnV0dG9udGVtcGxhdGUsIERldmljZSB9IGZyb20gJy4uL2NsYXNzZXMvZGV2aWNlJztcbmltcG9ydCB7IExpbmVBc3NvY2lhdGlvbkludGVyZmFjZSB9IGZyb20gJy4uL2NsYXNzZXMvbGluZS1hc3NvY2lhdGlvbi1pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGV2aWNlU2VydmljZSB7XG4gIGF2YWlsYWJsZVNsb3RzITogbnVtYmVyW107XG4gIGxpbmVTbG90c0xpc3QhOiBhbnk7XG4gIGF2YWlsYWJsZUxpbmVTbG90c0xpc3QhOiBhbnk7XG4gIGRhdGFQZW5kaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBoYXNVbnNhdmVkQ2hhbmdlcyhkZXZpY2U6IERldmljZSwgb3JpZ2luRGV2aWNlOiBEZXZpY2UpOiBib29sZWFuIHtcbiAgICBpZiAoZGV2aWNlPy5saW5lQXNzb2NpYXRpb25zSGFzQ2hhbmdlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChkZXZpY2UgJiYgb3JpZ2luRGV2aWNlKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGV2aWNlLmdldFNhdmFibGVEYXRhKCkpICE9PSBKU09OLnN0cmluZ2lmeShvcmlnaW5EZXZpY2UuZ2V0U2F2YWJsZURhdGEoKSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNEZXZpY2VJbmZvVW5zYXZlZENoYW5nZXMoZGV2aWNlOiBEZXZpY2UsIG9yaWdpbkRldmljZTogRGV2aWNlKTogYm9vbGVhbiB7XG4gICAgaWYgKGRldmljZSAmJiBvcmlnaW5EZXZpY2UpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkZXZpY2UuZ2V0RGV2aWNlSW5mb1NhdmFibGVEYXRhKCkpICE9PSBKU09OLnN0cmluZ2lmeShvcmlnaW5EZXZpY2UuZ2V0RGV2aWNlSW5mb1NhdmFibGVEYXRhKCkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YVRvVXBkYXRlRGV2aWNlKGRldmljZTogRGV2aWNlLCBvcmlnaW5hbERldmljZTogRGV2aWNlKSB7XG4gICAgLy8gLS0tIHRvIGV4Y2x1ZGUgbmV3TGluZXMgZnJvbSB1cGRhdGVcbiAgICAvLyBjb25zdCBkZXZUb1VwZGF0ZSA9IG5ldyBEZXZpY2UoZGV2aWNlLCB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlKTtcbiAgICAvLyBjb25zdCBvcmlnaW5hbERldlRvVXBkYXRlID0gbmV3IERldmljZShvcmlnaW5hbERldmljZSwgdGhpcy52YWxpZGF0aW9uU2VydmljZSk7XG4gICAgLy8gLy8gQHRzLWlnbm9yZVxuICAgIC8vIGRldlRvVXBkYXRlLmxpbmVBc3NvY2lhdGlvbnMgPSBkZXZUb1VwZGF0ZS5saW5lQXNzb2NpYXRpb25zPy5maWx0ZXIobGluZSA9PiBsaW5lLmxpbmVQa2lkKTtcbiAgICAvLyAvLyBAdHMtaWdub3JlXG4gICAgLy8gb3JpZ2luYWxEZXZUb1VwZGF0ZS5saW5lQXNzb2NpYXRpb25zID0gb3JpZ2luYWxEZXZUb1VwZGF0ZS5saW5lQXNzb2NpYXRpb25zPy5maWx0ZXIobGluZSA9PiBsaW5lLmxpbmVQa2lkKTtcblxuICAgIGNvbnN0IGJvZHkgPSBTb3J0aW5nVXRpbHNTZXJ2aWNlLmRpZmYob3JpZ2luYWxEZXZpY2UuZ2V0RGV2aWNlSW5mb1NhdmFibGVEYXRhKCksIGRldmljZS5nZXREZXZpY2VJbmZvU2F2YWJsZURhdGEoKSwgJ2RldmljZScsXG4gICAgICBbJ3NwZWVkRGlhbHMnLCAnYnVzeUxhbXBGaWVsZHMnXSk7XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hMZWFuVXNlckRldmljZXNDb252ZXJzYXRpb25CeUlkKHVzZXJJZDogc3RyaW5nLCBzaXRlSWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLkxFQU5fVVNFUl9ERVZJQ0VTX0NPTlZFUlNBVElPTl9TVEFSVC5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHNpdGVJZCkpLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJJZCkpKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U2xvdHNCeUJ1dHRvblRlbXBsYXRlKHNpdGVJZDogbnVtYmVyLCBidXR0b25UZW1wbGF0ZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8QnV0dG9udGVtcGxhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5MSU5FX1NMT1RTLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcoc2l0ZUlkKSksIHtuYW1lOiBidXR0b25UZW1wbGF0ZU5hbWV9LCB0cnVlKVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcih0cnVlLCB0cnVlKSk7XG4gIH1cblxuICBwdWJsaWMgcHV0RGV2aWNlRmllbGRzKHNpdGVJZDogbnVtYmVyLCBkZXZpY2VOYW1lOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGJvZHk6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCd1c2VyVG9rZW4gPSAnLCB0b2tlbik7XG4gICAgY29uc3QgVVJMID0gQVBJLlVQREFURV9ERVZJQ0VfRklFTERTXG4gICAgICAucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKVxuICAgICAgLnJlcGxhY2UoJzpkZXZpY2VOYW1lJywgZGV2aWNlTmFtZSlcbiAgICAgIC5yZXBsYWNlKCc6dG9rZW4nLCB0b2tlbik7XG4gICAgY29uc29sZS5sb2coJ3VybCA9ICcsIFVSTCk7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFVSTCwgYm9keSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgdHJ1ZSkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUF2YWlsYWJsZVNsb3RzKHNpdGVJZDogbnVtYmVyLCBkZXZpY2U6IERldmljZSk6IGFueSB7XG4gICAgaWYgKCFkZXZpY2UpIHtcbiAgICAgIHRocm93IHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCd0ZXN0JykpO1xuICAgIH1cbiAgICBpZiAoIWRldmljZS5idXR0b25UZW1wbGF0ZSkge1xuICAgICAgdGhyb3cgdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ3Rlc3QnKSk7XG4gICAgfVxuICAgIGlmIChkZXZpY2UuYnV0dG9uVGVtcGxhdGUgPT09ICcnKSB7XG4gICAgICBkZXZpY2UuYXZhaWxhYmxlU2xvdHMgPSBbXTtcbiAgICAgIHJldHVybiBvZihkZXZpY2UpO1xuICAgIH1cbiAgICBjb25zdCBleGlzdGluZ1Bvc2l0aW9ucyA9IGRldmljZS5saW5lQXNzb2NpYXRpb25zLm1hcCgobGluZUFzc29jaWF0aW9uOiBMaW5lQXNzb2NpYXRpb25JbnRlcmZhY2UpID0+IGxpbmVBc3NvY2lhdGlvbi5wb3NpdGlvbik7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U2xvdHNCeUJ1dHRvblRlbXBsYXRlKHNpdGVJZCwgZGV2aWNlLmJ1dHRvblRlbXBsYXRlKVxuICAgICAgLnBpcGUobWFwKChidXR0b25UZW1wbGF0ZTogQnV0dG9udGVtcGxhdGUpID0+IHtcbiAgICAgICAgdGhpcy5saW5lU2xvdHNMaXN0ID0gYnV0dG9uVGVtcGxhdGUubGluZVNsb3RzO1xuICAgICAgICBkZXZpY2UuYXZhaWxhYmxlU2xvdHMgPSB0aGlzLmxpbmVTbG90c0xpc3QuZmlsdGVyKChwb3NpdGlvbjogbnVtYmVyKSA9PiAhZXhpc3RpbmdQb3NpdGlvbnMuaW5jbHVkZXMocG9zaXRpb24pKTtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVMaW5lU2xvdHNMaXN0ID0gZGV2aWNlLmF2YWlsYWJsZVNsb3RzLnNsaWNlKCk7XG4gICAgICAgIHJldHVybiBkZXZpY2U7XG4gICAgICB9KSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgdHJ1ZSkpO1xuICB9XG5cbn1cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvdXNlci1kZXZpY2UtbWFuYWdlL3NyYy9zZXJ2aWNlcy9kZXZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUs5RCxNQUFNLE9BQU8sYUFBYTtJQU94QixZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFKaEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIseUJBQW9CLEdBQWEsRUFBRSxDQUFDO0lBS3BDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxNQUFjLEVBQUUsWUFBb0I7UUFDM0QsSUFBSSxNQUFNLEVBQUUsMEJBQTBCLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksTUFBTSxJQUFJLFlBQVksRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztTQUNsRztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLDJCQUEyQixDQUFDLE1BQWMsRUFBRSxZQUFvQjtRQUNyRSxJQUFJLE1BQU0sSUFBSSxZQUFZLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxD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O1lBQzFCLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDM0M7UUFDRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLEtBQUssRUFBRSxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQzNCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25CO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsZUFBeUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ILE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDO2FBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUE4QixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQy9HLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDSCx1Q0FBdUM7SUFDM0MsQ0FBQzs7MkdBbkhVLGFBQWE7K0dBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vYXBwLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTb3J0aW5nVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi9zb3J0aW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmxmU3BlZWREaWFsTGluZVVwZGF0ZSwgQnV0dG9udGVtcGxhdGUsIERldmljZSwgU3BlZWREaWFsTGluZVVwZGF0ZSB9IGZyb20gJy4uL2NsYXNzZXMvZGV2aWNlJztcbmltcG9ydCB7IExpbmVBc3NvY2lhdGlvbkludGVyZmFjZSB9IGZyb20gJy4uL2NsYXNzZXMvbGluZS1hc3NvY2lhdGlvbi1pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGV2aWNlU2VydmljZSB7XG4gIGF2YWlsYWJsZVNsb3RzITogbnVtYmVyW107XG4gIGxpbmVTbG90c0xpc3QhOiBhbnk7XG4gIGF2YWlsYWJsZUxpbmVTbG90c0xpc3QhOiBhbnk7XG4gIGRhdGFQZW5kaW5nID0gZmFsc2U7XG4gIHNpdGVEaXJlY3RvcnlOdW1iZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQVBJU2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMoZGV2aWNlOiBEZXZpY2UsIG9yaWdpbkRldmljZTogRGV2aWNlKTogYm9vbGVhbiB7XG4gICAgaWYgKGRldmljZT8ubGluZUFzc29jaWF0aW9uc0hhc0NoYW5nZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoZGV2aWNlICYmIG9yaWdpbkRldmljZSkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRldmljZS5nZXRTYXZhYmxlRGF0YSgpKSAhPT0gSlNPTi5zdHJpbmdpZnkob3JpZ2luRGV2aWNlLmdldFNhdmFibGVEYXRhKCkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaGFzRGV2aWNlSW5mb1Vuc2F2ZWRDaGFuZ2VzKGRldmljZTogRGV2aWNlLCBvcmlnaW5EZXZpY2U6IERldmljZSk6IGJvb2xlYW4ge1xuICAgIGlmIChkZXZpY2UgJiYgb3JpZ2luRGV2aWNlKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGV2aWNlLmdldERldmljZUluZm9TYXZhYmxlRGF0YSgpKSAhPT0gSlNPTi5zdHJpbmdpZnkob3JpZ2luRGV2aWNlLmdldERldmljZUluZm9TYXZhYmxlRGF0YSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldERhdGFUb1VwZGF0ZURldmljZShkZXZpY2U6IERldmljZSwgb3JpZ2luYWxEZXZpY2U6IERldmljZSkge1xuICAgIC8vIC0tLSB0byBleGNsdWRlIG5ld0xpbmVzIGZyb20gdXBkYXRlXG4gICAgLy8gY29uc3QgZGV2VG9VcGRhdGUgPSBuZXcgRGV2aWNlKGRldmljZSwgdGhpcy52YWxpZGF0aW9uU2VydmljZSk7XG4gICAgLy8gY29uc3Qgb3JpZ2luYWxEZXZUb1VwZGF0ZSA9IG5ldyBEZXZpY2Uob3JpZ2luYWxEZXZpY2UsIHRoaXMudmFsaWRhdGlvblNlcnZpY2UpO1xuICAgIC8vIC8vIEB0cy1pZ25vcmVcbiAgICAvLyBkZXZUb1VwZGF0ZS5saW5lQXNzb2NpYXRpb25zID0gZGV2VG9VcGRhdGUubGluZUFzc29jaWF0aW9ucz8uZmlsdGVyKGxpbmUgPT4gbGluZS5saW5lUGtpZCk7XG4gICAgLy8gLy8gQHRzLWlnbm9yZVxuICAgIC8vIG9yaWdpbmFsRGV2VG9VcGRhdGUubGluZUFzc29jaWF0aW9ucyA9IG9yaWdpbmFsRGV2VG9VcGRhdGUubGluZUFzc29jaWF0aW9ucz8uZmlsdGVyKGxpbmUgPT4gbGluZS5saW5lUGtpZCk7XG5cbiAgICBjb25zdCBib2R5ID0gU29ydGluZ1V0aWxzU2VydmljZS5kaWZmKG9yaWdpbmFsRGV2aWNlLmdldERldmljZUluZm9TYXZhYmxlRGF0YSgpLCBkZXZpY2UuZ2V0RGV2aWNlSW5mb1NhdmFibGVEYXRhKCksICdkZXZpY2UnLFxuICAgICAgWydzcGVlZERpYWxzJywgJ2J1c3lMYW1wRmllbGRzJ10pO1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgcHVibGljIGZldGNoTGVhblVzZXJEZXZpY2VzQ29udmVyc2F0aW9uQnlJZCh1c2VySWQ6IHN0cmluZywgc2l0ZUlkOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5MRUFOX1VTRVJfREVWSUNFU19DT05WRVJTQVRJT05fU1RBUlQucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKS5yZXBsYWNlKCc6dXNlcklkJywgZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudCh1c2VySWQpKSkpO1xuICB9XG5cbiAgcHVibGljIGdldFNsb3RzQnlCdXR0b25UZW1wbGF0ZShzaXRlSWQ6IG51bWJlciwgYnV0dG9uVGVtcGxhdGVOYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEJ1dHRvbnRlbXBsYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuTElORV9TTE9UUy5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHNpdGVJZCkpLCB7bmFtZTogYnV0dG9uVGVtcGxhdGVOYW1lfSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgdHJ1ZSkpO1xuICB9XG5cbiAgcHVibGljIGdldERldmljZURlZmF1bHRzKHNpdGVJZDogbnVtYmVyLCBkZXZpY2VUeXBlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLkRFVklDRV9ERUZBVUxUUy5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHNpdGVJZCkpLnJlcGxhY2UoJzpkZXZpY2VUeXBlJywgZGV2aWNlVHlwZSksIHt9KVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcih0cnVlLCB0cnVlKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWxsU2l0ZURpcmVjdG9yeU51bWJlcnMoc2l0ZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuQUxMX1NJVEVfRElSRUNUT1JZX05VTUJFUlMucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKSwge30pXG4gICAgICAucGlwZShtYXAoKGRpcmVjdG9yeU51bWJlcnM6IGFueVtdKSA9PiB7XG4gICAgICAgIHRoaXMuc2l0ZURpcmVjdG9yeU51bWJlcnMgPSBkaXJlY3RvcnlOdW1iZXJzIHx8IFtdO1xuICAgICAgICBpZighdGhpcy5zaXRlRGlyZWN0b3J5TnVtYmVycy5pbmNsdWRlcygnICcpKSB0aGlzLnNpdGVEaXJlY3RvcnlOdW1iZXJzLnVuc2hpZnQoJyAnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l0ZURpcmVjdG9yeU51bWJlcnM7XG4gICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgcHV0RGV2aWNlRmllbGRzKHNpdGVJZDogbnVtYmVyLCBkZXZpY2VOYW1lOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGJvZHk6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCd1c2VyVG9rZW4gPSAnLCB0b2tlbik7XG4gICAgY29uc3QgVVJMID0gQVBJLlVQREFURV9ERVZJQ0VfRklFTERTXG4gICAgICAucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKVxuICAgICAgLnJlcGxhY2UoJzpkZXZpY2VOYW1lJywgZGV2aWNlTmFtZSlcbiAgICAgIC5yZXBsYWNlKCc6dG9rZW4nLCB0b2tlbik7XG4gICAgY29uc29sZS5sb2coJ3VybCA9ICcsIFVSTCk7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFVSTCwgYm9keSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgdHJ1ZSkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNwZWVkRGlhbExpbmVzKHNpdGVJZDogbnVtYmVyLCBkZXZpY2VOYW1lOiBzdHJpbmcsIHVzZXJUb2tlbjogc3RyaW5nLCBib2R5OiBTcGVlZERpYWxMaW5lVXBkYXRlW10pIHtcbiAgICBjb25zdCBVUkwgPSBBUEkuVVBEQVRFX0RFVklDRV9TUEVFRF9ESUFMX0xJTkVTXG4gICAgICAucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKVxuICAgICAgLnJlcGxhY2UoJzpkZXZpY2VOYW1lJywgZGV2aWNlTmFtZSlcbiAgICAgIC5yZXBsYWNlKCc6dXNlclRva2VuJywgdXNlclRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoVVJMLCBib2R5KVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcih0cnVlLCB0cnVlKSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQmxmU3BlZWREaWFsTGluZXMoc2l0ZUlkOiBudW1iZXIsIGRldmljZU5hbWU6IHN0cmluZywgdXNlclRva2VuOiBzdHJpbmcsIGJvZHk6IEJsZlNwZWVkRGlhbExpbmVVcGRhdGVbXSkge1xuICAgIGNvbnN0IFVSTCA9IEFQSS5VUERBVEVfREVWSUNFX0JMRl9TUEVFRF9ESUFMX0xJTkVTXG4gICAgICAucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKVxuICAgICAgLnJlcGxhY2UoJzpkZXZpY2VOYW1lJywgZGV2aWNlTmFtZSlcbiAgICAgIC5yZXBsYWNlKCc6dXNlclRva2VuJywgdXNlclRva2VuKTtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoVVJMLCBib2R5KVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcih0cnVlLCB0cnVlKSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXZhaWxhYmxlU2xvdHMoc2l0ZUlkOiBudW1iZXIsIGRldmljZTogRGV2aWNlKTogYW55IHtcbiAgICBpZiAoIWRldmljZSkge1xuICAgICAgdGhyb3cgdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ3Rlc3QnKSk7XG4gICAgfVxuICAgIGlmICghZGV2aWNlLmJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICB0aHJvdyB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcigndGVzdCcpKTtcbiAgICB9XG4gICAgaWYgKGRldmljZS5idXR0b25UZW1wbGF0ZSA9PT0gJycpIHtcbiAgICAgIGRldmljZS5hdmFpbGFibGVTbG90cyA9IFtdO1xuICAgICAgcmV0dXJuIG9mKGRldmljZSk7XG4gICAgfVxuICAgIGNvbnN0IGV4aXN0aW5nUG9zaXRpb25zID0gZGV2aWNlLmxpbmVBc3NvY2lhdGlvbnMubWFwKChsaW5lQXNzb2NpYXRpb246IExpbmVBc3NvY2lhdGlvbkludGVyZmFjZSkgPT4gbGluZUFzc29jaWF0aW9uLnBvc2l0aW9uKTtcbiAgICByZXR1cm4gdGhpcy5nZXRTbG90c0J5QnV0dG9uVGVtcGxhdGUoc2l0ZUlkLCBkZXZpY2UuYnV0dG9uVGVtcGxhdGUpXG4gICAgICAucGlwZShtYXAoKGJ1dHRvblRlbXBsYXRlOiBCdXR0b250ZW1wbGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLmxpbmVTbG90c0xpc3QgPSBidXR0b25UZW1wbGF0ZS5saW5lU2xvdHM7XG4gICAgICAgIGRldmljZS5hdmFpbGFibGVTbG90cyA9IHRoaXMubGluZVNsb3RzTGlzdC5maWx0ZXIoKHBvc2l0aW9uOiBudW1iZXIpID0+ICFleGlzdGluZ1Bvc2l0aW9ucy5pbmNsdWRlcyhwb3NpdGlvbikpO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUxpbmVTbG90c0xpc3QgPSBkZXZpY2UuYXZhaWxhYmxlU2xvdHMuc2xpY2UoKTtcbiAgICAgICAgcmV0dXJuIGRldmljZTtcbiAgICAgIH0pKVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcih0cnVlLCB0cnVlKSk7XG4gIH1cblxufVxuIl19
@@ -90,19 +90,22 @@ export class UserService {
90
90
  }));
91
91
  // .pipe(this.handleError(false, true));
92
92
  }
93
- fetchDIUserDevice(siteId, userId, deviceType) {
93
+ fetchDIUserDevice(siteId, userId, deviceType, deviceName) {
94
94
  this.siteId = siteId;
95
95
  this.userId = userId;
96
96
  return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))
97
- .pipe(map((result) => {
97
+ .pipe(switchMap((result) => {
98
98
  const user = result && Object.values(result)[0];
99
99
  const userToken = result && Object.keys(result)[0];
100
+ let foundDevice;
100
101
  if (user) {
101
102
  this._userToken = userToken;
102
103
  this._userName = user.firstName;
103
104
  this._userLastName = user.lastName;
104
105
  this._cucmId = user.cucmId;
105
- const foundDevice = user.devices.find((device) => device.deviceType === deviceType);
106
+ foundDevice = deviceName
107
+ ? user.devices.find((device) => device.name === deviceName)
108
+ : user.devices.find((device) => device.deviceType === deviceType);
106
109
  if (foundDevice) {
107
110
  this._userDevice = new DeviceProfile({
108
111
  ...foundDevice,
@@ -120,8 +123,12 @@ export class UserService {
120
123
  index: line && line.index || undefined,
121
124
  position: line && line.position || undefined,
122
125
  textLabel: line && line.textLabel || '',
126
+ displayLabel: line && line.displayLabel || '',
127
+ e164Mask: line && line.e164Mask || '',
123
128
  alertingName: line && line.alertingName || '',
124
- callerNumber: line && line.callerNumber || ''
129
+ callerNumber: line && line.callerNumber || '',
130
+ logMissedCall: line && line.logMissedCall || '',
131
+ callInfoDisplay: line && line.callInfoDisplay || undefined
125
132
  };
126
133
  }),
127
134
  softwareVersion: foundDevice?.firmwareVersion
@@ -129,9 +136,30 @@ export class UserService {
129
136
  }
130
137
  }
131
138
  this.originDevice = this._userDevice ? JSON.stringify(this._userDevice.getSavableData()) : '';
132
- return this._userDevice;
139
+ if (!foundDevice) {
140
+ return of(this._userDevice);
141
+ }
142
+ const commonPhoneConfigName = user?.devices?.[0]?.commonPhoneConfigName || '';
143
+ return this.getDeviceExtraOptions(this.siteId, foundDevice.name, commonPhoneConfigName)
144
+ .pipe(map((extraOptions) => {
145
+ if (this._userDevice) {
146
+ this._userDevice.loggedIntoHuntGroup = extraOptions?.loggedIntoHuntGroup;
147
+ this._userDevice.remoteDevice = extraOptions?.remoteDevice;
148
+ this._userDevice.hotlineDevice = extraOptions?.hotlineDevice;
149
+ this._userDevice.ignorePresentationIndicators = extraOptions?.ignorePresentationIndicators;
150
+ this._userDevice.useDevicePoolCgpnIngressDN = extraOptions?.useDevicePoolCgpnIngressDN;
151
+ }
152
+ return this._userDevice;
153
+ }));
133
154
  }));
134
155
  }
156
+ getDeviceExtraOptions(siteId, deviceName, commonPhoneConfigName) {
157
+ return this.apiService.fetch(API.DEVICE_EXTRA_OPTIONS
158
+ .replace(':siteId', String(siteId))
159
+ .replace(':deviceName', deviceName)
160
+ .replace(':commonPhoneConfigName', encodeURIComponent(commonPhoneConfigName)));
161
+ // .pipe(this.handleError(false, true));
162
+ }
135
163
  getMacAddress(name) {
136
164
  const macRegex = /^[A-Fa-f0-9]{12}$/;
137
165
  let macAddress;
@@ -363,4 +391,4 @@ UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
363
391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserService, decorators: [{
364
392
  type: Injectable
365
393
  }], ctorParameters: function () { return [{ type: i1.APIService }, { type: i2.LineService }]; } });
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvc2VydmljZXMvdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFJL0MsTUFBTSxPQUFPLFdBQVc7SUFhdEIsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFJRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUlELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBSUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxJQUFJLFVB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LFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6RCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ25ELHlFQUF5RTtnQkFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQ2xDLE9BQU87YUFDUjtTQUNGO0lBQ0gsQ0FBQzs7eUdBOVpVLFdBQVc7NkdBQVgsV0FBVzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vYXBwLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBEZXZpY2VQcm9maWxlIH0gZnJvbSAnLi4vY2xhc3Nlcy9kZXZpY2VQcm9maWxlJztcbmltcG9ydCB7IERldmljZSB9IGZyb20gJy4vLi4vY2xhc3Nlcy9kZXZpY2UnO1xuaW1wb3J0IHsgTGluZUFzc29jaWF0aW9uIH0gZnJvbSAnLi8uLi9jbGFzc2VzL2xpbmUtYXNzb2NpYXRpb24nO1xuaW1wb3J0IHsgTGluZUFzc29jaWF0aW9uSW50ZXJmYWNlIH0gZnJvbSAnLi8uLi9jbGFzc2VzL2xpbmUtYXNzb2NpYXRpb24taW50ZXJmYWNlJztcbmltcG9ydCB7IFNpbXBsaWZpZWRVc2VyIH0gZnJvbSAnLi8uLi9jbGFzc2VzL3NpbXBsaWZpZWQtdXNlcic7XG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBMaW5lU2VydmljZSB9IGZyb20gJy4vbGluZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRpbmdVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3NvcnRpbmctdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3ZhbGlkYXRpb24uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdHtcbiAgc2l0ZUlkOiBudW1iZXIgPSAtMTtcbiAgdXNlcklkOiBzdHJpbmcgPSAnJztcbiAgdXNlcklkRXhpc3RQZW5kaW5nID0gZmFsc2U7XG4gIGhhc0V4aXN0ZWRVc2VySWQgPSBmYWxzZTtcbiAgdXNlciE6IFNpbXBsaWZpZWRVc2VyO1xuICBvcmlnaW5Vc2VyITogU2ltcGxpZmllZFVzZXI7XG4gIG9yaWdpbkRldmljZSE6IGFueTtcbiAgb25Vc2VyTGluZVNhdmVkJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgb25GZXRjaFVzZXJUb2tlbiQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBfdXNlclRva2VuOiBzdHJpbmcgPSAnJztcblxuICBnZXQgdXNlclRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLl91c2VyVG9rZW47XG4gIH1cblxuICBwcml2YXRlIF91c2VyTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgZ2V0IHVzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXJOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXNlckxhc3ROYW1lOiBzdHJpbmcgPSAnJztcblxuICBnZXQgdXNlckxhc3ROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXJMYXN0TmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgX2N1Y21JZDogc3RyaW5nID0gJyc7XG5cbiAgZ2V0IGN1Y21JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jdWNtSWQ7XG4gIH1cblxuICBwcml2YXRlIF91c2VyRGV2aWNlOiBEZXZpY2VQcm9maWxlIHwgdW5kZWZpbmVkO1xuXG4gIGdldCB1c2VyRGV2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl91c2VyRGV2aWNlO1xuICB9XG5cbiAgZ2V0IGxpbmVBc3NvY2lhdGlvbigpOiBMaW5lQXNzb2NpYXRpb25JbnRlcmZhY2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnVzZXJEZXZpY2UgJiYgdGhpcy51c2VyRGV2aWNlLmxpbmVBc3NvY2lhdGlvbnMgJiYgdGhpcy51c2VyRGV2aWNlLmxpbmVBc3NvY2lhdGlvbnNbMF07XG4gIH1cblxuICBnZXQgb3JpZ2luTGluZUFzc29jaWF0aW9uKCk6IExpbmVBc3NvY2lhdGlvbiB8IExpbmVBc3NvY2lhdGlvbkludGVyZmFjZSB7XG4gICAgcmV0dXJuIHRoaXMub3JpZ2luRGV2aWNlICYmIEpTT04ucGFyc2UodGhpcy5vcmlnaW5EZXZpY2UpLmxpbmVBc3NvY2lhdGlvbnNbMF07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsaW5lU2VydmljZTogTGluZVNlcnZpY2VcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuc2l0ZUlkKVxuICB9XG5cbiAgcmVzZXRMaW5lQXNzb2NpYXRpb24oZGV2aWNlSW5kZXg6IG51bWJlciwgbGluZUluZGV4OiBudW1iZXIsIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSk6IHZvaWQge1xuICAgIGNvbnN0IG9yaWdpbkxpbmUgPSB0aGlzLm9yaWdpblVzZXI/LmRldmljZXNbZGV2aWNlSW5kZXhdPy5saW5lQXNzb2NpYXRpb25zW2xpbmVJbmRleF07XG4gICAgaWYgKHRoaXMudXNlcj8uZGV2aWNlc1tkZXZpY2VJbmRleF0/LmxpbmVBc3NvY2lhdGlvbnNbbGluZUluZGV4XSAmJiBvcmlnaW5MaW5lKSB7XG4gICAgICB0aGlzLnVzZXIuZGV2aWNlc1tkZXZpY2VJbmRleF0ubGluZUFzc29jaWF0aW9uc1tsaW5lSW5kZXhdID0gbmV3IExpbmVBc3NvY2lhdGlvbihKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9yaWdpbkxpbmUuZ2V0RnVsbERhdGEoKSkpLCB2YWxpZGF0aW9uU2VydmljZSlcbiAgICB9XG4gIH1cblxuICByZXNldERldmljZShjdXJyZW50RGV2aWNlOiBEZXZpY2UsIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSk6IHZvaWQge1xuICAgIGNvbnN0IG9yaWdpbkRldmljZSA9IHRoaXMub3JpZ2luVXNlci5kZXZpY2VzLmZpbmQoZGV2aWNlID0+IGRldmljZS5uYW1lID09PSBjdXJyZW50RGV2aWNlLm5hbWUpO1xuICAgIGNvbnN0IGRldmljZUluZCA9IHRoaXMudXNlci5kZXZpY2VzLmZpbmRJbmRleChkZXZpY2UgPT4gZGV2aWNlLm5hbWUgPT09IGN1cnJlbnREZXZpY2UubmFtZSk7XG4gICAgaWYgKG9yaWdpbkRldmljZSAmJiBkZXZpY2VJbmQgPiAtMSkge1xuICAgICAgY29uc3QgbGluZUFzc29jaWF0aW9ucyA9IHRoaXMudXNlci5kZXZpY2VzW2RldmljZUluZF0ubGluZUFzc29jaWF0aW9ucztcbiAgICAgIHRoaXMudXNlci5kZXZpY2VzW2RldmljZUluZF0gPSBuZXcgRGV2aWNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3JpZ2luRGV2aWNlLmdldE5vTGluZXNGdWxsRGF0YSgpKSksIHZhbGlkYXRpb25TZXJ2aWNlKTtcbiAgICAgIHRoaXMudXNlci5kZXZpY2VzW2RldmljZUluZF0ubGluZUFzc29jaWF0aW9ucyA9IGxpbmVBc3NvY2lhdGlvbnM7XG4gICAgICBjb25zb2xlLmxvZygnZGV2aWNlIGFmdGVyIHJlc2V0ID0gJywgdGhpcy51c2VyLmRldmljZXNbZGV2aWNlSW5kXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZldGNoVXNlclRva2VuKHNpdGVJZDogbnVtYmVyLCB1c2VySWQ6IHN0cmluZywgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLCBpc1NldE5ld1Rva2VuT25seT86IGJvb2xlYW4pOiBhbnkge1xuICAgIC8qaWYgKHRoaXMuc2l0ZUlkID09PSBzaXRlSWQgJiYgdGhpcy51c2VySWQgPT09IHVzZXJJZCAmJiB0aGlzLnVzZXIpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnVzZXIpO1xuICAgIH0qL1xuICAgIHRoaXMuc2l0ZUlkID0gc2l0ZUlkO1xuICAgIHRoaXMudXNlcklkID0gdXNlcklkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLlVTRVJfVE9LRU4ucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyh0aGlzLnNpdGVJZCkpLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJJZCkpKSlcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHJlc3VsdCAmJiBPYmplY3QudmFsdWVzKHJlc3VsdClbMF07XG4gICAgICAgIGNvbnN0IHVzZXJUb2tlbiA9IHJlc3VsdCAmJiBPYmplY3Qua2V5cyhyZXN1bHQpWzBdO1xuICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgIGlmICghaXNTZXROZXdUb2tlbk9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2ltcGxpZmllZFVzZXIodXNlciwgdmFsaWRhdGlvblNlcnZpY2UsIHVzZXJUb2tlbik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXJUb2tlbiA9IHVzZXJUb2tlbjtcbiAgICAgICAgICAgIC8vIHRoaXMub3JpZ2luVXNlci50b2tlbiA9IHVzZXIudG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub25GZXRjaFVzZXJUb2tlbiQubmV4dCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSkpXG4gICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcihmYWxzZSwgdHJ1ZSkpO1xuICB9XG5cbiAgcHVibGljIGZldGNoRElVc2VyRGV2aWNlKHNpdGVJZDogbnVtYmVyLCB1c2VySWQ6IHN0cmluZywgZGV2aWNlVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zaXRlSWQgPSBzaXRlSWQ7XG4gICAgdGhpcy51c2VySWQgPSB1c2VySWQ7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuVVNFUl9UT0tFTi5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnVzZXJJZCcsIGVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQodXNlcklkKSkpKVxuICAgICAgLnBpcGUobWFwKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gcmVzdWx0ICYmIE9iamVjdC52YWx1ZXMocmVzdWx0KVswXTtcbiAgICAgICAgY29uc3QgdXNlclRva2VuID0gcmVzdWx0ICYmIE9iamVjdC5rZXlzKHJlc3VsdClbMF07XG5cbiAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICB0aGlzLl91c2VyVG9rZW4gPSB1c2VyVG9rZW47XG4gICAgICAgICAgdGhpcy5fdXNlck5hbWUgPSB1c2VyLmZpcnN0TmFtZTtcbiAgICAgICAgICB0aGlzLl91c2VyTGFzdE5hbWUgPSB1c2VyLmxhc3ROYW1lO1xuICAgICAgICAgIHRoaXMuX2N1Y21JZCA9IHVzZXIuY3VjbUlkO1xuICAgICAgICAgIGNvbnN0IGZvdW5kRGV2aWNlID0gdXNlci5kZXZpY2VzLmZpbmQoKGRldmljZTogYW55KSA9PiBkZXZpY2UuZGV2aWNlVHlwZSA9PT0gZGV2aWNlVHlwZSk7XG4gICAgICAgICAgaWYoZm91bmREZXZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3VzZXJEZXZpY2UgPSBuZXcgRGV2aWNlUHJvZmlsZSh7XG4gICAgICAgICAgICAgIC4uLmZvdW5kRGV2aWNlLFxuICAgICAgICAgICAgICBtb2RlbDogZm91bmREZXZpY2U/LmRldmljZVR5cGUsXG4gICAgICAgICAgICAgIG1hY0FkZHJlc3M6IHRoaXMuZ2V0TWFjQWRkcmVzcyhmb3VuZERldmljZS5uYW1lKSxcbiAgICAgICAgICAgICAgbGluZXM6IGZvdW5kRGV2aWNlPy5saW5lQXNzb2NpYXRpb25zPy5tYXAoKGxpbmU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kTGluZSA9IHVzZXI/LmxpbmVzPy5maW5kKChsOiBhbnkpID0+IGwucGtpZCA9PT0gbGluZS5saW5lUGtpZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGAke3RoaXMuX3VzZXJOYW1lfSAke3RoaXMuX3VzZXJMYXN0TmFtZX1gLFxuICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uOiBsaW5lICYmIGxpbmUuZGlyZWN0b3J5TnVtYmVyICYmIGxpbmUuZGlyZWN0b3J5TnVtYmVyLnJvdXRlUGFydGl0aW9uTmFtZSAmJiBsaW5lLmRpcmVjdG9yeU51bWJlci5kaXJlY3RvcnlOdW1iZXIgfHwgJycsXG4gICAgICAgICAgICAgICAgICBudW1iZXI6IGZvdW5kTGluZSAhPT0gLTEgPyBmb3VuZExpbmUubWFwcGVkRGlkc1swXSA6ICcnLFxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZvdW5kTGluZSAmJiBmb3VuZExpbmUuZGlkUGF0dGVybnMgJiYgZm91bmRMaW5lLmRpZFBhdHRlcm5zWzBdID8gZm91bmRMaW5lLmRpZFBhdHRlcm5zWzBdLmRlc2NyaXB0aW9uIDogJycsXG4gICAgICAgICAgICAgICAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IGxpbmUgJiYgbGluZS5kaXJlY3RvcnlOdW1iZXIucm91dGVQYXJ0aXRpb25OYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgcGtpZDogbGluZSAmJiBsaW5lLmxpbmVQa2lkIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgaW5kZXg6IGxpbmUgJiYgbGluZS5pbmRleCB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbGluZSAmJiBsaW5lLnBvc2l0aW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHRleHRMYWJlbDogbGluZSAmJiBsaW5lLnRleHRMYWJlbCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgIGFsZXJ0aW5nTmFtZTogbGluZSAmJiBsaW5lLmFsZXJ0aW5nTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgIGNhbGxlck51bWJlcjogbGluZSAmJiBsaW5lLmNhbGxlck51bWJlciB8fCAnJ1xuICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBzb2Z0d2FyZVZlcnNpb246IGZvdW5kRGV2aWNlPy5maXJtd2FyZVZlcnNpb25cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3JpZ2luRGV2aWNlID0gdGhpcy5fdXNlckRldmljZSA/IEpTT04uc3RyaW5naWZ5KHRoaXMuX3VzZXJEZXZpY2UuZ2V0U2F2YWJsZURhdGEoKSkgOiAnJztcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJEZXZpY2U7XG4gICAgICB9KSlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWFjQWRkcmVzcyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1hY1JlZ2V4ID0gL15bQS1GYS1mMC05XXsxMn0kLztcbiAgICBsZXQgbWFjQWRkcmVzcztcblxuICAgIGlmIChuYW1lLmxlbmd0aCA9PT0gMTIgJiYgbWFjUmVnZXgudGVzdChuYW1lKSkge1xuICAgICAgbWFjQWRkcmVzcyA9IG5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBuYW1lLnNsaWNlKDMpO1xuICAgICAgbWFjQWRkcmVzcyA9IG1hY1JlZ2V4LnRlc3QodHJpbW1lZCkgPyB0cmltbWVkIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBtYWNBZGRyZXNzO1xuICB9XG5cbiAgcHVibGljIGZldGNoV2ViZXhVc2VyRGV2aWNlKGN1c3RvbWVySWQ6IHN0cmluZywgdXNlcklkOiBzdHJpbmcsIGRldmljZVR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLldFQkVYX1VTRVJfVE9LRU4ucmVwbGFjZSgnOmN1c3RvbWVySWQnLCBjdXN0b21lcklkKS5yZXBsYWNlKCc6dXNlcklkJywgZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudCh1c2VySWQpKSkpLFxuICAgICAgdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5XRUJFWF9VU0VSX0RFVklDRVMucmVwbGFjZSgnOmN1c3RvbWVySWQnLCBjdXN0b21lcklkKS5yZXBsYWNlKCc6dXNlcklkJywgZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudCh1c2VySWQpKSkpXG4gICAgXSlcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuX3VzZXJOYW1lID0gcmVzdWx0c1swXS5maXJzdE5hbWU7XG4gICAgICAgIHRoaXMuX3VzZXJMYXN0TmFtZSA9IHJlc3VsdHNbMF0ubGFzdE5hbWU7XG4gICAgICAgIGlmKHJlc3VsdHNbMV0pIHtcbiAgICAgICAgICBjb25zdCBmb3VuZERldmljZSA9IHJlc3VsdHNbMV0uZGV2aWNlcy5maW5kKChkZXZpY2U6IGFueSkgPT4gZGV2aWNlLm1vZGVsID09PSBkZXZpY2VUeXBlKTtcbiAgICAgICAgICB0aGlzLl91c2VyRGV2aWNlID0gbmV3IERldmljZVByb2ZpbGUoe1xuICAgICAgICAgICAgLi4uZm91bmREZXZpY2UsXG4gICAgICAgICAgICBtYWNBZGRyZXNzOiBmb3VuZERldmljZS5tYWMsXG4gICAgICAgICAgICBtYXhMaW5lQ291bnQ6IGZvdW5kRGV2aWNlPy5kZXZpY2VNZW1iZXJzPy5tYXhMaW5lQ291bnQsXG4gICAgICAgICAgICBsaW5lczogZm91bmREZXZpY2U/LmRldmljZU1lbWJlcnM/Lm1lbWJlcnM/Lm1hcCgobWVtYmVyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBgJHttZW1iZXIuZmlyc3ROYW1lfSAke21lbWJlci5sYXN0TmFtZX1gLFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogbWVtYmVyLmV4dGVuc2lvblxuICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyRGV2aWNlO1xuICAgICAgfSkpXG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVXNlckZpZWxkcyhib2R5OiBhbnkpOiBhbnkge1xuICAgIGlmICghdGhpcy51c2VySWQgfHwgIXRoaXMuc2l0ZUlkIHx8ICF0aGlzLnVzZXI/LnRva2VuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuVVBEQVRFX1VTRVJfRklFTERTLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKS5yZXBsYWNlKCc6dG9rZW4nLCB0aGlzLnVzZXJUb2tlbiksIGJvZHkpXG4gICAgICAvLyAucGlwZSh0aGlzLmhhbmRsZUVycm9yKGZhbHNlLCB0cnVlKSk7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hVc2VyQnlJZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy51c2VySWRFeGlzdFBlbmRpbmcgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLlVTRVJfQllfSUQucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyh0aGlzLnNpdGVJZCkpLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KGlkKSkpKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMudXNlcklkRXhpc3RQZW5kaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hMZWFuVXNlckNvbnZlcnNhdGlvbkJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLkxFQU5fVVNFUl9DT05WRVJTQVRJT05fU1RBUlQucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyh0aGlzLnNpdGVJZCkpLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KGlkKSkpKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaExlYW5Vc2VyRGV2aWNlc0NvbnZlcnNhdGlvbkJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLkxFQU5fVVNFUl9ERVZJQ0VTX0NPTlZFUlNBVElPTl9TVEFSVC5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnVzZXJJZCcsIGVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQoaWQpKSkpO1xuICB9XG4gIHB1YmxpYyBmZXRjaExlYW5Vc2VyTGluZXNDb252ZXJzYXRpb25CeUlkKGlkOiBzdHJpbmcsIGxlYW5Vc2VyRGV2aWNlc1Rva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5MRUFOX1VTRVJfTElORVNfQ09OVkVSU0FUSU9OX1NUQVJULnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKVxuICAgICAgLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KGlkKSkpLnJlcGxhY2UoJzpsZWFuVXNlckRldmljZXNUb2tlbicsIGxlYW5Vc2VyRGV2aWNlc1Rva2VuKSk7XG4gIH1cbiAgcHVibGljIGZldGNoTGVhblVzZXJTTlJDb252ZXJzYXRpb25CeUlkKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5MRUFOX1VTRVJfU05SX0NPTlZFUlNBVElPTl9TVEFSVC5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnVzZXJJZCcsIGVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQoaWQpKSkpO1xuICB9XG5cbiAgcHVibGljIHBlcnNpc3RDYWNoZUNoYW5nZXMoKSB7XG4gICAgLypjb25zdCBwYXJhbXMgPSB7XG4gICAgICBleGNsdWRlRGV2aWNlRXh0cmFPcHRpb25zOiB0cnVlXG4gICAgfTsqL1xuICAgIHJldHVybiB0aGlzLnByb2Nlc3NVc2VyQ2hhbmdlc1RvQ2FjaGUoKVxuICAgICAgLnBpcGUobWFwKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLlBFUlNJU1RfVVNFUl9DQUNIRS5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnRva2VuJywgdGhpcy51c2VyVG9rZW4pLCB7fSwge30pXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICB9KVxuICAgICAgICAgIC8vIC5waXBlKG1hcCgodXNlcikgPT4ge1xuICAgICAgICAgIC8vICAgLy8gdGhpcy5zZXRVc2VyKHVzZXIsIGZhbHNlLCB0aGlzLnVzZXIudG9rZW4pO1xuICAgICAgICAgIC8vICAgdGhpcy51c2VyLmhhc01vZGlmaWVkQ2FjaGUgPSBmYWxzZTtcbiAgICAgICAgICAvLyB9KSlcbiAgICAgICAgICAvLyAucGlwZSh0aGlzLmhhbmRsZUVycm9yKHRydWUsIHRydWUpKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzVXNlckNoYW5nZXNUb0NhY2hlKCk6IGFueSB7XG4gICAgY29uc3QgY2FsbHMgPSBbXTtcbiAgICBjb25zdCBib2R5ID0gVXRpbHNTZXJ2aWNlLmRpZmYodGhpcy5vcmlnaW5Vc2VyLmdldFVzZXJEZXRhaWxzU2F2YWJsZURhdGEoKSwgdGhpcy51c2VyLmdldFVzZXJEZXRhaWxzU2F2YWJsZURhdGEoKSwgJ3VzZXInKTtcbiAgICBpZiAoYm9keT8ubGVuZ3RoKSB7XG4gICAgICBjYWxscy5wdXNoKHRoaXMudXBkYXRlVXNlckZpZWxkcyhib2R5KSk7XG4gICAgfVxuICAgIGlmICghY2FsbHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKHRoaXMudXNlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcmtKb2luKGNhbGxzKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZXM6IGFueSkgPT4ge1xuICAgICAgICAvLyBBcGlVc2VyUmVzcG9uc2VcbiAgICAgICAgdGhpcy5oYW5kbGVTYXZlVXNlclJlc3BvbnNlKHJlc3BvbnNlcyk7XG4gICAgICB9KSlcbiAgICAvLyAucGlwZSh0aGlzLmhhbmRsZUVycm9yKGZhbHNlLCB0cnVlKSk7XG5cbiAgfVxuXG4gIHB1YmxpYyBzYXZlTmV3TGluZShsaW5lOiBhbnkpOiBhbnkge1xuICAgIHRoaXMuZGVsZXRlTGluZSh0aGlzLnNpdGVJZCwgbGluZS5wa2lkLCBlbmNvZGVVUklDb21wb25lbnQodGhpcy51c2VyVG9rZW4pKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IFVSTCA9IEFQSS5QRVJTSVNUX1VTRVJfQ0FDSEUucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyh0aGlzLnNpdGVJZCkpLnJlcGxhY2UoJzp0b2tlbicsIHRoaXMudXNlclRva2VuKTtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLnBvc3QoVVJMLCB7fSwgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ydW5OZXdMaW5lQ3JlYXRpb24obGluZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBwZXJzaXN0VXNlckNhY2hlKCk6IGFueSB7XG4gICAgY29uc3QgVVJMID0gQVBJLlBFUlNJU1RfVVNFUl9DQUNIRS5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnRva2VuJywgdGhpcy51c2VyVG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChVUkwsIHt9LCApO1xuICB9XG5cbiAgcHVibGljIHJ1bk5ld0xpbmVDcmVhdGlvbihsaW5lOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBDUkVBVEUgTkVXIExJTkVcbiAgICBjb25zdCBuZXdMaW5lQm9keSA9IFNvcnRpbmdVdGlsc1NlcnZpY2UuZGlmZihcbiAgICAgIHRoaXMubGluZVNlcnZpY2UuZ2VuZXJhdGVMaW5lQXNzb2NpYXRpb25Gcm9tTGluZShudWxsKSxcbiAgICAgIHRoaXMubGluZVNlcnZpY2UuZ2VuZXJhdGVMaW5lQXNzb2NpYXRpb25Gcm9tTGluZShsaW5lKSxcbiAgICAgICdkZXZpY2UubGluZUFzc29jaWF0aW9ucycsIG51bGxcbiAgICApO1xuICAgIHRoaXMuYXNzb2NpYXRlTGluZVRvVXNlckRldmljZShcbiAgICAgIHRoaXMuc2l0ZUlkLFxuICAgICAgdGhpcy51c2VyRGV2aWNlICYmIHRoaXMudXNlckRldmljZS5uYW1lIHx8ICcnLFxuICAgICAgbmV3TGluZUJvZHksXG4gICAgICBudWxsLFxuICAgICAgdGhpcy5saW5lQXNzb2NpYXRpb24/LmNhbGxpbmdTZWFyY2hTcGFjZVxuICAgIClcbiAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgY29uc3QgVVJMID0gQVBJLlBFUlNJU1RfVVNFUl9DQUNIRS5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnRva2VuJywgdGhpcy51c2VyVG9rZW4pO1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFVSTCwge30sICk7XG4gICAgfSkpXG4gICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlPy5jdXJyZW50VXBkYXRlZFVzZXIpIHtcbiAgICAgICAgY29uc3QgbGluZVBrSWQgPSByZXNwb25zZS5jdXJyZW50VXBkYXRlZFVzZXIuZGV2aWNlc1swXT8ubGluZUFzc29jaWF0aW9uc1swXT8ubGluZVBraWQgfHwgcmVzcG9uc2UuY3VycmVudFVwZGF0ZWRVc2VyLmRldmljZXNbMF0/LmxpbmVBc3NvY2lhdGlvbnNbMF0/LmxpbmVMb2NhbElkO1xuICAgICAgICBmb3JrSm9pbihbXG4gICAgICAgICAgdGhpcy51cGRhdGVMaW5lRmllbGRzKHRoaXMuc2l0ZUlkLCBsaW5lUGtJZCwgdGhpcy51c2VyVG9rZW4sIHRoaXMubGluZUFzc29jaWF0aW9uPy5hbGVydGluZ05hbWUpLFxuICAgICAgICAgIHRoaXMudXBkYXRlRGV2aWNlRmllbGRzKHRoaXMuc2l0ZUlkLCB0aGlzLnVzZXJEZXZpY2UgJiYgdGhpcy51c2VyRGV2aWNlLm5hbWUgfHwgJycsIHRoaXMudXNlclRva2VuKVxuICAgICAgICBdKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbERldmljZURhdGEgPSBKU09OLnBhcnNlKHRoaXMub3JpZ2luRGV2aWNlKTtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbERldmljZUxpbmUgPSBvcmlnaW5hbERldmljZURhdGEubGluZXMuZmluZCgob3JpZ0xpbmU6IGFueSkgPT4gb3JpZ0xpbmUucGtpZCA9PT0gbGluZS5wa2lkKTtcbiAgICAgICAgICBpZihvcmlnaW5hbERldmljZUxpbmUpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsRGV2aWNlRGF0YS5leHRlbnNpb24gPSBsaW5lLmV4dGVuc2lvbjtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luRGV2aWNlID0gSlNPTi5zdHJpbmdpZnkob3JpZ2luYWxEZXZpY2VEYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5vblVzZXJMaW5lU2F2ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pXG4gICAgLy8gLS0tLS1cbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVMaW5lKHNpdGVJZDogbnVtYmVyLCBwa2lkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZShBUEkuREVMRVRFX0xJTkUucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKS5yZXBsYWNlKCc6cGtpZCcsIHBraWQpLnJlcGxhY2UoJzp0b2tlbicsIGVuY29kZVVSSUNvbXBvbmVudCh0b2tlbikpLCB7fSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgZmFsc2UpKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhc3NvY2lhdGVMaW5lKHNpdGVJZDogbnVtYmVyLCBsaW5lUGtpZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBkZXZpY2VOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZShcbiAgICAgIEFQSS5ESVNBU1NPQ0lBVEVfTElORS5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHNpdGVJZCkpXG4gICAgICAgIC5yZXBsYWNlKCc6bGluZVBraWQnLCBsaW5lUGtpZClcbiAgICAgICAgLnJlcGxhY2UoJzpkZXZpY2VOYW1lJywgZGV2aWNlTmFtZSlcbiAgICAgICAgLnJlcGxhY2UoJzp0b2tlbicsIGVuY29kZVVSSUNvbXBvbmVudCh0b2tlbikpLCB7fSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgZmFsc2UpKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVMaW5lRmllbGRzKHNpdGVJZDogbnVtYmVyLCBwa2lkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGFsZXJ0aW5nTmFtZTogYW55KSB7XG4gICAgY29uc3QgYm9keSA9IFsnbGluZS5kZXNjcmlwdGlvbj0nLCBgbGluZS5hbGVydGluZ05hbWU9JHthbGVydGluZ05hbWV9YF07XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5VUERBVEVfTElORV9GSUVMRFMucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKS5yZXBsYWNlKCc6cGtpZCcsIGVuY29kZVVSSUNvbXBvbmVudChwa2lkKSkucmVwbGFjZSgnOnRva2VuJywgZW5jb2RlVVJJQ29tcG9uZW50KHRva2VuKSksIGJvZHkpXG4gICAgICAvLyAucGlwZSh0aGlzLmhhbmRsZUVycm9yKHRydWUsIGZhbHNlKSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRGV2aWNlRmllbGRzKHNpdGVJZDogbnVtYmVyLCBkZXZpY2VOYW1lOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpIHtcbiAgICBjb25zdCBib2R5ID0gWydkZXZpY2UuYXNzb2NpYXRlZEROcy4wPW51bGwnXTtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLlVQREFURV9ERVZJQ0VfRklFTERTLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcoc2l0ZUlkKSkucmVwbGFjZSgnOmRldmljZU5hbWUnLCBkZXZpY2VOYW1lKS5yZXBsYWNlKCc6dG9rZW4nLCBlbmNvZGVVUklDb21wb25lbnQodG9rZW4pKSwgYm9keSlcbiAgICAvLyAucGlwZSh0aGlzLmhhbmRsZUVycm9yKHRydWUsIGZhbHNlKSk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tEZXN0aW5hdGlvbk51bWJlcihzaXRlSWQ6IHN0cmluZywgZGlyZWN0b3J5TnVtYmVyOiBzdHJpbmcsIHJvdXRlUGFydGl0aW9uTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgZG50eXBlOiAnRVhURU5TSU9OJ1xuICAgIH07XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIGRpcmVjdG9yeU51bWJlcjogZGlyZWN0b3J5TnVtYmVyLFxuICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiByb3V0ZVBhcnRpdGlvbk5hbWVcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuQ0hFQ0tfREVTVElOQVRJT05fTlVNQkVSLnJlcGxhY2UoJzpzaXRlSWQnLCBzaXRlSWQpLCBib2R5LCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGFzc29jaWF0ZUxpbmVUb1VzZXJEZXZpY2Uoc2l0ZUlkOiBudW1iZXIsIGRldmljZU5hbWU6IHN0cmluZywgYm9keTogYW55LCBwa2lkOiBhbnksIGNzczogYW55KSB7XG4gICAgbGV0IHBhcmFtcyA9IHt9O1xuICAgIGlmIChwa2lkKSB7XG4gICAgICBwYXJhbXMgPSB7bGluZVBraWQ6IHBraWR9O1xuICAgIH1cbiAgICBpZiAoY3NzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBwYXJhbXNbJ2NzcyddID0gY3NzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkFTU09DSUFURV9MSU5FLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcoc2l0ZUlkKSkucmVwbGFjZSgnOmRldmljZU5hbWUnLCBkZXZpY2VOYW1lKVxuICAgICAgLnJlcGxhY2UoJzp0b2tlbicsIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnVzZXJUb2tlbikpLCBib2R5LCBwYXJhbXMpXG4gICAgICAvLyAucGlwZSh0aGlzLmhhbmRsZUVycm9yKHRydWUsIHRydWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNVbnNhdmVkQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5fdXNlckRldmljZSAmJiB0aGlzLm9yaWdpbkRldmljZSkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuX3VzZXJEZXZpY2UuZ2V0U2F2YWJsZURhdGEoKSkgJiYgdGhpcy5vcmlnaW5EZXZpY2U7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTaW1wbGlmaWVkVXNlcih1c2VyOiBhbnksIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSwgdXNlclRva2VuPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy51c2VyID0gbmV3IFNpbXBsaWZpZWRVc2VyKHVzZXIsIHZhbGlkYXRpb25TZXJ2aWNlKTtcbiAgICBjb25zdCBjb3BpZWRVc2VyID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh1c2VyKSk7XG4gICAgdGhpcy5vcmlnaW5Vc2VyID0gbmV3IFNpbXBsaWZpZWRVc2VyKGNvcGllZFVzZXIsIHZhbGlkYXRpb25TZXJ2aWNlKTtcbiAgICBpZiAoIXRoaXMudXNlclRva2VuICYmIHVzZXJUb2tlbikge1xuICAgICAgdGhpcy5fdXNlclRva2VuID0gdXNlclRva2VuO1xuICAgICAgLy8gdGhpcy5vcmlnaW5Vc2VyLnRva2VuID0gdXNlclRva2VuO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBlZGl0VHJhbnNsYXRpb25QYXR0ZXJuKFxuICAgICAgY3VjbUlkOiBzdHJpbmcsXG4gICAgICBvbGRwYXR0ZXJuOiBzdHJpbmcsXG4gICAgICBuZXdQYXR0ZXJuOiBzdHJpbmcsXG4gICAgICBleHRlbnNpb246IHN0cmluZyxcbiAgICAgIHJvdXRlUGFydGl0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICApIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBvcmlnaW5hbHBhdHRlcm46IG9sZHBhdHRlcm4sXG4gICAgfTtcbiAgICBjb25zdCBVUkwgPSBBUEkuVFJBTlNMQVRJT05fUEFUVEVSTl9DVUNNLnJlcGxhY2UoJzpjdWNtSWQnLCBjdWNtSWQpO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5wdXQoVVJMLCB7IGNhbGxlZFBhcnR5VHJhbnNmb3JtYXRpb25NYXNrOiBleHRlbnNpb24sIHBhdHRlcm46IG5ld1BhdHRlcm4sIHJvdXRlUGFydGl0aW9uTmFtZTogcm91dGVQYXJ0aXRpb25OYW1lLCBkZXNjcmlwdGlvbiB9LCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGxpbmVVcGRhdGVkKGxpbmU6IGFueSwgaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IG9yaWdpbmFsTGluZSA9IEpTT04ucGFyc2UodGhpcy5vcmlnaW5EZXZpY2UpLmxpbmVzW2luZGV4XTtcbiAgICByZXR1cm4gb3JpZ2luYWxMaW5lLm51bWJlciAhPT0gbGluZS5udW1iZXIgfHwgb3JpZ2luYWxMaW5lLmV4dGVuc2lvbiAhPT0gbGluZS5leHRlbnNpb247XG4gIH1cblxuICBwdWJsaWMgZ2V0T3JpZ2luYWxOdW1iZXIobGluZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBmb3VuZExpbmUgPSBKU09OLnBhcnNlKHRoaXMub3JpZ2luRGV2aWNlKS5saW5lcy5maW5kKChvcmlnTGluZTogYW55KSA9PiBvcmlnTGluZS5leHRlbnNpb24gPT09IGxpbmUuZXh0ZW5zaW9uIHx8IG9yaWdMaW5lLm51bWJlciA9PT0gbGluZS5udW1iZXIpO1xuICAgIHJldHVybiBmb3VuZExpbmUubnVtYmVyIHx8ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTYXZlVXNlclJlc3BvbnNlKHJlc3BvbnNlczogYW55KSB7XG4gICAgaWYgKCFyZXNwb25zZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGxldCBsZW4gPSByZXNwb25zZXMubGVuZ3RoLCBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChyZXNwb25zZXNbaV0gJiYgcmVzcG9uc2VzW2ldLmN1cnJlbnRVcGRhdGVkVXNlcikge1xuICAgICAgICAvLyB0aGlzLnNldFVzZXIocmVzcG9uc2VzW2ldLmN1cnJlbnRVcGRhdGVkVXNlciwgZmFsc2UsIHRoaXMudXNlci50b2tlbik7XG4gICAgICAgIHRoaXMudXNlci5oYXNNb2RpZmllZENhY2hlID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
394
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvc2VydmljZXMvdXNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFJL0MsTUFBTSxPQUFPLFdBQVc7SUFhdEIsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFJRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUlELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBSUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxJQUFJLFVB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QUFLLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUYsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQVM7UUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hKLE9BQU8sU0FBUyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFNBQWM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7WUFDdEIsT0FBTztTQUNSO1FBQ0QsS0FBSyxJQUFJLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekQsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFO2dCQUNuRCx5RUFBeUU7Z0JBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUNsQyxPQUFPO2FBQ1I7U0FDRjtJQUNILENBQUM7O3lHQTdiVSxXQUFXOzZHQUFYLFdBQVc7NEZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2FwcC5jb25zdGFudHMnO1xuaW1wb3J0IHsgRGV2aWNlUHJvZmlsZSB9IGZyb20gJy4uL2NsYXNzZXMvZGV2aWNlUHJvZmlsZSc7XG5pbXBvcnQgeyBEZXZpY2UgfSBmcm9tICcuLy4uL2NsYXNzZXMvZGV2aWNlJztcbmltcG9ydCB7IExpbmVBc3NvY2lhdGlvbiB9IGZyb20gJy4vLi4vY2xhc3Nlcy9saW5lLWFzc29jaWF0aW9uJztcbmltcG9ydCB7IExpbmVBc3NvY2lhdGlvbkludGVyZmFjZSB9IGZyb20gJy4vLi4vY2xhc3Nlcy9saW5lLWFzc29jaWF0aW9uLWludGVyZmFjZSc7XG5pbXBvcnQgeyBTaW1wbGlmaWVkVXNlciB9IGZyb20gJy4vLi4vY2xhc3Nlcy9zaW1wbGlmaWVkLXVzZXInO1xuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGluZVNlcnZpY2UgfSBmcm9tICcuL2xpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBTb3J0aW5nVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi9zb3J0aW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi92YWxpZGF0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXR7XG4gIHNpdGVJZDogbnVtYmVyID0gLTE7XG4gIHVzZXJJZDogc3RyaW5nID0gJyc7XG4gIHVzZXJJZEV4aXN0UGVuZGluZyA9IGZhbHNlO1xuICBoYXNFeGlzdGVkVXNlcklkID0gZmFsc2U7XG4gIHVzZXIhOiBTaW1wbGlmaWVkVXNlcjtcbiAgb3JpZ2luVXNlciE6IFNpbXBsaWZpZWRVc2VyO1xuICBvcmlnaW5EZXZpY2UhOiBhbnk7XG4gIG9uVXNlckxpbmVTYXZlZCQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIG9uRmV0Y2hVc2VyVG9rZW4kID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIHByaXZhdGUgX3VzZXJUb2tlbjogc3RyaW5nID0gJyc7XG5cbiAgZ2V0IHVzZXJUb2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlclRva2VuO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXNlck5hbWU6IHN0cmluZyA9ICcnO1xuXG4gIGdldCB1c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91c2VyTmFtZTtcbiAgfVxuXG4gIHByaXZhdGUgX3VzZXJMYXN0TmFtZTogc3RyaW5nID0gJyc7XG5cbiAgZ2V0IHVzZXJMYXN0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91c2VyTGFzdE5hbWU7XG4gIH1cblxuICBwcml2YXRlIF9jdWNtSWQ6IHN0cmluZyA9ICcnO1xuXG4gIGdldCBjdWNtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY3VjbUlkO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXNlckRldmljZTogRGV2aWNlUHJvZmlsZSB8IHVuZGVmaW5lZDtcblxuICBnZXQgdXNlckRldmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlckRldmljZTtcbiAgfVxuXG4gIGdldCBsaW5lQXNzb2NpYXRpb24oKTogTGluZUFzc29jaWF0aW9uSW50ZXJmYWNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy51c2VyRGV2aWNlICYmIHRoaXMudXNlckRldmljZS5saW5lQXNzb2NpYXRpb25zICYmIHRoaXMudXNlckRldmljZS5saW5lQXNzb2NpYXRpb25zWzBdO1xuICB9XG5cbiAgZ2V0IG9yaWdpbkxpbmVBc3NvY2lhdGlvbigpOiBMaW5lQXNzb2NpYXRpb24gfCBMaW5lQXNzb2NpYXRpb25JbnRlcmZhY2Uge1xuICAgIHJldHVybiB0aGlzLm9yaWdpbkRldmljZSAmJiBKU09OLnBhcnNlKHRoaXMub3JpZ2luRGV2aWNlKS5saW5lQXNzb2NpYXRpb25zWzBdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGluZVNlcnZpY2U6IExpbmVTZXJ2aWNlXG4gICkge1xuXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnNpdGVJZClcbiAgfVxuXG4gIHJlc2V0TGluZUFzc29jaWF0aW9uKGRldmljZUluZGV4OiBudW1iZXIsIGxpbmVJbmRleDogbnVtYmVyLCB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UpOiB2b2lkIHtcbiAgICBjb25zdCBvcmlnaW5MaW5lID0gdGhpcy5vcmlnaW5Vc2VyPy5kZXZpY2VzW2RldmljZUluZGV4XT8ubGluZUFzc29jaWF0aW9uc1tsaW5lSW5kZXhdO1xuICAgIGlmICh0aGlzLnVzZXI/LmRldmljZXNbZGV2aWNlSW5kZXhdPy5saW5lQXNzb2NpYXRpb25zW2xpbmVJbmRleF0gJiYgb3JpZ2luTGluZSkge1xuICAgICAgdGhpcy51c2VyLmRldmljZXNbZGV2aWNlSW5kZXhdLmxpbmVBc3NvY2lhdGlvbnNbbGluZUluZGV4XSA9IG5ldyBMaW5lQXNzb2NpYXRpb24oSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvcmlnaW5MaW5lLmdldEZ1bGxEYXRhKCkpKSwgdmFsaWRhdGlvblNlcnZpY2UpXG4gICAgfVxuICB9XG5cbiAgcmVzZXREZXZpY2UoY3VycmVudERldmljZTogRGV2aWNlLCB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UpOiB2b2lkIHtcbiAgICBjb25zdCBvcmlnaW5EZXZpY2UgPSB0aGlzLm9yaWdpblVzZXIuZGV2aWNlcy5maW5kKGRldmljZSA9PiBkZXZpY2UubmFtZSA9PT0gY3VycmVudERldmljZS5uYW1lKTtcbiAgICBjb25zdCBkZXZpY2VJbmQgPSB0aGlzLnVzZXIuZGV2aWNlcy5maW5kSW5kZXgoZGV2aWNlID0+IGRldmljZS5uYW1lID09PSBjdXJyZW50RGV2aWNlLm5hbWUpO1xuICAgIGlmIChvcmlnaW5EZXZpY2UgJiYgZGV2aWNlSW5kID4gLTEpIHtcbiAgICAgIGNvbnN0IGxpbmVBc3NvY2lhdGlvbnMgPSB0aGlzLnVzZXIuZGV2aWNlc1tkZXZpY2VJbmRdLmxpbmVBc3NvY2lhdGlvbnM7XG4gICAgICB0aGlzLnVzZXIuZGV2aWNlc1tkZXZpY2VJbmRdID0gbmV3IERldmljZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9yaWdpbkRldmljZS5nZXROb0xpbmVzRnVsbERhdGEoKSkpLCB2YWxpZGF0aW9uU2VydmljZSk7XG4gICAgICB0aGlzLnVzZXIuZGV2aWNlc1tkZXZpY2VJbmRdLmxpbmVBc3NvY2lhdGlvbnMgPSBsaW5lQXNzb2NpYXRpb25zO1xuICAgICAgY29uc29sZS5sb2coJ2RldmljZSBhZnRlciByZXNldCA9ICcsIHRoaXMudXNlci5kZXZpY2VzW2RldmljZUluZF0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmZXRjaFVzZXJUb2tlbihzaXRlSWQ6IG51bWJlciwgdXNlcklkOiBzdHJpbmcsIHZhbGlkYXRpb25TZXJ2aWNlOiBWYWxpZGF0aW9uU2VydmljZSwgaXNTZXROZXdUb2tlbk9ubHk/OiBib29sZWFuKTogYW55IHtcbiAgICAvKmlmICh0aGlzLnNpdGVJZCA9PT0gc2l0ZUlkICYmIHRoaXMudXNlcklkID09PSB1c2VySWQgJiYgdGhpcy51c2VyKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy51c2VyKTtcbiAgICB9Ki9cbiAgICB0aGlzLnNpdGVJZCA9IHNpdGVJZDtcbiAgICB0aGlzLnVzZXJJZCA9IHVzZXJJZDtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5VU0VSX1RPS0VOLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKS5yZXBsYWNlKCc6dXNlcklkJywgZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudCh1c2VySWQpKSkpXG4gICAgICAucGlwZShtYXAoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSByZXN1bHQgJiYgT2JqZWN0LnZhbHVlcyhyZXN1bHQpWzBdO1xuICAgICAgICBjb25zdCB1c2VyVG9rZW4gPSByZXN1bHQgJiYgT2JqZWN0LmtleXMocmVzdWx0KVswXTtcbiAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICBpZiAoIWlzU2V0TmV3VG9rZW5Pbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnNldFNpbXBsaWZpZWRVc2VyKHVzZXIsIHZhbGlkYXRpb25TZXJ2aWNlLCB1c2VyVG9rZW4pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl91c2VyVG9rZW4gPSB1c2VyVG9rZW47XG4gICAgICAgICAgICAvLyB0aGlzLm9yaWdpblVzZXIudG9rZW4gPSB1c2VyLnRva2VuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9uRmV0Y2hVc2VyVG9rZW4kLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pKVxuICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IoZmFsc2UsIHRydWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaERJVXNlckRldmljZShzaXRlSWQ6IG51bWJlciwgdXNlcklkOiBzdHJpbmcsIGRldmljZVR5cGU6IHN0cmluZywgZGV2aWNlTmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuc2l0ZUlkID0gc2l0ZUlkO1xuICAgIHRoaXMudXNlcklkID0gdXNlcklkO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLlVTRVJfVE9LRU4ucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyh0aGlzLnNpdGVJZCkpLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJJZCkpKSlcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHJlc3VsdCAmJiBPYmplY3QudmFsdWVzKHJlc3VsdClbMF07XG4gICAgICAgIGNvbnN0IHVzZXJUb2tlbiA9IHJlc3VsdCAmJiBPYmplY3Qua2V5cyhyZXN1bHQpWzBdO1xuICAgICAgICBsZXQgZm91bmREZXZpY2U6IGFueTtcblxuICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgIHRoaXMuX3VzZXJUb2tlbiA9IHVzZXJUb2tlbjtcbiAgICAgICAgICB0aGlzLl91c2VyTmFtZSA9IHVzZXIuZmlyc3ROYW1lO1xuICAgICAgICAgIHRoaXMuX3VzZXJMYXN0TmFtZSA9IHVzZXIubGFzdE5hbWU7XG4gICAgICAgICAgdGhpcy5fY3VjbUlkID0gdXNlci5jdWNtSWQ7XG4gICAgICAgICAgZm91bmREZXZpY2UgPSBkZXZpY2VOYW1lXG4gICAgICAgICAgICA/IHVzZXIuZGV2aWNlcy5maW5kKChkZXZpY2U6IGFueSkgPT4gZGV2aWNlLm5hbWUgPT09IGRldmljZU5hbWUpXG4gICAgICAgICAgICA6IHVzZXIuZGV2aWNlcy5maW5kKChkZXZpY2U6IGFueSkgPT4gZGV2aWNlLmRldmljZVR5cGUgPT09IGRldmljZVR5cGUpO1xuICAgICAgICAgIGlmKGZvdW5kRGV2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl91c2VyRGV2aWNlID0gbmV3IERldmljZVByb2ZpbGUoe1xuICAgICAgICAgICAgICAuLi5mb3VuZERldmljZSxcbiAgICAgICAgICAgICAgbW9kZWw6IGZvdW5kRGV2aWNlPy5kZXZpY2VUeXBlLFxuICAgICAgICAgICAgICBtYWNBZGRyZXNzOiB0aGlzLmdldE1hY0FkZHJlc3MoZm91bmREZXZpY2UubmFtZSksXG4gICAgICAgICAgICAgIGxpbmVzOiBmb3VuZERldmljZT8ubGluZUFzc29jaWF0aW9ucz8ubWFwKChsaW5lOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZExpbmUgPSB1c2VyPy5saW5lcz8uZmluZCgobDogYW55KSA9PiBsLnBraWQgPT09IGxpbmUubGluZVBraWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBgJHt0aGlzLl91c2VyTmFtZX0gJHt0aGlzLl91c2VyTGFzdE5hbWV9YCxcbiAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogbGluZSAmJiBsaW5lLmRpcmVjdG9yeU51bWJlciAmJiBsaW5lLmRpcmVjdG9yeU51bWJlci5yb3V0ZVBhcnRpdGlvbk5hbWUgJiYgbGluZS5kaXJlY3RvcnlOdW1iZXIuZGlyZWN0b3J5TnVtYmVyIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgbnVtYmVyOiBmb3VuZExpbmUgIT09IC0xID8gZm91bmRMaW5lLm1hcHBlZERpZHNbMF0gOiAnJyxcbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmb3VuZExpbmUgJiYgZm91bmRMaW5lLmRpZFBhdHRlcm5zICYmIGZvdW5kTGluZS5kaWRQYXR0ZXJuc1swXSA/IGZvdW5kTGluZS5kaWRQYXR0ZXJuc1swXS5kZXNjcmlwdGlvbiA6ICcnLFxuICAgICAgICAgICAgICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiBsaW5lICYmIGxpbmUuZGlyZWN0b3J5TnVtYmVyLnJvdXRlUGFydGl0aW9uTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAgIHBraWQ6IGxpbmUgJiYgbGluZS5saW5lUGtpZCB8fCAnJyxcbiAgICAgICAgICAgICAgICAgIGluZGV4OiBsaW5lICYmIGxpbmUuaW5kZXggfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGxpbmUgJiYgbGluZS5wb3NpdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB0ZXh0TGFiZWw6IGxpbmUgJiYgbGluZS50ZXh0TGFiZWwgfHwgJycsXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5TGFiZWw6IGxpbmUgJiYgbGluZS5kaXNwbGF5TGFiZWwgfHwgJycsXG4gICAgICAgICAgICAgICAgICBlMTY0TWFzazogbGluZSAmJiBsaW5lLmUxNjRNYXNrIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgYWxlcnRpbmdOYW1lOiBsaW5lICYmIGxpbmUuYWxlcnRpbmdOYW1lIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgY2FsbGVyTnVtYmVyOiBsaW5lICYmIGxpbmUuY2FsbGVyTnVtYmVyIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgbG9nTWlzc2VkQ2FsbDogbGluZSAmJiBsaW5lLmxvZ01pc3NlZENhbGwgfHwgJycsXG4gICAgICAgICAgICAgICAgICBjYWxsSW5mb0Rpc3BsYXk6IGxpbmUgJiYgbGluZS5jYWxsSW5mb0Rpc3BsYXkgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgc29mdHdhcmVWZXJzaW9uOiBmb3VuZERldmljZT8uZmlybXdhcmVWZXJzaW9uXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9yaWdpbkRldmljZSA9IHRoaXMuX3VzZXJEZXZpY2UgPyBKU09OLnN0cmluZ2lmeSh0aGlzLl91c2VyRGV2aWNlLmdldFNhdmFibGVEYXRhKCkpIDogJyc7XG5cbiAgICAgICAgaWYgKCFmb3VuZERldmljZSkge1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLl91c2VyRGV2aWNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbW1vblBob25lQ29uZmlnTmFtZSA9IHVzZXI/LmRldmljZXM/LlswXT8uY29tbW9uUGhvbmVDb25maWdOYW1lIHx8ICcnO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREZXZpY2VFeHRyYU9wdGlvbnModGhpcy5zaXRlSWQsIGZvdW5kRGV2aWNlLm5hbWUsIGNvbW1vblBob25lQ29uZmlnTmFtZSlcbiAgICAgICAgICAucGlwZShtYXAoKGV4dHJhT3B0aW9uczogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fdXNlckRldmljZSkge1xuICAgICAgICAgICAgICAodGhpcy5fdXNlckRldmljZSBhcyBhbnkpLmxvZ2dlZEludG9IdW50R3JvdXAgPSBleHRyYU9wdGlvbnM/LmxvZ2dlZEludG9IdW50R3JvdXA7XG4gICAgICAgICAgICAgICh0aGlzLl91c2VyRGV2aWNlIGFzIGFueSkucmVtb3RlRGV2aWNlID0gZXh0cmFPcHRpb25zPy5yZW1vdGVEZXZpY2U7XG4gICAgICAgICAgICAgICh0aGlzLl91c2VyRGV2aWNlIGFzIGFueSkuaG90bGluZURldmljZSA9IGV4dHJhT3B0aW9ucz8uaG90bGluZURldmljZTtcbiAgICAgICAgICAgICAgKHRoaXMuX3VzZXJEZXZpY2UgYXMgYW55KS5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzID0gZXh0cmFPcHRpb25zPy5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzO1xuICAgICAgICAgICAgICAodGhpcy5fdXNlckRldmljZSBhcyBhbnkpLnVzZURldmljZVBvb2xDZ3BuSW5ncmVzc0ROID0gZXh0cmFPcHRpb25zPy51c2VEZXZpY2VQb29sQ2dwbkluZ3Jlc3NETjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyRGV2aWNlO1xuICAgICAgICAgIH0pKTtcbiAgICAgIH0pKVxuICB9XG5cbiAgcHVibGljIGdldERldmljZUV4dHJhT3B0aW9ucyhzaXRlSWQ6IG51bWJlciwgZGV2aWNlTmFtZTogc3RyaW5nLCBjb21tb25QaG9uZUNvbmZpZ05hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLkRFVklDRV9FWFRSQV9PUFRJT05TXG4gICAgICAucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKVxuICAgICAgLnJlcGxhY2UoJzpkZXZpY2VOYW1lJywgZGV2aWNlTmFtZSlcbiAgICAgIC5yZXBsYWNlKCc6Y29tbW9uUGhvbmVDb25maWdOYW1lJywgZW5jb2RlVVJJQ29tcG9uZW50KGNvbW1vblBob25lQ29uZmlnTmFtZSkpKVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcihmYWxzZSwgdHJ1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYWNBZGRyZXNzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbWFjUmVnZXggPSAvXltBLUZhLWYwLTldezEyfSQvO1xuICAgIGxldCBtYWNBZGRyZXNzO1xuXG4gICAgaWYgKG5hbWUubGVuZ3RoID09PSAxMiAmJiBtYWNSZWdleC50ZXN0KG5hbWUpKSB7XG4gICAgICBtYWNBZGRyZXNzID0gbmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IG5hbWUuc2xpY2UoMyk7XG4gICAgICBtYWNBZGRyZXNzID0gbWFjUmVnZXgudGVzdCh0cmltbWVkKSA/IHRyaW1tZWQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hY0FkZHJlc3M7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2hXZWJleFVzZXJEZXZpY2UoY3VzdG9tZXJJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZywgZGV2aWNlVHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFtcbiAgICAgIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuV0VCRVhfVVNFUl9UT0tFTi5yZXBsYWNlKCc6Y3VzdG9tZXJJZCcsIGN1c3RvbWVySWQpLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJJZCkpKSksXG4gICAgICB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLldFQkVYX1VTRVJfREVWSUNFUy5yZXBsYWNlKCc6Y3VzdG9tZXJJZCcsIGN1c3RvbWVySWQpLnJlcGxhY2UoJzp1c2VySWQnLCBlbmNvZGVVUklDb21wb25lbnQoZW5jb2RlVVJJQ29tcG9uZW50KHVzZXJJZCkpKSlcbiAgICBdKVxuICAgICAgLnBpcGUobWFwKChyZXN1bHRzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5fdXNlck5hbWUgPSByZXN1bHRzWzBdLmZpcnN0TmFtZTtcbiAgICAgICAgdGhpcy5fdXNlckxhc3ROYW1lID0gcmVzdWx0c1swXS5sYXN0TmFtZTtcbiAgICAgICAgaWYocmVzdWx0c1sxXSkge1xuICAgICAgICAgIGNvbnN0IGZvdW5kRGV2aWNlID0gcmVzdWx0c1sxXS5kZXZpY2VzLmZpbmQoKGRldmljZTogYW55KSA9PiBkZXZpY2UubW9kZWwgPT09IGRldmljZVR5cGUpO1xuICAgICAgICAgIHRoaXMuX3VzZXJEZXZpY2UgPSBuZXcgRGV2aWNlUHJvZmlsZSh7XG4gICAgICAgICAgICAuLi5mb3VuZERldmljZSxcbiAgICAgICAgICAgIG1hY0FkZHJlc3M6IGZvdW5kRGV2aWNlLm1hYyxcbiAgICAgICAgICAgIG1heExpbmVDb3VudDogZm91bmREZXZpY2U/LmRldmljZU1lbWJlcnM/Lm1heExpbmVDb3VudCxcbiAgICAgICAgICAgIGxpbmVzOiBmb3VuZERldmljZT8uZGV2aWNlTWVtYmVycz8ubWVtYmVycz8ubWFwKChtZW1iZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGAke21lbWJlci5maXJzdE5hbWV9ICR7bWVtYmVyLmxhc3ROYW1lfWAsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uOiBtZW1iZXIuZXh0ZW5zaW9uXG4gICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJEZXZpY2U7XG4gICAgICB9KSlcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVVc2VyRmllbGRzKGJvZHk6IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnVzZXJJZCB8fCAhdGhpcy5zaXRlSWQgfHwgIXRoaXMudXNlcj8udG9rZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5VUERBVEVfVVNFUl9GSUVMRFMucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyh0aGlzLnNpdGVJZCkpLnJlcGxhY2UoJzp0b2tlbicsIHRoaXMudXNlclRva2VuKSwgYm9keSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IoZmFsc2UsIHRydWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaFVzZXJCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnVzZXJJZEV4aXN0UGVuZGluZyA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuVVNFUl9CWV9JRC5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnVzZXJJZCcsIGVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQoaWQpKSkpXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy51c2VySWRFeGlzdFBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaExlYW5Vc2VyQ29udmVyc2F0aW9uQnlJZChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuTEVBTl9VU0VSX0NPTlZFUlNBVElPTl9TVEFSVC5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnVzZXJJZCcsIGVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQoaWQpKSkpO1xuICB9XG5cbiAgcHVibGljIGZldGNoTGVhblVzZXJEZXZpY2VzQ29udmVyc2F0aW9uQnlJZChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuTEVBTl9VU0VSX0RFVklDRVNfQ09OVkVSU0FUSU9OX1NUQVJULnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKS5yZXBsYWNlKCc6dXNlcklkJywgZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudChpZCkpKSk7XG4gIH1cbiAgcHVibGljIGZldGNoTGVhblVzZXJMaW5lc0NvbnZlcnNhdGlvbkJ5SWQoaWQ6IHN0cmluZywgbGVhblVzZXJEZXZpY2VzVG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLkxFQU5fVVNFUl9MSU5FU19DT05WRVJTQVRJT05fU1RBUlQucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyh0aGlzLnNpdGVJZCkpXG4gICAgICAucmVwbGFjZSgnOnVzZXJJZCcsIGVuY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQoaWQpKSkucmVwbGFjZSgnOmxlYW5Vc2VyRGV2aWNlc1Rva2VuJywgbGVhblVzZXJEZXZpY2VzVG9rZW4pKTtcbiAgfVxuICBwdWJsaWMgZmV0Y2hMZWFuVXNlclNOUkNvbnZlcnNhdGlvbkJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLkxFQU5fVVNFUl9TTlJfQ09OVkVSU0FUSU9OX1NUQVJULnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKS5yZXBsYWNlKCc6dXNlcklkJywgZW5jb2RlVVJJQ29tcG9uZW50KGVuY29kZVVSSUNvbXBvbmVudChpZCkpKSk7XG4gIH1cblxuICBwdWJsaWMgcGVyc2lzdENhY2hlQ2hhbmdlcygpIHtcbiAgICAvKmNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGV4Y2x1ZGVEZXZpY2VFeHRyYU9wdGlvbnM6IHRydWVcbiAgICB9OyovXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1VzZXJDaGFuZ2VzVG9DYWNoZSgpXG4gICAgICAucGlwZShtYXAoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuUEVSU0lTVF9VU0VSX0NBQ0hFLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKS5yZXBsYWNlKCc6dG9rZW4nLCB0aGlzLnVzZXJUb2tlbiksIHt9LCB7fSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgICAgIH0pXG4gICAgICAgICAgLy8gLnBpcGUobWFwKCh1c2VyKSA9PiB7XG4gICAgICAgICAgLy8gICAvLyB0aGlzLnNldFVzZXIodXNlciwgZmFsc2UsIHRoaXMudXNlci50b2tlbik7XG4gICAgICAgICAgLy8gICB0aGlzLnVzZXIuaGFzTW9kaWZpZWRDYWNoZSA9IGZhbHNlO1xuICAgICAgICAgIC8vIH0pKVxuICAgICAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgdHJ1ZSkpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgcHVibGljIHByb2Nlc3NVc2VyQ2hhbmdlc1RvQ2FjaGUoKTogYW55IHtcbiAgICBjb25zdCBjYWxscyA9IFtdO1xuICAgIGNvbnN0IGJvZHkgPSBVdGlsc1NlcnZpY2UuZGlmZih0aGlzLm9yaWdpblVzZXIuZ2V0VXNlckRldGFpbHNTYXZhYmxlRGF0YSgpLCB0aGlzLnVzZXIuZ2V0VXNlckRldGFpbHNTYXZhYmxlRGF0YSgpLCAndXNlcicpO1xuICAgIGlmIChib2R5Py5sZW5ndGgpIHtcbiAgICAgIGNhbGxzLnB1c2godGhpcy51cGRhdGVVc2VyRmllbGRzKGJvZHkpKTtcbiAgICB9XG4gICAgaWYgKCFjYWxscz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy51c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oY2FsbHMpXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlczogYW55KSA9PiB7XG4gICAgICAgIC8vIEFwaVVzZXJSZXNwb25zZVxuICAgICAgICB0aGlzLmhhbmRsZVNhdmVVc2VyUmVzcG9uc2UocmVzcG9uc2VzKTtcbiAgICAgIH0pKVxuICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IoZmFsc2UsIHRydWUpKTtcblxuICB9XG5cbiAgcHVibGljIHNhdmVOZXdMaW5lKGxpbmU6IGFueSk6IGFueSB7XG4gICAgdGhpcy5kZWxldGVMaW5lKHRoaXMuc2l0ZUlkLCBsaW5lLnBraWQsIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnVzZXJUb2tlbikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgVVJMID0gQVBJLlBFUlNJU1RfVVNFUl9DQUNIRS5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHRoaXMuc2l0ZUlkKSkucmVwbGFjZSgnOnRva2VuJywgdGhpcy51c2VyVG9rZW4pO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UucG9zdChVUkwsIHt9LCApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJ1bk5ld0xpbmVDcmVhdGlvbihsaW5lKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHBlcnNpc3RVc2VyQ2FjaGUoKTogYW55IHtcbiAgICBjb25zdCBVUkwgPSBBUEkuUEVSU0lTVF9VU0VSX0NBQ0hFLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKS5yZXBsYWNlKCc6dG9rZW4nLCB0aGlzLnVzZXJUb2tlbik7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFVSTCwge30sICk7XG4gIH1cblxuICBwdWJsaWMgcnVuTmV3TGluZUNyZWF0aW9uKGxpbmU6IGFueSk6IHZvaWQge1xuICAgIC8vIENSRUFURSBORVcgTElORVxuICAgIGNvbnN0IG5ld0xpbmVCb2R5ID0gU29ydGluZ1V0aWxzU2VydmljZS5kaWZmKFxuICAgICAgdGhpcy5saW5lU2VydmljZS5nZW5lcmF0ZUxpbmVBc3NvY2lhdGlvbkZyb21MaW5lKG51bGwpLFxuICAgICAgdGhpcy5saW5lU2VydmljZS5nZW5lcmF0ZUxpbmVBc3NvY2lhdGlvbkZyb21MaW5lKGxpbmUpLFxuICAgICAgJ2RldmljZS5saW5lQXNzb2NpYXRpb25zJywgbnVsbFxuICAgICk7XG4gICAgdGhpcy5hc3NvY2lhdGVMaW5lVG9Vc2VyRGV2aWNlKFxuICAgICAgdGhpcy5zaXRlSWQsXG4gICAgICB0aGlzLnVzZXJEZXZpY2UgJiYgdGhpcy51c2VyRGV2aWNlLm5hbWUgfHwgJycsXG4gICAgICBuZXdMaW5lQm9keSxcbiAgICAgIG51bGwsXG4gICAgICB0aGlzLmxpbmVBc3NvY2lhdGlvbj8uY2FsbGluZ1NlYXJjaFNwYWNlXG4gICAgKVxuICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICBjb25zdCBVUkwgPSBBUEkuUEVSU0lTVF9VU0VSX0NBQ0hFLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcodGhpcy5zaXRlSWQpKS5yZXBsYWNlKCc6dG9rZW4nLCB0aGlzLnVzZXJUb2tlbik7XG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoVVJMLCB7fSwgKTtcbiAgICB9KSlcbiAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2U/LmN1cnJlbnRVcGRhdGVkVXNlcikge1xuICAgICAgICBjb25zdCBsaW5lUGtJZCA9IHJlc3BvbnNlLmN1cnJlbnRVcGRhdGVkVXNlci5kZXZpY2VzWzBdPy5saW5lQXNzb2NpYXRpb25zWzBdPy5saW5lUGtpZCB8fCByZXNwb25zZS5jdXJyZW50VXBkYXRlZFVzZXIuZGV2aWNlc1swXT8ubGluZUFzc29jaWF0aW9uc1swXT8ubGluZUxvY2FsSWQ7XG4gICAgICAgIGZvcmtKb2luKFtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmVGaWVsZHModGhpcy5zaXRlSWQsIGxpbmVQa0lkLCB0aGlzLnVzZXJUb2tlbiwgdGhpcy5saW5lQXNzb2NpYXRpb24/LmFsZXJ0aW5nTmFtZSksXG4gICAgICAgICAgdGhpcy51cGRhdGVEZXZpY2VGaWVsZHModGhpcy5zaXRlSWQsIHRoaXMudXNlckRldmljZSAmJiB0aGlzLnVzZXJEZXZpY2UubmFtZSB8fCAnJywgdGhpcy51c2VyVG9rZW4pXG4gICAgICAgIF0pLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGV2aWNlRGF0YSA9IEpTT04ucGFyc2UodGhpcy5vcmlnaW5EZXZpY2UpO1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGV2aWNlTGluZSA9IG9yaWdpbmFsRGV2aWNlRGF0YS5saW5lcy5maW5kKChvcmlnTGluZTogYW55KSA9PiBvcmlnTGluZS5wa2lkID09PSBsaW5lLnBraWQpO1xuICAgICAgICAgIGlmKG9yaWdpbmFsRGV2aWNlTGluZSkge1xuICAgICAgICAgICAgb3JpZ2luYWxEZXZpY2VEYXRhLmV4dGVuc2lvbiA9IGxpbmUuZXh0ZW5zaW9uO1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5EZXZpY2UgPSBKU09OLnN0cmluZ2lmeShvcmlnaW5hbERldmljZURhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9uVXNlckxpbmVTYXZlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyAtLS0tLVxuICB9XG5cbiAgcHVibGljIGRlbGV0ZUxpbmUoc2l0ZUlkOiBudW1iZXIsIHBraWQ6IHN0cmluZywgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVsZXRlKEFQSS5ERUxFVEVfTElORS5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHNpdGVJZCkpLnJlcGxhY2UoJzpwa2lkJywgcGtpZCkucmVwbGFjZSgnOnRva2VuJywgZW5jb2RlVVJJQ29tcG9uZW50KHRva2VuKSksIHt9KVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcih0cnVlLCBmYWxzZSkpO1xuICB9XG5cbiAgcHVibGljIGRpc2Fzc29jaWF0ZUxpbmUoc2l0ZUlkOiBudW1iZXIsIGxpbmVQa2lkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGRldmljZU5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVsZXRlKFxuICAgICAgQVBJLkRJU0FTU09DSUFURV9MSU5FLnJlcGxhY2UoJzpzaXRlSWQnLCBTdHJpbmcoc2l0ZUlkKSlcbiAgICAgICAgLnJlcGxhY2UoJzpsaW5lUGtpZCcsIGxpbmVQa2lkKVxuICAgICAgICAucmVwbGFjZSgnOmRldmljZU5hbWUnLCBkZXZpY2VOYW1lKVxuICAgICAgICAucmVwbGFjZSgnOnRva2VuJywgZW5jb2RlVVJJQ29tcG9uZW50KHRva2VuKSksIHt9KVxuICAgICAgLy8gLnBpcGUodGhpcy5oYW5kbGVFcnJvcih0cnVlLCBmYWxzZSkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUxpbmVGaWVsZHMoc2l0ZUlkOiBudW1iZXIsIHBraWQ6IHN0cmluZywgdG9rZW46IHN0cmluZywgYWxlcnRpbmdOYW1lOiBhbnkpIHtcbiAgICBjb25zdCBib2R5ID0gWydsaW5lLmRlc2NyaXB0aW9uPScsIGBsaW5lLmFsZXJ0aW5nTmFtZT0ke2FsZXJ0aW5nTmFtZX1gXTtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLlVQREFURV9MSU5FX0ZJRUxEUy5yZXBsYWNlKCc6c2l0ZUlkJywgU3RyaW5nKHNpdGVJZCkpLnJlcGxhY2UoJzpwa2lkJywgZW5jb2RlVVJJQ29tcG9uZW50KHBraWQpKS5yZXBsYWNlKCc6dG9rZW4nLCBlbmNvZGVVUklDb21wb25lbnQodG9rZW4pKSwgYm9keSlcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgZmFsc2UpKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVEZXZpY2VGaWVsZHMoc2l0ZUlkOiBudW1iZXIsIGRldmljZU5hbWU6IHN0cmluZywgdG9rZW46IHN0cmluZykge1xuICAgIGNvbnN0IGJvZHkgPSBbJ2RldmljZS5hc3NvY2lhdGVkRE5zLjA9bnVsbCddO1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuVVBEQVRFX0RFVklDRV9GSUVMRFMucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKS5yZXBsYWNlKCc6ZGV2aWNlTmFtZScsIGRldmljZU5hbWUpLnJlcGxhY2UoJzp0b2tlbicsIGVuY29kZVVSSUNvbXBvbmVudCh0b2tlbikpLCBib2R5KVxuICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgZmFsc2UpKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja0Rlc3RpbmF0aW9uTnVtYmVyKHNpdGVJZDogc3RyaW5nLCBkaXJlY3RvcnlOdW1iZXI6IHN0cmluZywgcm91dGVQYXJ0aXRpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBkbnR5cGU6ICdFWFRFTlNJT04nXG4gICAgfTtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgZGlyZWN0b3J5TnVtYmVyOiBkaXJlY3RvcnlOdW1iZXIsXG4gICAgICByb3V0ZVBhcnRpdGlvbk5hbWU6IHJvdXRlUGFydGl0aW9uTmFtZVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5DSEVDS19ERVNUSU5BVElPTl9OVU1CRVIucmVwbGFjZSgnOnNpdGVJZCcsIHNpdGVJZCksIGJvZHksIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgYXNzb2NpYXRlTGluZVRvVXNlckRldmljZShzaXRlSWQ6IG51bWJlciwgZGV2aWNlTmFtZTogc3RyaW5nLCBib2R5OiBhbnksIHBraWQ6IGFueSwgY3NzOiBhbnkpIHtcbiAgICBsZXQgcGFyYW1zID0ge307XG4gICAgaWYgKHBraWQpIHtcbiAgICAgIHBhcmFtcyA9IHtsaW5lUGtpZDogcGtpZH07XG4gICAgfVxuICAgIGlmIChjc3MpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHBhcmFtc1snY3NzJ10gPSBjc3M7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuQVNTT0NJQVRFX0xJTkUucmVwbGFjZSgnOnNpdGVJZCcsIFN0cmluZyhzaXRlSWQpKS5yZXBsYWNlKCc6ZGV2aWNlTmFtZScsIGRldmljZU5hbWUpXG4gICAgICAucmVwbGFjZSgnOnRva2VuJywgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMudXNlclRva2VuKSksIGJvZHksIHBhcmFtcylcbiAgICAgIC8vIC5waXBlKHRoaXMuaGFuZGxlRXJyb3IodHJ1ZSwgdHJ1ZSkpO1xuICB9XG5cbiAgcHVibGljIGhhc1Vuc2F2ZWRDaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLl91c2VyRGV2aWNlICYmIHRoaXMub3JpZ2luRGV2aWNlKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5fdXNlckRldmljZS5nZXRTYXZhYmxlRGF0YSgpKSAmJiB0aGlzLm9yaWdpbkRldmljZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldFNpbXBsaWZpZWRVc2VyKHVzZXI6IGFueSwgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLCB1c2VyVG9rZW4/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIgPSBuZXcgU2ltcGxpZmllZFVzZXIodXNlciwgdmFsaWRhdGlvblNlcnZpY2UpO1xuICAgIGNvbnN0IGNvcGllZFVzZXIgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHVzZXIpKTtcbiAgICB0aGlzLm9yaWdpblVzZXIgPSBuZXcgU2ltcGxpZmllZFVzZXIoY29waWVkVXNlciwgdmFsaWRhdGlvblNlcnZpY2UpO1xuICAgIGlmICghdGhpcy51c2VyVG9rZW4gJiYgdXNlclRva2VuKSB7XG4gICAgICB0aGlzLl91c2VyVG9rZW4gPSB1c2VyVG9rZW47XG4gICAgICAvLyB0aGlzLm9yaWdpblVzZXIudG9rZW4gPSB1c2VyVG9rZW47XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVkaXRUcmFuc2xhdGlvblBhdHRlcm4oXG4gICAgICBjdWNtSWQ6IHN0cmluZyxcbiAgICAgIG9sZHBhdHRlcm46IHN0cmluZyxcbiAgICAgIG5ld1BhdHRlcm46IHN0cmluZyxcbiAgICAgIGV4dGVuc2lvbjogc3RyaW5nLFxuICAgICAgcm91dGVQYXJ0aXRpb25OYW1lOiBzdHJpbmcsXG4gICAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgICkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIG9yaWdpbmFscGF0dGVybjogb2xkcGF0dGVybixcbiAgICB9O1xuICAgIGNvbnN0IFVSTCA9IEFQSS5UUkFOU0xBVElPTl9QQVRURVJOX0NVQ00ucmVwbGFjZSgnOmN1Y21JZCcsIGN1Y21JZCk7XG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZVxuICAgICAgLnB1dChVUkwsIHsgY2FsbGVkUGFydHlUcmFuc2Zvcm1hdGlvbk1hc2s6IGV4dGVuc2lvbiwgcGF0dGVybjogbmV3UGF0dGVybiwgcm91dGVQYXJ0aXRpb25OYW1lOiByb3V0ZVBhcnRpdGlvbk5hbWUsIGRlc2NyaXB0aW9uIH0sIHBhcmFtcyk7XG4gIH1cblxuICBwdWJsaWMgbGluZVVwZGF0ZWQobGluZTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxMaW5lID0gSlNPTi5wYXJzZSh0aGlzLm9yaWdpbkRldmljZSkubGluZXNbaW5kZXhdO1xuICAgIHJldHVybiBvcmlnaW5hbExpbmUubnVtYmVyICE9PSBsaW5lLm51bWJlciB8fCBvcmlnaW5hbExpbmUuZXh0ZW5zaW9uICE9PSBsaW5lLmV4dGVuc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRPcmlnaW5hbE51bWJlcihsaW5lOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZvdW5kTGluZSA9IEpTT04ucGFyc2UodGhpcy5vcmlnaW5EZXZpY2UpLmxpbmVzLmZpbmQoKG9yaWdMaW5lOiBhbnkpID0+IG9yaWdMaW5lLmV4dGVuc2lvbiA9PT0gbGluZS5leHRlbnNpb24gfHwgb3JpZ0xpbmUubnVtYmVyID09PSBsaW5lLm51bWJlcik7XG4gICAgcmV0dXJuIGZvdW5kTGluZS5udW1iZXIgfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNhdmVVc2VyUmVzcG9uc2UocmVzcG9uc2VzOiBhbnkpIHtcbiAgICBpZiAoIXJlc3BvbnNlcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAobGV0IGxlbiA9IHJlc3BvbnNlcy5sZW5ndGgsIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKHJlc3BvbnNlc1tpXSAmJiByZXNwb25zZXNbaV0uY3VycmVudFVwZGF0ZWRVc2VyKSB7XG4gICAgICAgIC8vIHRoaXMuc2V0VXNlcihyZXNwb25zZXNbaV0uY3VycmVudFVwZGF0ZWRVc2VyLCBmYWxzZSwgdGhpcy51c2VyLnRva2VuKTtcbiAgICAgICAgdGhpcy51c2VyLmhhc01vZGlmaWVkQ2FjaGUgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -27,6 +27,9 @@ import { InfoDialogComponent } from './confirm-dialog/info-dialog.component';
27
27
  import { ValidationService } from './services/validation.service';
28
28
  import { DeviceInfoComponent } from './device-info/device-info.component';
29
29
  import { MacAddressPipe } from './pipes/mac-address.pipe';
30
+ import { DeviceSettingsComponent } from './device-settings/device-settings.component';
31
+ import { LineKeyConfigComponent } from './line-key-config/line-key-config.component';
32
+ import { AssociateLinesComponent } from './associate-lines/associate-lines.component';
30
33
  import * as i0 from "@angular/core";
31
34
  export class UserDeviceManageModule {
32
35
  }
@@ -42,13 +45,19 @@ UserDeviceManageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
42
45
  AssociatedLineRowComponent,
43
46
  InfoDialogComponent,
44
47
  DeviceInfoComponent,
45
- MacAddressPipe], imports: [CommonModule,
48
+ MacAddressPipe,
49
+ DeviceSettingsComponent,
50
+ LineKeyConfigComponent,
51
+ AssociateLinesComponent], imports: [CommonModule,
46
52
  BrowserModule,
47
53
  BrowserAnimationsModule,
48
54
  FormsModule,
49
55
  ReactiveFormsModule,
50
56
  HttpClientModule,
51
- MaterialModule], exports: [DeviceManageWidgetComponent] });
57
+ MaterialModule], exports: [DeviceManageWidgetComponent,
58
+ DeviceSettingsComponent,
59
+ LineKeyConfigComponent,
60
+ AssociateLinesComponent] });
52
61
  UserDeviceManageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserDeviceManageModule, providers: [
53
62
  APIService,
54
63
  UserService,
@@ -83,6 +92,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
83
92
  InfoDialogComponent,
84
93
  DeviceInfoComponent,
85
94
  MacAddressPipe,
95
+ DeviceSettingsComponent,
96
+ LineKeyConfigComponent,
97
+ AssociateLinesComponent,
86
98
  ],
87
99
  imports: [
88
100
  CommonModule,
@@ -106,8 +118,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
106
118
  { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }
107
119
  ],
108
120
  exports: [
109
- DeviceManageWidgetComponent
121
+ DeviceManageWidgetComponent,
122
+ DeviceSettingsComponent,
123
+ LineKeyConfigComponent,
124
+ AssociateLinesComponent
110
125
  ]
111
126
  }]
112
127
  }] });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1kZXZpY2UtbWFuYWdlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL3VzZXItZGV2aWNlLW1hbmFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixF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cm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL3V0aWxzL2FwcC1sb2FkZXIvYXBwLWxvYWRlcic7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUywgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcnNlcHRvcnMvYXV0aC5pbnRlcmNlcHRvcic7XHJcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsLm1vZHVsZSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVtb3ZlS3luRnJvbUlCTVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3JlbW92ZUt5bkZyb21JQk0uc2VydmljZSc7XHJcbmltcG9ydCB7IFNpdGVTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NpdGUtc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IExhenlMb2FkaW5nU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9sYXp5LWxvYWRpbmctc2VsZWN0L2xhenktbG9hZGluZy1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRG5zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZG5zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5lU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbGluZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGV2aWNlTGlzdENvbXBvbmVudCB9IGZyb20gJy4vZGV2aWNlLWxpc3QvZGV2aWNlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGV2aWNlTWFuYWdlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9kZXZpY2UtbWFuYWdlLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZXZpY2VBc3NvY2lhdGVkTGluZUNvbXBvbmVudCB9IGZyb20gJy4vZGV2aWNlLWFzc29jaWF0ZWQtbGluZS9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgRGV2aWNlQXNzb2NpYXRlZExpbmVFeHRlbnNpb25Db21wb25lbnRcclxufSBmcm9tICcuL2RldmljZS1hc3NvY2lhdGVkLWxpbmUvZGV2aWNlLWFzc29jaWF0ZWQtbGluZS1leHRlbnNpb24vZGV2aWNlLWFzc29jaWF0ZWQtbGluZS1leHRlbnNpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBEZXZpY2VBc3NvY2lhdGVkTGluZURldGFpbHNCb3hDb21wb25lbnRcclxufSBmcm9tICcuL2RldmljZS1hc3NvY2lhdGVkLWxpbmUvZGV2aWNlLWFzc29jaWF0ZWQtbGluZS1kZXRhaWxzLWJveC9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWRldGFpbHMtYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFzc29jaWF0ZWRMaW5lUm93Q29tcG9uZW50IH0gZnJvbSAnLi9kZXZpY2UtYXNzb2NpYXRlZC1saW5lL2Fzc29jaWF0ZWQtbGluZS1yb3cvYXNzb2NpYXRlZC1saW5lLXJvdy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kZXZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nL2luZm8tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2VJbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9kZXZpY2UtaW5mby9kZXZpY2UtaW5mby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYWNBZGRyZXNzUGlwZSB9IGZyb20gJy4vcGlwZXMvbWFjLWFkZHJlc3MucGlwZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgQXBwTG9hZGVyQ29tcG9uZW50LFxyXG4gICAgTm90aWZpY2F0aW9uc0NvbXBvbmVudCxcclxuICAgIExhenlMb2FkaW5nU2VsZWN0Q29tcG9uZW50LFxyXG4gICAgRGV2aWNlTGlzdENvbXBvbmVudCxcclxuICAgIERldmljZU1hbmFnZVdpZGdldENvbXBvbmVudCxcclxuICAgIERldmljZUFzc29jaWF0ZWRMaW5lQ29tcG9uZW50LFxyXG4gICAgRGV2aWNlQXNzb2NpYXRlZExpbmVFeHRlbnNpb25Db21wb25lbnQsXHJcbiAgICBEZXZpY2VBc3NvY2lhdGVkTGluZURldGFpbHNCb3hDb21wb25lbnQsXHJcbiAgICBBc3NvY2lhdGVkTGluZVJvd0NvbXBvbmVudCxcclxuICAgIEluZm9EaWFsb2dDb21wb25lbnQsXHJcbiAgICBEZXZpY2VJbmZvQ29tcG9uZW50LFxyXG4gICAgTWFjQWRkcmVzc1BpcGUsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgTWF0ZXJpYWxNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEFQSVNlcnZpY2UsXHJcbiAgICBVc2VyU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBSZW1vdmVLeW5Gcm9tSUJNU2VydmljZSxcclxuICAgIFNpdGVTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBEbnNTZXJ2aWNlLFxyXG4gICAgTGluZVNlcnZpY2UsXHJcbiAgICBEZXZpY2VTZXJ2aWNlLFxyXG4gICAgVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICB7cHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBBdXRoSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlfVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRGV2aWNlTWFuYWdlV2lkZ2V0Q29tcG9uZW50XHJcbiAgXVxyXG5cclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJEZXZpY2VNYW5hZ2VNb2R1bGUge1xyXG59XHJcbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1kZXZpY2UtbWFuYWdlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL3VzZXItZGV2aWNlLW1hbmFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixF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Vzt3QkFDWCxtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsbUJBQW1CO3dCQUNuQixVQUFVO3dCQUNWLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztxQkFDckU7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDJCQUEyQjt3QkFDM0IsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLHVCQUF1QjtxQkFDeEI7aUJBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCcm93c2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdXRpbHMvYXBwLWxvYWRlci9hcHAtbG9hZGVyJztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyc2VwdG9ycy9hdXRoLmludGVyY2VwdG9yJztcclxuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4vbWF0ZXJpYWwubW9kdWxlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZW1vdmVLeW5Gcm9tSUJNU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcmVtb3ZlS3luRnJvbUlCTS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2l0ZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2l0ZS1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF6eUxvYWRpbmdTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2xhenktbG9hZGluZy1zZWxlY3QvbGF6eS1sb2FkaW5nLXNlbGVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IExpbmVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9saW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2VMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9kZXZpY2UtbGlzdC9kZXZpY2UtbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZXZpY2VNYW5hZ2VXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2RldmljZS1tYW5hZ2Utd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERldmljZUFzc29jaWF0ZWRMaW5lQ29tcG9uZW50IH0gZnJvbSAnLi9kZXZpY2UtYXNzb2NpYXRlZC1saW5lL2RldmljZS1hc3NvY2lhdGVkLWxpbmUuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBEZXZpY2VBc3NvY2lhdGVkTGluZUV4dGVuc2lvbkNvbXBvbmVudFxyXG59IGZyb20gJy4vZGV2aWNlLWFzc29jaWF0ZWQtbGluZS9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbi9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWV4dGVuc2lvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIERldmljZUFzc29jaWF0ZWRMaW5lRGV0YWlsc0JveENvbXBvbmVudFxyXG59IGZyb20gJy4vZGV2aWNlLWFzc29jaWF0ZWQtbGluZS9kZXZpY2UtYXNzb2NpYXRlZC1saW5lLWRldGFpbHMtYm94L2RldmljZS1hc3NvY2lhdGVkLWxpbmUtZGV0YWlscy1ib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXNzb2NpYXRlZExpbmVSb3dDb21wb25lbnQgfSBmcm9tICcuL2RldmljZS1hc3NvY2lhdGVkLWxpbmUvYXNzb2NpYXRlZC1saW5lLXJvdy9hc3NvY2lhdGVkLWxpbmUtcm93LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERldmljZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RldmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2cvaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IERldmljZUluZm9Db21wb25lbnQgfSBmcm9tICcuL2RldmljZS1pbmZvL2RldmljZS1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hY0FkZHJlc3NQaXBlIH0gZnJvbSAnLi9waXBlcy9tYWMtYWRkcmVzcy5waXBlJztcclxuaW1wb3J0IHsgRGV2aWNlU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL2RldmljZS1zZXR0aW5ncy9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTGluZUtleUNvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vbGluZS1rZXktY29uZmlnL2xpbmUta2V5LWNvbmZpZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBc3NvY2lhdGVMaW5lc0NvbXBvbmVudCB9IGZyb20gJy4vYXNzb2NpYXRlLWxpbmVzL2Fzc29jaWF0ZS1saW5lcy5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEFwcExvYWRlckNvbXBvbmVudCxcclxuICAgIE5vdGlmaWNhdGlvbnNDb21wb25lbnQsXHJcbiAgICBMYXp5TG9hZGluZ1NlbGVjdENvbXBvbmVudCxcclxuICAgIERldmljZUxpc3RDb21wb25lbnQsXHJcbiAgICBEZXZpY2VNYW5hZ2VXaWRnZXRDb21wb25lbnQsXHJcbiAgICBEZXZpY2VBc3NvY2lhdGVkTGluZUNvbXBvbmVudCxcclxuICAgIERldmljZUFzc29jaWF0ZWRMaW5lRXh0ZW5zaW9uQ29tcG9uZW50LFxyXG4gICAgRGV2aWNlQXNzb2NpYXRlZExpbmVEZXRhaWxzQm94Q29tcG9uZW50LFxyXG4gICAgQXNzb2NpYXRlZExpbmVSb3dDb21wb25lbnQsXHJcbiAgICBJbmZvRGlhbG9nQ29tcG9uZW50LFxyXG4gICAgRGV2aWNlSW5mb0NvbXBvbmVudCxcclxuICAgIE1hY0FkZHJlc3NQaXBlLFxyXG4gICAgRGV2aWNlU2V0dGluZ3NDb21wb25lbnQsXHJcbiAgICBMaW5lS2V5Q29uZmlnQ29tcG9uZW50LFxyXG4gICAgQXNzb2NpYXRlTGluZXNDb21wb25lbnQsXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBCcm93c2VyTW9kdWxlLFxyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgTWF0ZXJpYWxNb2R1bGUsXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIEFQSVNlcnZpY2UsXHJcbiAgICBVc2VyU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBSZW1vdmVLeW5Gcm9tSUJNU2VydmljZSxcclxuICAgIFNpdGVTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBEbnNTZXJ2aWNlLFxyXG4gICAgTGluZVNlcnZpY2UsXHJcbiAgICBEZXZpY2VTZXJ2aWNlLFxyXG4gICAgVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICB7cHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBBdXRoSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlfVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRGV2aWNlTWFuYWdlV2lkZ2V0Q29tcG9uZW50LFxyXG4gICAgRGV2aWNlU2V0dGluZ3NDb21wb25lbnQsXHJcbiAgICBMaW5lS2V5Q29uZmlnQ29tcG9uZW50LFxyXG4gICAgQXNzb2NpYXRlTGluZXNDb21wb25lbnRcclxuICBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckRldmljZU1hbmFnZU1vZHVsZSB7XHJcbn1cclxuIl19