@c8y/ngx-components 1018.503.45 → 1018.503.50

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 (63) hide show
  1. package/context-dashboard/add-dashboard.factory.d.ts +3 -2
  2. package/context-dashboard/context-dashboard.model.d.ts +16 -1
  3. package/context-dashboard/context-dashboard.service.d.ts +4 -2
  4. package/context-dashboard/report-dashboard/report-dashboard-list.component.d.ts +3 -2
  5. package/core/common/ApplicationOptions.d.ts +2 -2
  6. package/core/login/credentials.component.d.ts +1 -3
  7. package/core/login/login.component.d.ts +3 -1
  8. package/esm2020/context-dashboard/add-dashboard.factory.mjs +17 -5
  9. package/esm2020/context-dashboard/context-dashboard.component.mjs +24 -4
  10. package/esm2020/context-dashboard/context-dashboard.model.mjs +19 -4
  11. package/esm2020/context-dashboard/context-dashboard.service.mjs +21 -6
  12. package/esm2020/context-dashboard/dashboard-availability.component.mjs +3 -3
  13. package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +21 -6
  14. package/esm2020/core/common/ApplicationOptions.mjs +1 -1
  15. package/esm2020/core/login/credentials.component.mjs +15 -18
  16. package/esm2020/core/login/login.component.mjs +18 -15
  17. package/esm2020/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.mjs +17 -9
  18. package/esm2020/widgets/implementations/map/map-widget.component.mjs +26 -11
  19. package/esm2020/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.mjs +3 -3
  20. package/esm2020/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.mjs +3 -3
  21. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +91 -15
  22. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  23. package/fesm2015/c8y-ngx-components-widgets-implementations-device-control-message.mjs +19 -8
  24. package/fesm2015/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  25. package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs +37 -20
  26. package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  27. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs +2 -2
  28. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map +1 -1
  29. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs +2 -2
  30. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs.map +1 -1
  31. package/fesm2015/c8y-ngx-components.mjs +11 -11
  32. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  33. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +91 -15
  34. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  35. package/fesm2020/c8y-ngx-components-widgets-implementations-device-control-message.mjs +15 -8
  36. package/fesm2020/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  37. package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs +25 -13
  38. package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  39. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs +2 -2
  40. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map +1 -1
  41. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs +2 -2
  42. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs.map +1 -1
  43. package/fesm2020/c8y-ngx-components.mjs +11 -11
  44. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  45. package/package.json +1 -1
  46. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts +4 -2
  47. package/widgets/implementations/map/map-widget.component.d.ts +7 -4
  48. package/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.d.ts +79 -1
  49. package/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.d.ts +76 -1
  50. package/esm2020/widgets/implementations/three-d-rotation/box-model/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -5
  51. package/esm2020/widgets/implementations/three-d-rotation/box-model/index.mjs +0 -4
  52. package/esm2020/widgets/implementations/three-d-rotation/phone-model/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -5
  53. package/esm2020/widgets/implementations/three-d-rotation/phone-model/index.mjs +0 -4
  54. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -10
  55. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs.map +0 -1
  56. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -10
  57. package/fesm2015/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs.map +0 -1
  58. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -10
  59. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs.map +0 -1
  60. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -10
  61. package/fesm2020/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs.map +0 -1
  62. package/widgets/implementations/three-d-rotation/box-model/index.d.ts +0 -1
  63. package/widgets/implementations/three-d-rotation/phone-model/index.d.ts +0 -1
@@ -92,14 +92,29 @@ export const ALL_GLOBAL_ROLES_SELECTED = 'all';
92
92
  export const PRODUCT_EXPERIENCE = {
93
93
  DASHBOARD: {
94
94
  EVENTS: {
95
- DASHBOARD_AVAILABILITY: 'dashboardAvailability'
95
+ DASHBOARDS: 'dashboards',
96
+ REPORTS: 'reports'
96
97
  },
97
98
  COMPONENTS: {
98
- DASHBOARD_AVAILABILITY: 'dashboard-availability'
99
+ DASHBOARD_VIEW: 'context-dashboard',
100
+ DASHBOARD_AVAILABILITY: 'dashboard-availability',
101
+ REPORTS_LIST: 'report-dashboard-list',
102
+ ADD_REPORT: 'report-dashboard-list',
103
+ ADD_DASHBOARD: 'add-dashboard',
104
+ DELETE_DASHBOARD: 'context-dashboard'
105
+ },
106
+ CONTEXT: {
107
+ REPORT: 'report',
108
+ DEVICE: 'device',
109
+ ASSET: 'asset',
110
+ GROUP: 'group'
99
111
  },
100
112
  ACTIONS: {
101
- APPLY_GLOBAL_ROLES_CHANGES: 'applyGlobalRolesChanges'
113
+ APPLY_GLOBAL_ROLES_CHANGES: 'applyGlobalRolesChanges',
114
+ DELETE: 'delete',
115
+ LOAD: 'load',
116
+ CREATE: 'create'
102
117
  }
103
118
  }
104
119
  };
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBR1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBd0cxRixNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLDJDQUFtQixDQUFBO0lBQ25CLHVDQUFlLENBQUE7SUFDZixzQ0FBYyxDQUFBO0lBQ2QseUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHNEQUFzRCxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsc0VBQXNFLENBQUM7S0FDN0Y7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO0tBQ2hFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsaUNBQWlDLENBQUM7S0FDeEQ7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEM7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1FBQ3hDLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyx5REFBeUQsQ0FBQztLQUNoRjtJQUNEO1FBQ0UsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDOUIsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLDBFQUEwRSxDQUFDO0tBQ2pHO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM3QixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMseUVBQXlFLENBQUM7S0FDaEc7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsb0JBQW9CLENBQUM7UUFDcEMsS0FBSyxFQUFFLDJCQUEyQjtRQUNsQyxXQUFXLEVBQUUsT0FBTyxDQUFDLCtCQUErQixDQUFDO0tBQ3REO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBQ2hDLEtBQUssRUFBRSx1QkFBdUI7UUFDOUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxpREFBaUQsQ0FBQztLQUN4RTtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDakMsS0FBSyxFQUFFLHVCQUF1QjtRQUM5QixXQUFXLEVBQUUsT0FBTyxDQUFDLHFEQUFxRCxDQUFDO0tBQzVFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQztRQUM5QixLQUFLLEVBQUUsdUJBQXVCO1FBQzlCLFdBQVcsRUFBRSxPQUFPLENBQ2xCLDZFQUE2RSxDQUM5RTtLQUNGO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM3QixLQUFLLEVBQUUsc0JBQXNCO1FBQzdCLFdBQVcsRUFBRSxPQUFPLENBQ2xCLDRFQUE0RSxDQUM3RTtLQUNGO0lBQ0QsSUFBSTtJQUNKLDBDQUEwQztJQUMxQywwQ0FBMEM7SUFDMUMsMEJBQTBCO0lBQzFCLDRGQUE0RjtJQUM1RixNQUFNO0lBQ04sS0FBSztJQUNMO1FBQ0UsS0FBSyxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUNoQyxLQUFLLEVBQUUseUJBQXlCO1FBQ2hDLFdBQVcsRUFBRSxPQUFPLENBQUMsa0RBQWtELENBQUM7S0FDekU7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQVk3RixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFjLENBQUM7QUFHeEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsU0FBUyxFQUFFO1FBQ1QsTUFBTSxFQUFFO1lBQ04sc0JBQXNCLEVBQUUsdUJBQXVCO1NBQ2hEO1FBQ0QsVUFBVSxFQUFFO1lBQ1Ysc0JBQXNCLEVBQUUsd0JBQXdCO1NBQ2pEO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsMEJBQTBCLEVBQUUseUJBQXlCO1NBQ3REO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgV2lkZ2V0LFxuICBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUm91dGUsXG4gIGdldHRleHQsXG4gIFZpZXdDb250ZXh0LFxuICBXaWRnZXREaXNwbGF5U2V0dGluZ3Ncbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbmV4cG9ydCBjb25zdCBDT05URVhUX0RBU0hCT0FSRF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignQ29udGV4dERhc2hib2FyZENvbmZpZycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmRDb25maWcge1xuICB3aWRnZXRGaWx0ZXI/OiAoY29tcG9uZW50OiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbikgPT4gYm9vbGVhbjtcbiAgYWxsb3dGdWxsc2NyZWVuPzogYm9vbGVhbjtcbiAgcm91dGVzPzogUm91dGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0V2lkZ2V0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgZGVmaW5lIGhvdyB0aGUgZGVmYXVsdCBjb25maWcgY29tcG9uZW50IGlzXG4gICAqIGRpc3BsYXllZC4gVGhleSBhcmUgc3RhdGljIGFuZCB3aWxsIG5vdCBiZSBzYXZlZC5cbiAgICovXG4gIHNldHRpbmdzPzoge1xuICAgIC8qKlxuICAgICAqIEF2b2lkcyB0byBzaG93IHRoZSB3aWRnZXQgaW4gdGhlIFwiYWRkIHdpZGdldFwiIG1vZGFsXG4gICAgICovXG4gICAgbm9OZXdXaWRnZXRzPzogYm9vbGVhbjtcbiAgICBuZzE/OiB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgdGhpcyB0byBmYWxzZSwgdG8gaGlkZSB0aGUgZGV2aWNlL2dyb3VwIHNlbGVjdG9yXG4gICAgICAgICAqIEBkZXByZWNhdGVkOiBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IGltcGxlbWVudGVkIGluIGFuZ3VsYXJqcyBhbmQgd2lsbCBiZSBleHBvcnRlZCB0byBhIHNlcGFyYXRlIGNvbXBvbmVudC5cbiAgICAgICAgICovXG4gICAgICAgIG5vRGV2aWNlVGFyZ2V0PzogYm9vbGVhbjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGlzIHRvIGZhbHNlIHRvIG9ubHkgc2VsZWN0IGRldmljZXNcbiAgICAgICAgICogQGRlcHJlY2F0ZWQ6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgaW4gYW5ndWxhcmpzIGFuZCB3aWxsIGJlIGV4cG9ydGVkIHRvIGEgc2VwYXJhdGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgZ3JvdXBzU2VsZWN0YWJsZT86IGJvb2xlYW47XG4gICAgICB9O1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgY29udGV4dCBmcm9tIHRoZSBkZXZpY2Ugc2VsZWN0b3IuXG4gICAgICAgKi9cbiAgICAgIGNvbnRleHQ/OiB7XG4gICAgICAgIGlkPzogc3RyaW5nO1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgc2V0dGluZ3MgcGFzc2VkIHRvIHRoZSBjb25maWd1cmF0aW9uIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIHRoYXQgYXJlIGluamVjdGVkIGluIGFueSBkaXNwbGF5aW5nIGNvbXBvbmVudC5cbiAgICovXG4gIGRpc3BsYXlTZXR0aW5ncz86IFdpZGdldERpc3BsYXlTZXR0aW5ncztcblxuICAvKipcbiAgICogV2hhdGV2ZXIgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBjb25maWd1cmF0aW9uIHdoZW4gYSB3aWRnZXQgaXMgY3JlYXRlZC5cbiAgICovXG4gIGNvbmZpZz86IHtcbiAgICAvKipcbiAgICAgKiBBbnkgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCBzaG91bGQgYmUgc3RvcmVkIGhlcmUuXG4gICAgICovXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogVGhlIHNlbGVjdGVkIGRldmljZSBvciBncm91cCAobm90ZTogbmFtaW5nIGlzIGluY29uc2lzdGVudCBhcyBncm91cCB3YXMgYWRkZWQgbGF0ZXJcbiAgICogYnV0IG11c3Qgc3RheSBmb3IgYWxyZWFkeSBpbXBsZW1lbnRlZCB3aWRnZXRzKVxuICAgKi9cbiAgZGV2aWNlPzoge1xuICAgIGlkPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogQW55IG90aGVyIGluZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGJlIHN0b3JlZCBoZXJlLlxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0IGV4dGVuZHMgSU1hbmFnZWRPYmplY3Qge1xuICBjOHlfRGFzaGJvYXJkPzogQ29udGV4dERhc2hib2FyZDtcbiAgbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0RGFzaGJvYXJkIHtcbiAgaWNvbj86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG4gIGRldmljZVR5cGU/OiBib29sZWFuO1xuICBkZXZpY2VUeXBlVmFsdWU/OiBzdHJpbmc7XG4gIGlzRnJvemVuPzogYm9vbGVhbjtcbiAgY2xhc3Nlcz86IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9O1xuICB3aWRnZXRDbGFzc2VzPzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG4gIHdpZGdldE1hcmdpbj86IG51bWJlcjtcbiAgdHJhbnNsYXRlV2lkZ2V0VGl0bGU/OiBib29sZWFuO1xuICBnbG9iYWw/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBjb2x1bW5zIG9uIHRoYXQgZGFzaGJvYXJkLlxuICAgKiBDYW4gYmUgZnJlZWx5IGNob3NlbiwgYnV0IHByb2R1Y3QgdXNlcyBlaXRoZXIgMTIgb3IgMjQuXG4gICAqL1xuICBjb2x1bW5zPzogbnVtYmVyO1xuICBjaGlsZHJlbj86IHtcbiAgICBbaWQ6IHN0cmluZ106IFdpZGdldDtcbiAgfTtcbiAgZ2xvYmFsUm9sZXNJZHM/OiBEYXNoYm9hcmRHbG9iYWxSb2xlcztcbiAgYzh5X0lzTmF2aWdhdG9yTm9kZT86IG9iamVjdDtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIENvbnRleHREYXNoYm9hcmRUeXBlIHtcbiAgRGV2aWNlID0gJ2RldmljZScsXG4gIERldmljZVR5cGUgPSAndHlwZScsXG4gIEdyb3VwID0gJ2dyb3VwJyxcbiAgTmFtZWQgPSAnbmFtZScsXG4gIFJlcG9ydCA9ICdyZXBvcnQnXG59XG5cbmV4cG9ydCBjb25zdCBXSURHRVRfSEVBREVSX0NMQVNTRVMgPSBbXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnUmVndWxhcmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLXJlZ3VsYXInLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBubyBib3JkZXIgYmV0d2VlbiBoZWFkZXIgYW5kIGNvbnRlbnQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCb3JkZXJgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC10aXRsZS1ib3JkZXInLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBhIHNtYWxsIHNlcGFyYXRpb24gYm9yZGVyIGJldHdlZW4gaGVhZGVyIGFuZCBjb250ZW50LicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnT3ZlcmxheWBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLW92ZXJsYXknLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGNvbnRlbnQgb3ZlcmxheXMgdGhlIGhlYWRlci4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0hpZGRlbmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLWhpZGRlbicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGVhZGVyIGlzIG5vdCBzaG93bi4nKVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgV0lER0VUX0NPTlRFTlRfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXRjaCBkYXNoYm9hcmRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWxpZ2h0JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBhcHBlYXJhbmNlIG1hdGNoZXMgdGhlIGRhc2hib2FyZCBhcHBlYXJhbmNlLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGlnaHRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LXdoaXRlJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgbGlnaHQgYXBwZWFyYW5jZSwgdGhhdCBpcywgZGFyayB0ZXh0IG9uIGxpZ2h0IGJhY2tncm91bmQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdEYXJrYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC1kYXJrJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgZGFyayBhcHBlYXJhbmNlLCB0aGF0IGlzLCBsaWdodCB0ZXh0IG9uIGRhcmsgYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ1RyYW5zcGFyZW50YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC10cmFuc3BhcmVudCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIG5vIGJhY2tncm91bmQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCcmFuZGVkYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtY29udGVudC1icmFuZGVkJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBpcyBzdHlsZWQgd2l0aCB0aGUgbWFpbiBicmFuZCBjb2xvci4nKVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREFTSEJPQVJEX1RIRU1FX0NMQVNTRVMgPSBbXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTWF0Y2ggVUlgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtbGlnaHQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgZGFzaGJvYXJkIGFwcGVhcmFuY2UgbWF0Y2hlcyB0aGUgVUkgYXBwZWFyYW5jZS4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0xpZ2h0YHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLXdoaXRlJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICdUaGUgZGFzaGJvYXJkIGhhcyBsaWdodCBhcHBlYXJhbmNlLCB0aGF0IGlzLCBkYXJrIHRleHQgb24gbGlnaHQgYmFja2dyb3VuZC4nXG4gICAgKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0RhcmtgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtZGFyaycsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoXG4gICAgICAnVGhlIGRhc2hib2FyZCBoYXMgZGFyayBhcHBlYXJhbmNlLCB0aGF0IGlzLCBsaWdodCB0ZXh0IG9uIGRhcmsgYmFja2dyb3VuZC4nXG4gICAgKVxuICB9LFxuICAvLyB7XG4gIC8vICAgbGFiZWw6IGdldHRleHQoJ1RyYW5zcGFyZW50YHRoZW1lYCcpLFxuICAvLyAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLXRyYW5zcGFyZW50JyxcbiAgLy8gICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgLy8gICAgICdUaGUgZGFzaGJvYXJkIGlzIHN0eWxlZCB3aXRoIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBhbmQgdGhlcmVmb3JlIGlzIGJvcmRlci1sZXNzLidcbiAgLy8gICApXG4gIC8vIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnQnJhbmRlZGB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1icmFuZGVkJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIGRhc2hib2FyZCBpcyBzdHlsZWQgdXNpbmcgdGhlIGJyYW5kIHBhbGV0dGUuJylcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IFNUWUxJTkdfQ0xBU1NfUFJFRklYRVMgPSBbJ2Rhc2hib2FyZC10aGVtZS0nLCAncGFuZWwtdGl0bGUtJywgJ3BhbmVsLWNvbnRlbnQtJ107XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkQ29weUNsaXBib2FyZCB7XG4gIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZDtcbiAgY29udGV4dDogRGFzaGJvYXJkQ29udGV4dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRDb250ZXh0IHtcbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG4gIGNvbnRleHREYXRhOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0Pjtcbn1cblxuZXhwb3J0IGNvbnN0IEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURUQgPSAnYWxsJyBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIERhc2hib2FyZEdsb2JhbFJvbGVzID0gbnVtYmVyW10gfCB0eXBlb2YgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRDtcblxuZXhwb3J0IGNvbnN0IFBST0RVQ1RfRVhQRVJJRU5DRSA9IHtcbiAgREFTSEJPQVJEOiB7XG4gICAgRVZFTlRTOiB7XG4gICAgICBEQVNIQk9BUkRfQVZBSUxBQklMSVRZOiAnZGFzaGJvYXJkQXZhaWxhYmlsaXR5J1xuICAgIH0sXG4gICAgQ09NUE9ORU5UUzoge1xuICAgICAgREFTSEJPQVJEX0FWQUlMQUJJTElUWTogJ2Rhc2hib2FyZC1hdmFpbGFiaWxpdHknXG4gICAgfSxcbiAgICBBQ1RJT05TOiB7XG4gICAgICBBUFBMWV9HTE9CQUxfUk9MRVNfQ0hBTkdFUzogJ2FwcGx5R2xvYmFsUm9sZXNDaGFuZ2VzJ1xuICAgIH1cbiAgfVxufTtcbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFJTCxPQUFPLEVBR1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBTSx3QkFBd0IsQ0FBQyxDQUFDO0FBd0cxRixNQUFNLENBQU4sSUFBWSxvQkFNWDtBQU5ELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLDJDQUFtQixDQUFBO0lBQ25CLHVDQUFlLENBQUE7SUFDZixzQ0FBYyxDQUFBO0lBQ2QseUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLG9CQUFvQixLQUFwQixvQkFBb0IsUUFNL0I7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRztJQUNuQztRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHNEQUFzRCxDQUFDO0tBQzdFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFdBQVcsRUFBRSxPQUFPLENBQUMsc0VBQXNFLENBQUM7S0FDN0Y7SUFDRDtRQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDaEMsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQUUsT0FBTyxDQUFDLHlDQUF5QyxDQUFDO0tBQ2hFO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUMvQixLQUFLLEVBQUUsb0JBQW9CO1FB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QUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBXaWRnZXQsXG4gIER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLFxuICBSb3V0ZSxcbiAgZ2V0dGV4dCxcbiAgVmlld0NvbnRleHQsXG4gIFdpZGdldERpc3BsYXlTZXR0aW5nc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IENPTlRFWFRfREFTSEJPQVJEX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdDb250ZXh0RGFzaGJvYXJkQ29uZmlnJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZENvbmZpZyB7XG4gIHdpZGdldEZpbHRlcj86IChjb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKSA9PiBib29sZWFuO1xuICBhbGxvd0Z1bGxzY3JlZW4/OiBib29sZWFuO1xuICByb3V0ZXM/OiBSb3V0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRXaWRnZXRDb25maWcge1xuICAvKipcbiAgICogU2V0dGluZ3MgdGhhdCBkZWZpbmUgaG93IHRoZSBkZWZhdWx0IGNvbmZpZyBjb21wb25lbnQgaXNcbiAgICogZGlzcGxheWVkLiBUaGV5IGFyZSBzdGF0aWMgYW5kIHdpbGwgbm90IGJlIHNhdmVkLlxuICAgKi9cbiAgc2V0dGluZ3M/OiB7XG4gICAgLyoqXG4gICAgICogQXZvaWRzIHRvIHNob3cgdGhlIHdpZGdldCBpbiB0aGUgXCJhZGQgd2lkZ2V0XCIgbW9kYWxcbiAgICAgKi9cbiAgICBub05ld1dpZGdldHM/OiBib29sZWFuO1xuICAgIG5nMT86IHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNldCB0aGlzIHRvIGZhbHNlLCB0byBoaWRlIHRoZSBkZXZpY2UvZ3JvdXAgc2VsZWN0b3JcbiAgICAgICAgICogQGRlcHJlY2F0ZWQ6IFRoaXMgaXMgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgaW4gYW5ndWxhcmpzIGFuZCB3aWxsIGJlIGV4cG9ydGVkIHRvIGEgc2VwYXJhdGUgY29tcG9uZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgbm9EZXZpY2VUYXJnZXQ/OiBib29sZWFuO1xuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IHRoaXMgdG8gZmFsc2UgdG8gb25seSBzZWxlY3QgZGV2aWNlc1xuICAgICAgICAgKiBAZGVwcmVjYXRlZDogVGhpcyBpcyBjdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBpbiBhbmd1bGFyanMgYW5kIHdpbGwgYmUgZXhwb3J0ZWQgdG8gYSBzZXBhcmF0ZSBjb21wb25lbnQuXG4gICAgICAgICAqL1xuICAgICAgICBncm91cHNTZWxlY3RhYmxlPzogYm9vbGVhbjtcbiAgICAgIH07XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBjb250ZXh0IGZyb20gdGhlIGRldmljZSBzZWxlY3Rvci5cbiAgICAgICAqL1xuICAgICAgY29udGV4dD86IHtcbiAgICAgICAgaWQ/OiBzdHJpbmc7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBzZXR0aW5ncyBwYXNzZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gY29tcG9uZW50LlxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgfTtcblxuICAvKipcbiAgICogU2V0dGluZ3MgdGhhdCBhcmUgaW5qZWN0ZWQgaW4gYW55IGRpc3BsYXlpbmcgY29tcG9uZW50LlxuICAgKi9cbiAgZGlzcGxheVNldHRpbmdzPzogV2lkZ2V0RGlzcGxheVNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBXaGF0ZXZlciBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyYXRpb24gd2hlbiBhIHdpZGdldCBpcyBjcmVhdGVkLlxuICAgKi9cbiAgY29uZmlnPzoge1xuICAgIC8qKlxuICAgICAqIEFueSBvdGhlciBpbmZvcm1hdGlvbiB0aGF0IHNob3VsZCBiZSBzdG9yZWQgaGVyZS5cbiAgICAgKi9cbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0ZWQgZGV2aWNlIG9yIGdyb3VwIChub3RlOiBuYW1pbmcgaXMgaW5jb25zaXN0ZW50IGFzIGdyb3VwIHdhcyBhZGRlZCBsYXRlclxuICAgKiBidXQgbXVzdCBzdGF5IGZvciBhbHJlYWR5IGltcGxlbWVudGVkIHdpZGdldHMpXG4gICAqL1xuICBkZXZpY2U/OiB7XG4gICAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH07XG4gIC8qKlxuICAgKiBBbnkgb3RoZXIgaW5mb3JtYXRpb24gdGhhdCBzaG91bGQgYmUgc3RvcmVkIGhlcmUuXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QgZXh0ZW5kcyBJTWFuYWdlZE9iamVjdCB7XG4gIGM4eV9EYXNoYm9hcmQ/OiBDb250ZXh0RGFzaGJvYXJkO1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXNoYm9hcmQge1xuICBpY29uPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xuICBwcmlvcml0eT86IG51bWJlcjtcbiAgZGV2aWNlVHlwZT86IGJvb2xlYW47XG4gIGRldmljZVR5cGVWYWx1ZT86IHN0cmluZztcbiAgaXNGcm96ZW4/OiBib29sZWFuO1xuICBjbGFzc2VzPzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH07XG4gIHdpZGdldENsYXNzZXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfTtcbiAgd2lkZ2V0TWFyZ2luPzogbnVtYmVyO1xuICB0cmFuc2xhdGVXaWRnZXRUaXRsZT86IGJvb2xlYW47XG4gIGdsb2JhbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIGNvbHVtbnMgb24gdGhhdCBkYXNoYm9hcmQuXG4gICAqIENhbiBiZSBmcmVlbHkgY2hvc2VuLCBidXQgcHJvZHVjdCB1c2VzIGVpdGhlciAxMiBvciAyNC5cbiAgICovXG4gIGNvbHVtbnM/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzoge1xuICAgIFtpZDogc3RyaW5nXTogV2lkZ2V0O1xuICB9O1xuICBnbG9iYWxSb2xlc0lkcz86IERhc2hib2FyZEdsb2JhbFJvbGVzO1xuICBjOHlfSXNOYXZpZ2F0b3JOb2RlPzogb2JqZWN0O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gQ29udGV4dERhc2hib2FyZFR5cGUge1xuICBEZXZpY2UgPSAnZGV2aWNlJyxcbiAgRGV2aWNlVHlwZSA9ICd0eXBlJyxcbiAgR3JvdXAgPSAnZ3JvdXAnLFxuICBOYW1lZCA9ICduYW1lJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydCdcbn1cblxuZXhwb3J0IGNvbnN0IFdJREdFVF9IRUFERVJfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdSZWd1bGFyYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtcmVndWxhcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIG5vIGJvcmRlciBiZXR3ZWVuIGhlYWRlciBhbmQgY29udGVudC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JvcmRlcmBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLXRpdGxlLWJvcmRlcicsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgaGFzIGEgc21hbGwgc2VwYXJhdGlvbiBib3JkZXIgYmV0d2VlbiBoZWFkZXIgYW5kIGNvbnRlbnQuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdPdmVybGF5YHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtb3ZlcmxheScsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSB3aWRnZXQgY29udGVudCBvdmVybGF5cyB0aGUgaGVhZGVyLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnSGlkZGVuYHN0eWxlYCcpLFxuICAgIGNsYXNzOiAncGFuZWwtdGl0bGUtaGlkZGVuJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoZWFkZXIgaXMgbm90IHNob3duLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBXSURHRVRfQ09OVEVOVF9DTEFTU0VTID0gW1xuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ01hdGNoIGRhc2hib2FyZGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtbGlnaHQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGFwcGVhcmFuY2UgbWF0Y2hlcyB0aGUgZGFzaGJvYXJkIGFwcGVhcmFuY2UuJylcbiAgfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdMaWdodGBzdHlsZWAnKSxcbiAgICBjbGFzczogJ3BhbmVsLWNvbnRlbnQtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBsaWdodCBhcHBlYXJhbmNlLCB0aGF0IGlzLCBkYXJrIHRleHQgb24gbGlnaHQgYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0Rhcmtgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWRhcmsnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LXRyYW5zcGFyZW50JyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnVGhlIHdpZGdldCBoYXMgbm8gYmFja2dyb3VuZC4nKVxuICB9LFxuICB7XG4gICAgbGFiZWw6IGdldHRleHQoJ0JyYW5kZWRgc3R5bGVgJyksXG4gICAgY2xhc3M6ICdwYW5lbC1jb250ZW50LWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgd2lkZ2V0IGlzIHN0eWxlZCB3aXRoIHRoZSBtYWluIGJyYW5kIGNvbG9yLicpXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBEQVNIQk9BUkRfVEhFTUVfQ0xBU1NFUyA9IFtcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXRjaCBVSWB0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1saWdodCcsXG4gICAgZGVzY3JpcHRpb246IGdldHRleHQoJ1RoZSBkYXNoYm9hcmQgYXBwZWFyYW5jZSBtYXRjaGVzIHRoZSBVSSBhcHBlYXJhbmNlLicpXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnTGlnaHRgdGhlbWVgJyksXG4gICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtd2hpdGUnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgJ1RoZSBkYXNoYm9hcmQgaGFzIGxpZ2h0IGFwcGVhcmFuY2UsIHRoYXQgaXMsIGRhcmsgdGV4dCBvbiBsaWdodCBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogZ2V0dGV4dCgnRGFya2B0aGVtZWAnKSxcbiAgICBjbGFzczogJ2Rhc2hib2FyZC10aGVtZS1kYXJrJyxcbiAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICdUaGUgZGFzaGJvYXJkIGhhcyBkYXJrIGFwcGVhcmFuY2UsIHRoYXQgaXMsIGxpZ2h0IHRleHQgb24gZGFyayBiYWNrZ3JvdW5kLidcbiAgICApXG4gIH0sXG4gIC8vIHtcbiAgLy8gICBsYWJlbDogZ2V0dGV4dCgnVHJhbnNwYXJlbnRgdGhlbWVgJyksXG4gIC8vICAgY2xhc3M6ICdkYXNoYm9hcmQtdGhlbWUtdHJhbnNwYXJlbnQnLFxuICAvLyAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAvLyAgICAgJ1RoZSBkYXNoYm9hcmQgaXMgc3R5bGVkIHdpdGggYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGFuZCB0aGVyZWZvcmUgaXMgYm9yZGVyLWxlc3MuJ1xuICAvLyAgIClcbiAgLy8gfSxcbiAge1xuICAgIGxhYmVsOiBnZXR0ZXh0KCdCcmFuZGVkYHRoZW1lYCcpLFxuICAgIGNsYXNzOiAnZGFzaGJvYXJkLXRoZW1lLWJyYW5kZWQnLFxuICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdUaGUgZGFzaGJvYXJkIGlzIHN0eWxlZCB1c2luZyB0aGUgYnJhbmQgcGFsZXR0ZS4nKVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgU1RZTElOR19DTEFTU19QUkVGSVhFUyA9IFsnZGFzaGJvYXJkLXRoZW1lLScsICdwYW5lbC10aXRsZS0nLCAncGFuZWwtY29udGVudC0nXTtcblxuZXhwb3J0IGludGVyZmFjZSBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkIHtcbiAgZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkO1xuICBjb250ZXh0OiBEYXNoYm9hcmRDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZENvbnRleHQge1xuICBjb250ZXh0OiBWaWV3Q29udGV4dDtcbiAgY29udGV4dERhdGE6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+O1xufVxuXG5leHBvcnQgY29uc3QgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRCA9ICdhbGwnIGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGFzaGJvYXJkR2xvYmFsUm9sZXMgPSBudW1iZXJbXSB8IHR5cGVvZiBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9FWFBFUklFTkNFID0ge1xuICBEQVNIQk9BUkQ6IHtcbiAgICBFVkVOVFM6IHtcbiAgICAgIERBU0hCT0FSRFM6ICdkYXNoYm9hcmRzJyxcbiAgICAgIFJFUE9SVFM6ICdyZXBvcnRzJ1xuICAgIH0sXG4gICAgQ09NUE9ORU5UUzoge1xuICAgICAgREFTSEJPQVJEX1ZJRVc6ICdjb250ZXh0LWRhc2hib2FyZCcsXG4gICAgICBEQVNIQk9BUkRfQVZBSUxBQklMSVRZOiAnZGFzaGJvYXJkLWF2YWlsYWJpbGl0eScsXG4gICAgICBSRVBPUlRTX0xJU1Q6ICdyZXBvcnQtZGFzaGJvYXJkLWxpc3QnLFxuICAgICAgQUREX1JFUE9SVDogJ3JlcG9ydC1kYXNoYm9hcmQtbGlzdCcsXG4gICAgICBBRERfREFTSEJPQVJEOiAnYWRkLWRhc2hib2FyZCcsXG4gICAgICBERUxFVEVfREFTSEJPQVJEOiAnY29udGV4dC1kYXNoYm9hcmQnXG4gICAgfSxcbiAgICBDT05URVhUOiB7XG4gICAgICBSRVBPUlQ6ICdyZXBvcnQnLFxuICAgICAgREVWSUNFOiAnZGV2aWNlJyxcbiAgICAgIEFTU0VUOiAnYXNzZXQnLFxuICAgICAgR1JPVVA6ICdncm91cCdcbiAgICB9LFxuICAgIEFDVElPTlM6IHtcbiAgICAgIEFQUExZX0dMT0JBTF9ST0xFU19DSEFOR0VTOiAnYXBwbHlHbG9iYWxSb2xlc0NoYW5nZXMnLFxuICAgICAgREVMRVRFOiAnZGVsZXRlJyxcbiAgICAgIExPQUQ6ICdsb2FkJyxcbiAgICAgIENSRUFURTogJ2NyZWF0ZSdcbiAgICB9XG4gIH1cbn07XG4iXX0=
@@ -1,12 +1,12 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { InventoryService } from '@c8y/client';
4
- import { AlertService, DynamicComponentService, getActivatedRoute, gettext, ModalService, NavigatorNode, NavigatorService, Permissions, Status, TabsService, ViewContext } from '@c8y/ngx-components';
4
+ import { AlertService, DynamicComponentService, getActivatedRoute, gettext, GroupService, ModalService, NavigatorNode, NavigatorService, Permissions, Status, TabsService, ViewContext } from '@c8y/ngx-components';
5
5
  import { TranslateService } from '@ngx-translate/core';
6
6
  import { assign, pick, some, keys, keyBy, has, get, forEach, cloneDeep, reduce, set } from 'lodash-es';
7
7
  import { combineLatest, from, of, Subject } from 'rxjs';
8
8
  import { catchError, filter, map, mergeAll, mergeMap, tap, throwIfEmpty, toArray } from 'rxjs/operators';
9
- import { ContextDashboardType, STYLING_CLASS_PREFIXES, ALL_GLOBAL_ROLES_SELECTED } from './context-dashboard.model';
9
+ import { ContextDashboardType, STYLING_CLASS_PREFIXES, ALL_GLOBAL_ROLES_SELECTED, PRODUCT_EXPERIENCE } from './context-dashboard.model';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@c8y/client";
12
12
  import * as i2 from "@c8y/ngx-components";
@@ -20,7 +20,7 @@ export class ContextDashboardService {
20
20
  this._formDisabled = value;
21
21
  this.formDisabledSubject.next(value);
22
22
  }
23
- constructor(inventory, tabs, modal, translateService, router, navigator, permissions, alert, dynamicComponent) {
23
+ constructor(inventory, tabs, modal, translateService, router, navigator, permissions, alert, dynamicComponent, groupService) {
24
24
  this.inventory = inventory;
25
25
  this.tabs = tabs;
26
26
  this.modal = modal;
@@ -30,6 +30,7 @@ export class ContextDashboardService {
30
30
  this.permissions = permissions;
31
31
  this.alert = alert;
32
32
  this.dynamicComponent = dynamicComponent;
33
+ this.groupService = groupService;
33
34
  this.REPORT_PARTIAL_NAME = 'report_';
34
35
  this.INVENTORY_ROLES = [
35
36
  Permissions.ROLE_INVENTORY_ADMIN,
@@ -236,6 +237,20 @@ export class ContextDashboardService {
236
237
  }
237
238
  }
238
239
  }
240
+ getContextForGS(mo) {
241
+ if (this.groupService.isDevice(mo)) {
242
+ return PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.DEVICE;
243
+ }
244
+ else if (this.groupService.isAsset(mo)) {
245
+ return PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.ASSET;
246
+ }
247
+ else if (this.groupService.isGroup(mo)) {
248
+ return PRODUCT_EXPERIENCE.DASHBOARD.CONTEXT.GROUP;
249
+ }
250
+ else {
251
+ return null;
252
+ }
253
+ }
239
254
  adjustDashboardFor24Columns(dashboards) {
240
255
  if (Array.isArray(dashboards)) {
241
256
  return dashboards.map(dashboard => this.adjustDashboardFor24Columns(dashboard));
@@ -435,12 +450,12 @@ export class ContextDashboardService {
435
450
  return null;
436
451
  }
437
452
  }
438
- ContextDashboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContextDashboardService, deps: [{ token: i1.InventoryService }, { token: i2.TabsService }, { token: i2.ModalService }, { token: i3.TranslateService }, { token: i4.Router }, { token: i2.NavigatorService }, { token: i2.Permissions }, { token: i2.AlertService }, { token: i2.DynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable });
453
+ ContextDashboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContextDashboardService, deps: [{ token: i1.InventoryService }, { token: i2.TabsService }, { token: i2.ModalService }, { token: i3.TranslateService }, { token: i4.Router }, { token: i2.NavigatorService }, { token: i2.Permissions }, { token: i2.AlertService }, { token: i2.DynamicComponentService }, { token: i2.GroupService }], target: i0.ɵɵFactoryTarget.Injectable });
439
454
  ContextDashboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContextDashboardService, providedIn: 'root' });
440
455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ContextDashboardService, decorators: [{
441
456
  type: Injectable,
442
457
  args: [{
443
458
  providedIn: 'root'
444
459
  }]
445
- }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.TabsService }, { type: i2.ModalService }, { type: i3.TranslateService }, { type: i4.Router }, { type: i2.NavigatorService }, { type: i2.Permissions }, { type: i2.AlertService }, { type: i2.DynamicComponentService }]; } });
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTBCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQWUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUNMLFlBQVksRUFFWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxZQUFZLEVBQ1osYUFBYSxFQUNiLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsTUFBTSxFQUVOLFdBQVcsRUFDWCxXQUFXLEVBRVosTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osSUFBSSxFQUNKLEtBQUssRUFDTCxHQUFHLEVBQ0gsR0FBRyxFQUNILE9BQU8sRUFDUCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEdBQUcsRUFDSixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEdBQUcsRUFDSCxRQUFRLEVBQ1IsUUFBUSxFQUNSLEdBQUcsRUFDSCxZQUFZLEVBQ1osT0FBTyxFQUNSLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUdMLG9CQUFvQixFQUdwQixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQzFCLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQUtuQyxNQUFNLE9B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LFVBQVU7Z0JBQ2pDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7U0FDakM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssV0FBVyxDQUFDLEtBQUssRUFBRTtZQUN6QyxhQUFhLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLG9CQUEwQyxFQUFFLEtBQWE7UUFDakYsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWlELEVBQUUsT0FBUTtRQUNqRixJQUNFLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFDNUI7WUFDQSxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztvSEFwbUJVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbnRleHREYXRhLFxuICBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgZ2V0QWN0aXZhdGVkUm91dGUsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgTmF2aWdhdG9yU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFN0YXR1cyxcbiAgVGFiLFxuICBUYWJzU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIFdpZGdldFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIGFzc2lnbixcbiAgcGljayxcbiAgc29tZSxcbiAga2V5cyxcbiAga2V5QnksXG4gIGhhcyxcbiAgZ2V0LFxuICBmb3JFYWNoLFxuICBjbG9uZURlZXAsXG4gIHJlZHVjZSxcbiAgc2V0XG59IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG1lcmdlQWxsLFxuICBtZXJnZU1hcCxcbiAgdGFwLFxuICB0aHJvd0lmRW1wdHksXG4gIHRvQXJyYXlcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ29udGV4dERhc2hib2FyZCxcbiAgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsXG4gIENvbnRleHREYXNoYm9hcmRUeXBlLFxuICBEYXNoYm9hcmRDb250ZXh0LFxuICBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkLFxuICBTVFlMSU5HX0NMQVNTX1BSRUZJWEVTLFxuICBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0RGFzaGJvYXJkU2VydmljZSB7XG4gIGZvcm1EaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IFJFUE9SVF9QQVJUSUFMX05BTUUgPSAncmVwb3J0Xyc7XG4gIGNvcHlDbGlwYm9hcmQ6IERhc2hib2FyZENvcHlDbGlwYm9hcmQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgSU5WRU5UT1JZX1JPTEVTID0gW1xuICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU5cbiAgXTtcbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX1BBR0VTSVpFID0gMTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBGUkFHTUVOVF9OQU1FID0gJ2M4eV9EYXNoYm9hcmQnO1xuICBwcml2YXRlIHJlYWRvbmx5IERBU0hCT0FSRF9ST1VURV9QQVRIID0gJ2Rhc2hib2FyZCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgSU5ERVhfU1BMSVQgPSAnISc7XG4gIHByaXZhdGUgX2Zvcm1EaXNhYmxlZCA9IHRydWU7XG4gIHByaXZhdGUgZm9ybURpc2FibGVkU3ViamVjdCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgZ2V0IGZvcm1EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybURpc2FibGVkO1xuICB9XG5cbiAgc2V0IGZvcm1EaXNhYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuX2Zvcm1EaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuZm9ybURpc2FibGVkU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFiczogVGFic1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbDogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbmF2aWdhdG9yOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZm9ybURpc2FibGVkJCA9IHRoaXMuZm9ybURpc2FibGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShkYXNoYm9hcmRDZmc6IENvbnRleHREYXNoYm9hcmQsIGNvbnRleHQ/OiBDb250ZXh0RGF0YSwgbmFtZSA9ICcnKSB7XG4gICAgbGV0IGlkID0gJyc7XG4gICAgbGV0IGRhc2hib2FyZFR5cGU7XG5cbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgaWQgPSBjb250ZXh0LmNvbnRleHREYXRhLmlkIGFzIHN0cmluZztcbiAgICAgIGRhc2hib2FyZFR5cGUgPSB0aGlzLmdldERhc2hib2FyZFR5cGVGcm9tVmlld0NvbnRleHQoZGFzaGJvYXJkQ2ZnLCBjb250ZXh0KTtcbiAgICB9XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGRhc2hib2FyZFR5cGUgPSBDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+ID0ge307XG4gICAgYXNzaWduKGRhc2hib2FyZCwgdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMoeyBjOHlfRGFzaGJvYXJkOiBkYXNoYm9hcmRDZmcgfSkpO1xuXG4gICAgY29uc3QgdmFsdWUgPVxuICAgICAgZGFzaGJvYXJkVHlwZSA9PT0gQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlVHlwZSA/IGRhc2hib2FyZENmZy5kZXZpY2VUeXBlVmFsdWUgOiBuYW1lIHx8IGlkO1xuXG4gICAgY29uc3QgZnJhZ21lbnRLZXkgPSB0aGlzLmNyZWF0ZUZyYWdtZW50S2V5KGRhc2hib2FyZFR5cGUsIHZhbHVlKTtcbiAgICBkYXNoYm9hcmRbZnJhZ21lbnRLZXldID0ge307XG5cbiAgICBpZiAodGhpcy5zaG91bGRTZXRHbG9iYWwoZGFzaGJvYXJkLCBjb250ZXh0KSkge1xuICAgICAgYXNzaWduKGRhc2hib2FyZCwgeyBjOHlfR2xvYmFsOiB7fSB9KTtcbiAgICB9XG4gICAgZGFzaGJvYXJkLm5hbWUgPSBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5uYW1lO1xuICAgIGNvbnN0IHsgZGF0YSB9ID1cbiAgICAgIGRhc2hib2FyZFR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLkdyb3VwIHx8XG4gICAgICBkYXNoYm9hcmRUeXBlID09PSBDb250ZXh0RGFzaGJvYXJkVHlwZS5EZXZpY2UgfHxcbiAgICAgIChjb250ZXh0ICYmIGRhc2hib2FyZFR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkKVxuICAgICAgICA/IGF3YWl0IHRoaXMuaW52ZW50b3J5LmNoaWxkQWRkaXRpb25zQ3JlYXRlKGRhc2hib2FyZCwgaWQpXG4gICAgICAgIDogYXdhaXQgdGhpcy5pbnZlbnRvcnkuY3JlYXRlKGRhc2hib2FyZCk7XG4gICAgcmV0dXJuIGRhdGEgYXMgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q7XG4gIH1cblxuICBhc3luYyBkZXRhaWwoZGFzaGJvYXJkTU86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgbGV0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKGRhc2hib2FyZE1PKTtcbiAgICBkYXRhID0gdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMoZGF0YSBhcyBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCk7XG4gICAgdGhpcy5jYWNoZS5zZXQoZGFzaGJvYXJkTU8uaWQsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBkYXNoYm9hcmQubmFtZSA9IGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLm5hbWU7XG4gICAgZGFzaGJvYXJkID0gdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMoZGFzaGJvYXJkKTtcbiAgICBjb25zdCBrZWVwRnJhZ21lbnRzID0gdGhpcy5jbGVhbihwaWNrKGRhc2hib2FyZCwgW3RoaXMuRlJBR01FTlRfTkFNRSwgJ2lkJywgJ25hbWUnXSkpO1xuICAgIGtlZXBGcmFnbWVudHMuYzh5X0dsb2JhbCA9IHRoaXMuc2hvdWxkU2V0R2xvYmFsKGRhc2hib2FyZCk7XG4gICAgYXdhaXQgdGhpcy5zZXJpYWxpemVXaWRnZXRDb25maWdzKGtlZXBGcmFnbWVudHMpO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkudXBkYXRlKGtlZXBGcmFnbWVudHMpO1xuICAgIHRoaXMuY2FjaGUuc2V0KGRhc2hib2FyZC5pZCwgZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBkZWxldGUoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCwgd2l0aENvbmZpcm1hdGlvbiA9IHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKHdpdGhDb25maXJtYXRpb24pIHtcbiAgICAgICAgbGV0IG1zZzogc3RyaW5nID0gZ2V0dGV4dChcbiAgICAgICAgICBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGRhc2hib2FyZCBcInt7IGRhc2hib2FyZE5hbWUgfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD9gXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmlzRGV2aWNlVHlwZShkYXNoYm9hcmQpKSB7XG4gICAgICAgICAgbXNnID0gZ2V0dGV4dChcbiAgICAgICAgICAgIGBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgZGFzaGJvYXJkIFwie3sgZGFzaGJvYXJkTmFtZSB9fVwiIGZyb20gYWxsIGRldmljZXMgb2YgdGhlIHR5cGUgXCJ7eyBkZXZpY2VUeXBlIH19XCIuXG4gICAgICAgICAgIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5tb2RhbC5jb25maXJtKFxuICAgICAgICAgIGdldHRleHQoJ0RlbGV0ZSBkYXNoYm9hcmQnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChtc2csIHtcbiAgICAgICAgICAgIGRhc2hib2FyZE5hbWU6IGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLm5hbWUsXG4gICAgICAgICAgICBkZXZpY2VUeXBlOiBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5kZXZpY2VUeXBlVmFsdWVcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBTdGF0dXMuREFOR0VSLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9rOiBnZXR0ZXh0KCdEZWxldGUnKSxcbiAgICAgICAgICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJylcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmludmVudG9yeS5kZWxldGUoZGFzaGJvYXJkKTtcbiAgICAgIGNvbnN0IHRhYlRvUmVtb3ZlID0gQXJyYXkuZnJvbSh0aGlzLnRhYnMuc3RhdGUpLmZpbmQodGFiID0+XG4gICAgICAgIHRhYi5wYXRoLmVuZHNXaXRoKGAke3RoaXMuREFTSEJPQVJEX1JPVVRFX1BBVEh9LyR7ZGFzaGJvYXJkLmlkfWApXG4gICAgICApO1xuICAgICAgdGhpcy50YWJzLnJlbW92ZSh0YWJUb1JlbW92ZSk7XG4gICAgICB0aGlzLnRhYnMucmVmcmVzaCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAvLyBpbnRlbmRlZCBlbXB0eVxuICAgIH1cbiAgfVxuXG4gIGFjdGl2YXRlRGFzaGJvYXJkcyhcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICB0eXBlczogQ29udGV4dERhc2hib2FyZFR5cGVbXVxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBUYWJbXT4ge1xuICAgIGNvbnN0IHsgZGFzaGJvYXJkSWQgfSA9IHJvdXRlLnBhcmFtcztcbiAgICBpZiAoZGFzaGJvYXJkSWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldERhc2hib2FyZCQoZGFzaGJvYXJkSWQsIHR5cGVzLCByb3V0ZS5wYXJlbnQuZGF0YS5jb250ZXh0RGF0YSkucGlwZShcbiAgICAgICAgdGFwKGRhc2hib2FyZCA9PiB7XG4gICAgICAgICAgcm91dGUuZGF0YSA9IHsgZGFzaGJvYXJkIH07XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFRhYnMkKHJvdXRlLmRhdGEuY29udGV4dERhdGEsIHR5cGVzKTtcbiAgfVxuXG4gIGdldE5hbWVkRGFzaGJvYXJkT3JDcmVhdGUobmFtZTogc3RyaW5nLCBkZWZhdWx0V2lkZ2V0czogV2lkZ2V0W10sIGNvbnRleHQ/OiBDb250ZXh0RGF0YSkge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5tYXBXaWRnZXRzKGRlZmF1bHRXaWRnZXRzKTtcbiAgICByZXR1cm4gdGhpcy5nZXREYXNoYm9hcmQkKG5hbWUsIFtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZF0pLnBpcGUoXG4gICAgICB0aHJvd0lmRW1wdHkoKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT5cbiAgICAgICAgZnJvbShcbiAgICAgICAgICB0aGlzLmNyZWF0ZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgIHdpZGdldENsYXNzZXM6IHsgJ2Rhc2hib2FyZC10aGVtZS1saWdodCc6IHRydWUsICdwYW5lbC10aXRsZS1yZWd1bGFyJzogdHJ1ZSB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRhYnMoZGFzaGJvYXJkTU86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgaWYgKCF0aGlzLmlzTmFtZWQoZGFzaGJvYXJkTU8pKSB7XG4gICAgICBjb25zdCB0YWJUb1VwZGF0ZSA9IEFycmF5LmZyb20odGhpcy50YWJzLnN0YXRlKS5maW5kKHRhYiA9PlxuICAgICAgICB0YWIucGF0aC5lbmRzV2l0aChgJHt0aGlzLkRBU0hCT0FSRF9ST1VURV9QQVRIfS8ke2Rhc2hib2FyZE1PLmlkfWApXG4gICAgICApO1xuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kZXRhaWwoZGFzaGJvYXJkTU8pO1xuICAgICAgaWYgKHRhYlRvVXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHsgaWNvbiwgcHJpb3JpdHksIG5hbWUgfSA9IGRhdGEuYzh5X0Rhc2hib2FyZDtcbiAgICAgICAgdGFiVG9VcGRhdGUuaWNvbiA9IGljb247XG4gICAgICAgIHRhYlRvVXBkYXRlLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gICAgICAgIHRhYlRvVXBkYXRlLmxhYmVsID0gbmFtZTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGFicy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlTmF2aWdhdG9ySXRlbShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLm5hdmlnYXRvci5zdGF0ZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgaWYgKG5vZGUucGF0aCA9PT0gYHJlcG9ydHMvJHttby5pZH1gKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdG9yLnJlbW92ZShub2RlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAobW8uYzh5X0lzTmF2aWdhdG9yTm9kZSkge1xuICAgICAgY29uc3Qgbm9kZVRvQWRkID0gbmV3IE5hdmlnYXRvck5vZGUoe1xuICAgICAgICBsYWJlbDogbW8ubmFtZSxcbiAgICAgICAgcGF0aDogYHJlcG9ydHMvJHttby5pZH1gLFxuICAgICAgICBpY29uOiBtby5pY29uLFxuICAgICAgICBwcmlvcml0eTogbW8ucHJpb3JpdHlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5uYXZpZ2F0b3IuYWRkKG5vZGVUb0FkZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVUb0Rhc2hib2FyZChkYXNoYm9hcmRNTzogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBpZiAoL2Rhc2hib2FyZC8udGVzdCh0aGlzLnJvdXRlci51cmwpKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgZGFzaGJvYXJkTU8uaWRdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IGdldEFjdGl2YXRlZFJvdXRlKHRoaXMucm91dGVyKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICgvXlxcLyhkZXZpY2V8Z3JvdXApXFwvWzAtOV0rJC8udGVzdCh0aGlzLnJvdXRlci51cmwpKSB7XG4gICAgICAvLyBpbiBjYXNlIHRoZSBhZGQgZGFzaGJvYXJkIGJ1dHRvbiBpcyB0aGUgb25seSB0YWIgb24gdGhhdCByb3V0ZVxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuJywgdGhpcy5EQVNIQk9BUkRfUk9VVEVfUEFUSCwgZGFzaGJvYXJkTU8uaWRdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IGdldEFjdGl2YXRlZFJvdXRlKHRoaXMucm91dGVyKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi4nLCB0aGlzLkRBU0hCT0FSRF9ST1VURV9QQVRILCBkYXNoYm9hcmRNTy5pZF0sIHtcbiAgICAgICAgcmVsYXRpdmVUbzogZ2V0QWN0aXZhdGVkUm91dGUodGhpcy5yb3V0ZXIpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjYW5FZGl0RGFzaGJvYXJkKG1vKSB7XG4gICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuY2FuRWRpdChcbiAgICAgIFtcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0NSRUFURSxcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTixcbiAgICAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9DUkVBVEVcbiAgICAgIF0sXG4gICAgICBtb1xuICAgICk7XG4gIH1cblxuICBpc05hbWVkKGRhc2hib2FyZDogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4pIHtcbiAgICByZXR1cm4gc29tZShrZXlzKGRhc2hib2FyZCksIHByb3AgPT5cbiAgICAgIG5ldyBSZWdFeHAoXG4gICAgICAgIGBeJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuTmFtZWR9JHt0aGlzLklOREVYX1NQTElUfWBcbiAgICAgICkudGVzdChwcm9wKVxuICAgICk7XG4gIH1cblxuICBpc1JlcG9ydChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KSB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkfSR7dGhpcy5JTkRFWF9TUExJVH0ke3RoaXMuUkVQT1JUX1BBUlRJQUxfTkFNRX1gXG4gICAgICApLnRlc3QocHJvcClcbiAgICApO1xuICB9XG5cbiAgaXNEZXZpY2VUeXBlKGRhc2hib2FyZDogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4pIHtcbiAgICByZXR1cm4gc29tZShrZXlzKGRhc2hib2FyZCksIHByb3AgPT5cbiAgICAgIG5ldyBSZWdFeHAoXG4gICAgICAgIGBeJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlVHlwZX0ke3RoaXMuSU5ERVhfU1BMSVR9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGlzRGV2aWNlRGFzaGJvYXJkKGRhc2hib2FyZDogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc29tZShrZXlzKGRhc2hib2FyZCksIHByb3AgPT5cbiAgICAgIG5ldyBSZWdFeHAoXG4gICAgICAgIGBeJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlfSR7dGhpcy5JTkRFWF9TUExJVH1gXG4gICAgICApLnRlc3QocHJvcClcbiAgICApO1xuICB9XG5cbiAgaXNHcm91cERhc2hib2FyZChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLkdyb3VwfSR7dGhpcy5JTkRFWF9TUExJVH1gXG4gICAgICApLnRlc3QocHJvcClcbiAgICApO1xuICB9XG5cbiAgZ2V0RmlsdGVyZWREYXNoYm9hcmRTdHlsZXMoc3R5bGVMaXN0OiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBzdHlsZUxpc3QuZmlsdGVyKGMgPT5cbiAgICAgIFNUWUxJTkdfQ0xBU1NfUFJFRklYRVMuc29tZShjbGFzc1ByZWZpeCA9PiBjLnN0YXJ0c1dpdGgoY2xhc3NQcmVmaXgpKVxuICAgICk7XG4gIH1cblxuICBnZXRTdHlsaW5nKHN0eWxlTGlzdCwgc3R5bGVOYW1lLCBkZWZhdWx0VmFsdWUpIHtcbiAgICBjb25zdCBzdHlsaW5nID0gc3R5bGVMaXN0LmZpbmQoXG4gICAgICBzdHlsZSA9PiBzdHlsZSAmJiBuZXcgUmVnRXhwKGAtJHtzdHlsZU5hbWV9JGAsICdpJykudGVzdChzdHlsZS5jbGFzcylcbiAgICApO1xuICAgIHJldHVybiBzdHlsaW5nID8gc3R5bGluZy5jbGFzcyA6IGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIG1hcFdpZGdldHMod2lkZ2V0czogV2lkZ2V0W10pIHtcbiAgICByZXR1cm4ga2V5QnkoXG4gICAgICB3aWRnZXRzLm1hcCh3aWRnZXQgPT4ge1xuICAgICAgICB3aWRnZXQuaWQgPSBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc3Vic3RyKDIpO1xuICAgICAgICByZXR1cm4gd2lkZ2V0O1xuICAgICAgfSksXG4gICAgICAnaWQnXG4gICAgKTtcbiAgfVxuXG4gIGdldERhc2hib2FyZCQoZGFzaGJvYXJkSWRPck5hbWUsIGRhc2hib2FyZFR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlW10sIG1vPzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuY2FjaGUuZ2V0KGRhc2hib2FyZElkT3JOYW1lKTtcblxuICAgIGNvbnN0IGRhc2hib2FyZHMgPSBtb1xuICAgICAgPyB0aGlzLmdldENvbnRleHREYXNoYm9hcmRzKG1vLCBkYXNoYm9hcmRUeXBlKVxuICAgICAgOiBbdGhpcy5nZXROYW1lZERhc2hib2FyZChkYXNoYm9hcmRJZE9yTmFtZSldO1xuXG4gICAgY29uc3QgY2FjaGVSZWZyZXNoID0gdGhpcy5nZXRDb250ZXh0RGFzaGJvYXJkcyQoZGFzaGJvYXJkcykucGlwZShcbiAgICAgIHRhcChkYXNoYm9hcmQgPT4gdGhpcy5jYWNoZURhc2hib2FyZChkYXNoYm9hcmQpKSxcbiAgICAgIGZpbHRlcihcbiAgICAgICAgZGFzaGJvYXJkID0+XG4gICAgICAgICAgZGFzaGJvYXJkLmlkID09PSBkYXNoYm9hcmRJZE9yTmFtZSB8fFxuICAgICAgICAgIGhhcyhcbiAgICAgICAgICAgIGRhc2hib2FyZCxcbiAgICAgICAgICAgIGAke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZH0ke3RoaXMuSU5ERVhfU1BMSVR9JHtkYXNoYm9hcmRJZE9yTmFtZX1gXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIGNhY2hlID8gb2YoY2FjaGUpIDogY2FjaGVSZWZyZXNoO1xuICB9XG5cbiAgYXN5bmMgcGFzdGVEYXNoYm9hcmQobmV3Q29udGV4dDogRGFzaGJvYXJkQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNvcHlDbGlwYm9hcmQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICh0aGlzLmNhblBhc3RlRGFzaGJvYXJkKHRoaXMuY29weUNsaXBib2FyZCwgbmV3Q29udGV4dC5jb250ZXh0KSkge1xuICAgICAgICAgIGNvbnN0IGRhc2hib2FyZFRvUGFzdGUgPSB0aGlzLmNyZWF0ZUNvbnRleHREYXNoYm9hcmRDb3B5KFxuICAgICAgICAgICAgdGhpcy5jb3B5Q2xpcGJvYXJkLmRhc2hib2FyZCxcbiAgICAgICAgICAgIG5ld0NvbnRleHQuY29udGV4dERhdGEsXG4gICAgICAgICAgICB0aGlzLmNvcHlDbGlwYm9hcmQuY29udGV4dC5jb250ZXh0RGF0YVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgZGFzaGJvYXJkID0gYXdhaXQgdGhpcy5jcmVhdGUodGhpcy5jbGVhbihkYXNoYm9hcmRUb1Bhc3RlKSwgbmV3Q29udGV4dCk7XG4gICAgICAgICAgdGhpcy5jb3B5Q2xpcGJvYXJkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMubmF2aWdhdGVUb0Rhc2hib2FyZChkYXNoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5hbGVydC53YXJuaW5nKGdldHRleHQoJ0luc3VmZmljaWVudCBwZXJtaXNzaW9ucyBmb3IgdGhpcyBhY3Rpb24uJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1pZ3JhdGUgZGFzaGJvYXJkcyBmcm9tIHByZXZpb3VzIDEyIGNvbHVtbnMgbGF5b3V0IHRvIDI0IGNvbHVtbnMuXG4gICAqL1xuICBwcml2YXRlIGFkanVzdERhc2hib2FyZEZvcjI0Q29sdW1uczxUIGV4dGVuZHMgeyBjOHlfRGFzaGJvYXJkPzogQ29udGV4dERhc2hib2FyZCB9PihcbiAgICBkYXNoYm9hcmRzOiBUW11cbiAgKTogVFtdO1xuICBwcml2YXRlIGFkanVzdERhc2hib2FyZEZvcjI0Q29sdW1uczxUIGV4dGVuZHMgeyBjOHlfRGFzaGJvYXJkPzogQ29udGV4dERhc2hib2FyZCB9PihcbiAgICBkYXNoYm9hcmRzOiBUXG4gICk6IFQ7XG4gIHByaXZhdGUgYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zPFQgZXh0ZW5kcyB7IGM4eV9EYXNoYm9hcmQ/OiBDb250ZXh0RGFzaGJvYXJkIH0+KFxuICAgIGRhc2hib2FyZHM6IFQgfCBUW11cbiAgKTogVCB8IFRbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGFzaGJvYXJkcykpIHtcbiAgICAgIHJldHVybiBkYXNoYm9hcmRzLm1hcChkYXNoYm9hcmQgPT4gdGhpcy5hZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnMoZGFzaGJvYXJkKSk7XG4gICAgfVxuICAgIC8vIGlmIGBjb2x1bW5zYCBhdHRyaWJ1dGUgZXhpc3RzLCBkYXNoYm9hcmQgd2FzIGFscmVhZHkgYWRqdXN0ZWQuXG4gICAgaWYgKGRhc2hib2FyZHMuYzh5X0Rhc2hib2FyZC5jb2x1bW5zKSB7XG4gICAgICByZXR1cm4gZGFzaGJvYXJkcztcbiAgICB9XG5cbiAgICBkYXNoYm9hcmRzLmM4eV9EYXNoYm9hcmQuY29sdW1ucyA9IDI0O1xuICAgIGlmICghZGFzaGJvYXJkcy5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZGFzaGJvYXJkcztcbiAgICB9XG4gICAgLy8gd2UgbmVlZCB0byBtdWx0aXBseSBib3RoIF93aWR0aCBhbmQgX3ggYXR0cmlidXRlcyB3aXRoIDIgdG8gbWlncmF0ZSBmcm9tIDEyIHRvIDI0IGNvbHVtbnMuXG4gICAgT2JqZWN0LnZhbHVlcyhkYXNoYm9hcmRzLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4pLmZvckVhY2god2lkZ2V0ID0+IHtcbiAgICAgIGlmICh3aWRnZXQuX3dpZHRoKSB7XG4gICAgICAgIHdpZGdldC5fd2lkdGggPSB3aWRnZXQuX3dpZHRoICogMjtcbiAgICAgIH1cbiAgICAgIGlmICh3aWRnZXQuX3gpIHtcbiAgICAgICAgd2lkZ2V0Ll94ID0gd2lkZ2V0Ll94ICogMjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGFzaGJvYXJkcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VyaWFsaXplV2lkZ2V0Q29uZmlncyhkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBjbG9uZURlZXAoZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4pO1xuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlncyA9IE9iamVjdC52YWx1ZXMoY2hpbGRyZW4pO1xuICAgIGNvbnN0IGRldGFpbHMgPSBjb25maWdzLm1hcCgoeyBjb21wb25lbnRJZCwgY29uZmlnIH0pID0+ICh7IGNvbXBvbmVudElkLCBjb25maWcgfSkpO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnQuc2VyaWFsaXplQ29uZmlncyhkZXRhaWxzKTtcbiAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCwgaW5kZXgpID0+IHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHNldChkZXRhaWxzW2luZGV4XS5jb25maWcsIGtleSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfVxuXG4gIHByaXZhdGUgY2FuUGFzdGVEYXNoYm9hcmQoXG4gICAgY29weUNsaXBib2FyZDogRGFzaGJvYXJkQ29weUNsaXBib2FyZCxcbiAgICBjdXJyZW50Q29udGV4dDogVmlld0NvbnRleHRcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY2xpcGJvYXJkVmlld0NvbnRleHQgPSBjb3B5Q2xpcGJvYXJkLmNvbnRleHQuY29udGV4dDtcblxuICAgIGlmIChjdXJyZW50Q29udGV4dCAhPT0gY2xpcGJvYXJkVmlld0NvbnRleHQpIHtcbiAgICAgIGlmIChjbGlwYm9hcmRWaWV3Q29udGV4dCA9PT0gVmlld0NvbnRleHQuRGV2aWNlKSB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdEZXZpY2UgZGFzaGJvYXJkcyBjYW4gb25seSBiZSBjb3BpZWQgaW50byBhIGRldmljZS4nKSk7XG4gICAgICB9IGVsc2UgaWYgKGNsaXBib2FyZFZpZXdDb250ZXh0ID09PSBWaWV3Q29udGV4dC5Hcm91cCkge1xuICAgICAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoZ2V0dGV4dCgnR3JvdXAgZGFzaGJvYXJkcyBjYW4gb25seSBiZSBjb3BpZWQgaW50byBhIGdyb3VwLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbnRleHREYXNoYm9hcmRDb3B5KFxuICAgIGRhc2g6IENvbnRleHREYXNoYm9hcmQsXG4gICAgbmV3Q29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4sXG4gICAgb2xkQ29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD5cbiAgKTogQ29udGV4dERhc2hib2FyZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSByZWR1Y2UoXG4gICAgICBkYXNoLmNoaWxkcmVuLFxuICAgICAgKF9jaGlsZHJlbiwgY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3QgeyBpZCB9ID0gY2hpbGQ7XG4gICAgICAgIGNvbnN0IGNmZyA9IGNoaWxkLmNvbmZpZztcbiAgICAgICAgY29uc3QgcHJvcGVydGllc1RvQ29weSA9IHtcbiAgICAgICAgICBkZXZpY2U6IGRldmljZSA9PiB0aGlzLnJlcGxhY2VDb250ZXh0SW5PYmooZGV2aWNlLCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KSxcbiAgICAgICAgICBkYXRhcG9pbnRzOiBkYXRhUG9pbnRzID0+XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VDb250ZXh0SW5EYXRhUG9pbnRzKGRhdGFQb2ludHMsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpLFxuICAgICAgICAgIGRhdGFQb2ludHM6IGRhdGFQb2ludHMgPT5cbiAgICAgICAgICAgIHRoaXMucmVwbGFjZUNvbnRleHRJbkRhdGFQb2ludHMoZGF0YVBvaW50cywgbmV3Q29udGV4dCwgb2xkQ29udGV4dCksXG4gICAgICAgICAgZGF0YXBvaW50c0dhdWdlOiBkYXRhUG9pbnRzID0+XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VDb250ZXh0SW5EYXRhUG9pbnRzKGRhdGFQb2ludHMsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpLFxuICAgICAgICAgIGRhdGFwb2ludHNMYWJlbHM6IGRhdGFQb2ludHMgPT5cbiAgICAgICAgICAgIHRoaXMucmVwbGFjZUNvbnRleHRJbkRhdGFQb2ludHMoZGF0YVBvaW50cywgbmV3Q29udGV4dCwgb2xkQ29udGV4dClcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoY2ZnKSB7XG4gICAgICAgICAgdGhpcy5jb3B5UHJvcGVydGllcyhjZmcsIHByb3BlcnRpZXNUb0NvcHkpO1xuICAgICAgICAgIGlmIChjZmcub3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5jb3B5UHJvcGVydGllcyhjZmcub3B0aW9ucywgcHJvcGVydGllc1RvQ29weSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX2NoaWxkcmVuW2lkXSA9IGNsb25lRGVlcChjaGlsZCk7XG4gICAgICAgIHJldHVybiBfY2hpbGRyZW47XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuXG4gICAgZGFzaC5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIHJldHVybiBkYXNoO1xuICB9XG5cbiAgcHJpdmF0ZSBjb3B5UHJvcGVydGllcyhvYmosIHByb3BlcnRpZXNUb0NvcHkpIHtcbiAgICBmb3JFYWNoKHByb3BlcnRpZXNUb0NvcHksIChjb3B5Rm4sIHByb3BlcnR5KSA9PiB7XG4gICAgICBpZiAob2JqW3Byb3BlcnR5XSkge1xuICAgICAgICBvYmpbcHJvcGVydHldID0gY29weUZuKG9ialtwcm9wZXJ0eV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQ29udGV4dEluRGF0YVBvaW50cyhcbiAgICBkYXRhUG9pbnRzLFxuICAgIG5ld0NvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+LFxuICAgIG9sZENvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+XG4gICkge1xuICAgIGRhdGFQb2ludHMuZm9yRWFjaChkcCA9PiB7XG4gICAgICBkcC5fX3RhcmdldCA9IHRoaXMucmVwbGFjZUNvbnRleHRJbk9iaihkcC5fX3RhcmdldCwgbmV3Q29udGV4dCwgb2xkQ29udGV4dCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFQb2ludHM7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VDb250ZXh0SW5PYmooXG4gICAgb2JqOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PixcbiAgICBuZXdDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PixcbiAgICBvbGRDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PlxuICApIHtcbiAgICBpZiAob2JqICYmIG9iai5pZCA9PT0gb2xkQ29udGV4dC5pZCkge1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHBpY2sobmV3Q29udGV4dCwgWydpZCcsICduYW1lJ10pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFicyQobW86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0LCBkYXNoYm9hcmRUeXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZVtdKSB7XG4gICAgY29uc3QgZGFzaGJvYXJkcyA9IHRoaXMuZ2V0Q29udGV4dERhc2hib2FyZHMobW8sIGRhc2hib2FyZFR5cGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29udGV4dERhc2hib2FyZHMkKGRhc2hib2FyZHMpLnBpcGUoXG4gICAgICBtZXJnZU1hcChkYXNoYm9hcmQgPT4gdGhpcy52ZXJpZnlEYXNoYm9hcmRBdmFpbGFiaWxpdHkkKGRhc2hib2FyZCkpLFxuICAgICAgbWVyZ2VNYXAoKFtkYXNoYm9hcmRdKSA9PiB0aGlzLnJlbW92ZURhc2hib2FyZE1vUHJvcGVydHkoZGFzaGJvYXJkKSksXG4gICAgICB0YXAoZGFzaGJvYXJkID0+IHRoaXMuY2FjaGVEYXNoYm9hcmQoZGFzaGJvYXJkKSksXG4gICAgICBtYXAoZGFzaGJvYXJkID0+IHRoaXMuY3JlYXRlRGFzaGJvYXJkVGFiKGRhc2hib2FyZCkpLFxuICAgICAgdG9BcnJheSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5RGFzaGJvYXJkQXZhaWxhYmlsaXR5JChkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgZ2xvYmFsUm9sZXNJZHMgPSBkYXNoYm9hcmQ/LmM4eV9EYXNoYm9hcmQ/Lmdsb2JhbFJvbGVzSWRzO1xuICAgIGNvbnN0IGNhbkVkaXQgPSBmcm9tKFxuICAgICAgdGhpcy5wZXJtaXNzaW9ucy5jYW5FZGl0KHRoaXMuSU5WRU5UT1JZX1JPTEVTLCBkYXNoYm9hcmQsIHsgc2tpcFJlcXVlc3RDaGVjazogdHJ1ZSB9KVxuICAgICk7XG4gICAgY29uc3QgaGFzQW55R2xvYmFsUm9sZSA9XG4gICAgICAhZ2xvYmFsUm9sZXNJZHMgfHwgZ2xvYmFsUm9sZXNJZHMgPT09IEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURURcbiAgICAgICAgPyBvZih0cnVlKVxuICAgICAgICA6IG9mKHRoaXMucGVybWlzc2lvbnMuaGFzQW55R2xvYmFsUm9sZShnbG9iYWxSb2xlc0lkcykpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW29mKGRhc2hib2FyZCksIGNhbkVkaXQsIGhhc0FueUdsb2JhbFJvbGVdKS5waXBlKFxuICAgICAgZmlsdGVyKChbLCBjYW5FZGl0LCBoYXNBbnlHbG9iYWxSb2xlXSkgPT4gY2FuRWRpdCB8fCBoYXNBbnlHbG9iYWxSb2xlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHREYXNoYm9hcmRzJChyZXF1ZXN0czogQXJyYXk8UHJvbWlzZTxJUmVzdWx0TGlzdDxJTWFuYWdlZE9iamVjdD4+Pikge1xuICAgIHJldHVybiBmcm9tKHJlcXVlc3RzKS5waXBlKFxuICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgIG1lcmdlTWFwKHJlc3BvbnNlID0+XG4gICAgICAgIHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKHJlc3BvbnNlLmRhdGEgYXMgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3RbXSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFucyBhbHJlYWR5IGNvcnJ1cHRlZCBkYXNoYm9hcmRzIGZyb20gZGFzaGJvYXJkTW8gcHJvcGVydHkuXG4gICAqIEFkZGVkIHRvIGZpeCBkYXNoYm9hcmRzIG9uIHRoZSBjbG91ZCBpbnN0YW5jZSAoZXUtbGF0ZXN0KS5cbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBnb2luZyB0byBiZSByZW1vdmVkIGFmdGVyIDEwMDcuNy4wLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZW1vdmVEYXNoYm9hcmRNb1Byb3BlcnR5KFxuICAgIGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3RcbiAgKTogUHJvbWlzZTxDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4ge1xuICAgIGNvbnN0IGRhc2hib2FyZENvcHkgPSBjbG9uZURlZXAoZGFzaGJvYXJkKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGdldChkYXNoYm9hcmRDb3B5LCAnYzh5X0Rhc2hib2FyZC5jaGlsZHJlbicpO1xuICAgIGxldCB1cGRhdGVEYXNoYm9hcmQgPSBmYWxzZTtcblxuICAgIGZvckVhY2goY2hpbGRyZW4sIGNoaWxkID0+IHtcbiAgICAgIGlmIChnZXQoY2hpbGQsICdjb21wb25lbnRUcmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dCcpKSB7XG4gICAgICAgIGRlbGV0ZSBjaGlsZC5jb21wb25lbnRUcmFuc2Zvcm1Db25maWdXaXRoQ29udGV4dDtcbiAgICAgICAgdXBkYXRlRGFzaGJvYXJkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChnZXQoY2hpbGQsICdjb25maWcuZGFzaGJvYXJkTW8nKSkge1xuICAgICAgICBkZWxldGUgY2hpbGQuY29uZmlnLmRhc2hib2FyZE1vO1xuICAgICAgICB1cGRhdGVEYXNoYm9hcmQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHVwZGF0ZURhc2hib2FyZCkge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGUoZGFzaGJvYXJkQ29weSk7XG4gICAgfVxuICAgIHJldHVybiBkYXNoYm9hcmRDb3B5O1xuICB9XG5cbiAgcHJpdmF0ZSBjYWNoZURhc2hib2FyZChkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdGhpcy5jYWNoZS5zZXQoZGFzaGJvYXJkLmlkLCBkYXNoYm9hcmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEYXNoYm9hcmRUYWIoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IHsgYzh5X0Rhc2hib2FyZDogX2Rhc2hib2FyZCwgaWQgfSA9IGRhc2hib2FyZDtcbiAgICByZXR1cm4ge1xuICAgICAgaWNvbjogX2Rhc2hib2FyZC5pY29uLFxuICAgICAgcGF0aDogYCR7dGhpcy5EQVNIQk9BUkRfUk9VVEVfUEFUSH0vJHtpZH1gLFxuICAgICAgbGFiZWw6IF9kYXNoYm9hcmQubmFtZSxcbiAgICAgIHByaW9yaXR5OiBfZGFzaGJvYXJkLnByaW9yaXR5LFxuICAgICAgaGlkZTogdGhpcy5pc1JlcG9ydChkYXNoYm9hcmQpXG4gICAgfSBhcyBUYWI7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuKGRhc2hib2FyZCkge1xuICAgIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkYXNoYm9hcmQsIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSAnJCRoYXNoS2V5JyB8fCBrZXkgPT09ICdrbGFzc2VzJykge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblN0cmluZyk7XG4gIH1cblxuICBwcml2YXRlIGdldE5hbWVkRGFzaGJvYXJkKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgIGZyYWdtZW50VHlwZTogYCR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkfSR7dGhpcy5JTkRFWF9TUExJVH0ke25hbWV9YCxcbiAgICAgIHBhZ2VTaXplOiAxXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHREYXNoYm9hcmRzKG1vOiBJTWFuYWdlZE9iamVjdCwgZGFzaGJvYXJkVHlwZTogQ29udGV4dERhc2hib2FyZFR5cGVbXSkge1xuICAgIHJldHVybiBkYXNoYm9hcmRUeXBlLm1hcCgodHlwZTogQ29udGV4dERhc2hib2FyZFR5cGUpID0+XG4gICAgICB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgICAgZnJhZ21lbnRUeXBlOiB0aGlzLmNyZWF0ZURhc2hib2FyZEZyYWdtZW50KG1vLCB0eXBlKSxcbiAgICAgICAgcGFnZVNpemU6IHRoaXMuREVGQVVMVF9QQUdFU0laRVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEYXNoYm9hcmRGcmFnbWVudChtbzogSU1hbmFnZWRPYmplY3QsIHR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlKSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGlmIChtby5jOHlfUmVwb3J0KSB7XG4gICAgICB2YWx1ZSA9IGAke3RoaXMuUkVQT1JUX1BBUlRJQUxfTkFNRX0ke21vLmlkfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdHlwZSA9PT0gQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlVHlwZSA/IG1vLnR5cGUgOiBtby5pZDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHt0eXBlfSR7dGhpcy5JTkRFWF9TUExJVH0ke3ZhbHVlfWA7XG4gIH1cblxuICBwcml2YXRlIGdldERhc2hib2FyZFR5cGVGcm9tVmlld0NvbnRleHQoZGFzaGJvYXJkQ2ZnLCBjb250ZXh0KSB7XG4gICAgbGV0IGRhc2hib2FyZFR5cGU7XG4gICAgaWYgKGNvbnRleHQuY29udGV4dCA9PT0gVmlld0NvbnRleHQuRGV2aWNlKSB7XG4gICAgICBkYXNoYm9hcmRUeXBlID0gZGFzaGJvYXJkQ2ZnLmRldmljZVR5cGVcbiAgICAgICAgPyBDb250ZXh0RGFzaGJvYXJkVHlwZS5EZXZpY2VUeXBlXG4gICAgICAgIDogQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlO1xuICAgIH1cbiAgICBpZiAoY29udGV4dC5jb250ZXh0ID09PSBWaWV3Q29udGV4dC5Hcm91cCkge1xuICAgICAgZGFzaGJvYXJkVHlwZSA9IENvbnRleHREYXNoYm9hcmRUeXBlLkdyb3VwO1xuICAgIH1cbiAgICByZXR1cm4gZGFzaGJvYXJkVHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnJhZ21lbnRLZXkoY29udGV4dERhc2hib2FyZFR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFt0aGlzLkZSQUdNRU5UX05BTUUsIGNvbnRleHREYXNoYm9hcmRUeXBlLCB2YWx1ZV0uam9pbih0aGlzLklOREVYX1NQTElUKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkU2V0R2xvYmFsKGRhc2hib2FyZDogUGFydGlhbDxDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdD4sIGNvbnRleHQ/KSB7XG4gICAgaWYgKFxuICAgICAgKCFjb250ZXh0ICYmIHRoaXMuaXNOYW1lZChkYXNoYm9hcmQpICYmICF0aGlzLmlzUmVwb3J0KGRhc2hib2FyZCkpIHx8XG4gICAgICB0aGlzLmlzRGV2aWNlVHlwZShkYXNoYm9hcmQpXG4gICAgKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=
460
+ }], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.TabsService }, { type: i2.ModalService }, { type: i3.TranslateService }, { type: i4.Router }, { type: i2.NavigatorService }, { type: i2.Permissions }, { type: i2.AlertService }, { type: i2.DynamicComponentService }, { type: i2.GroupService }]; } });
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1kYXNoYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTBCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQWUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUNMLFlBQVksRUFFWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxZQUFZLEVBQ1osWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLE1BQU0sRUFFTixXQUFXLEVBQ1gsV0FBVyxFQUVaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUNMLE1BQU0sRUFDTixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksRUFDSixLQUFLLEVBQ0wsR0FBRyxFQUNILEdBQUcsRUFDSCxPQUFPLEVBQ1AsU0FBUyxFQUNULE1BQU0sRUFDTixHQUFHLEVBQ0osTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixHQUFHLEVBQ0gsUUFBUSxFQUNSLFFBQVEsRUFDUixHQUFHLEVBQ0gsWUFBWSxFQUNaLE9BQU8sRUFDUixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFHTCxvQkFBb0IsRUFHcEIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbkIsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBS25DLE1BQU0sT0FBTyx1QkFBdUI7SUFnQmxDLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsS0FBSztRQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxZQUNVLFNBQTJCLEVBQzNCLElBQWlCLEVBQ2pCLEtBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ2QsU0FBMkIsRUFDM0IsV0FBd0IsRUFDeEIsS0FBbUIsRUFDbkIsZ0JBQXlDLEVBQ3pDLFlBQTBCO1FBVDFCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFDekMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFqQzNCLHdCQUFtQixHQUFHLFNBQVMsQ0FBQztRQUV4QixvQkFBZSxHQUFHO1lBQ2pDLFdBQVcsQ0FBQyxvQkFBb0I7WUFDaEMsV0FBVyxDQUFDLHlCQUF5QjtTQUN0QyxDQUFDO1FBQ00sVUFBSyxHQUFHLElBQUksR0FBRyxFQUF5QyxDQUFDO1FBQ2hELHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixrQkFBYSxHQUFHLGVBQWUsQ0FBQztRQUNoQyx5QkFBb0IsR0FBRyxXQUFXLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxHQUFHLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQXVCbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBOEIsRUFBRSxPQUFxQixFQUFFLElBQUksR0FBRyxFQUFFO1FBQzNFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNaLElBQUksYUFBYSxDQUFDO1FBRWxCLElBQUksT0FBTyxFQUFFO1lBQ1gsRUFBRSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBWSxDQUFDO1lBQ3RDLGFBQWEsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzdFO1FBQ0QsSUFBSSxJQUFJLEVBQUU7WUFDUixhQUFhLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1NBQzVDO1FBRUQsTUFBTSxTQUFTLEdBQTJDLEVBQUUsQ0FBQztRQUM3RCxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFckYsTUFBTSxLQUFLLEdBQ1QsYUFBYSxLQUFLLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVoRyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUM1QyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDdkM7UUFDRCxTQUFTLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQzlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FDWixhQUFhLEtBQUssb0JBQW9CLENBQUMsS0FBSztZQUM1QyxhQUFhLEtBQUssb0JBQW9CLENBQUMsTUFBTTtZQUM3QyxDQUFDLE9BQU8sSUFBSSxhQUFhLEtBQUssb0JBQW9CLENBQUMsS0FBSyxDQUFDO1lBQ3ZELENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMxRCxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQXFDLENBQUM7SUFDL0MsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBMEM7UUFDckQsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsSUFBSSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFxQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQXdDO1FBQ25ELFNBQVMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDOUMsU0FBUyxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUF3QyxFQUFFLGdCQUFnQixHQUFHLElBQUk7UUFDNUUsSUFBSTtZQUNGLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ3BCLElBQUksR0FBRyxHQUFXLE9BQU8sQ0FDdkIsc0ZBQXNGLENBQ3ZGLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNoQyxHQUFHLEdBQUcsT0FBTyxDQUNYO21DQUN1QixDQUN4QixDQUFDO2lCQUNIO2dCQUNELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ3RCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtvQkFDakMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSTtvQkFDM0MsVUFBVSxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsZUFBZTtpQkFDcEQsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxNQUFNLEVBQ2I7b0JBQ0UsRUFBRSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0JBQ3JCLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO2lCQUMxQixDQUNGLENBQUM7YUFDSDtZQUNELE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUN6RCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDbEUsQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLGlCQUFpQjtTQUNsQjtJQUNILENBQUM7SUFFRCxrQkFBa0IsQ0FDaEIsS0FBNkIsRUFDN0IsS0FBNkI7UUFFN0IsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxXQUFXLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQy9FLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDZCxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUNmLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxJQUFZLEVBQUUsY0FBd0IsRUFBRSxPQUFxQjtRQUNyRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEUsWUFBWSxFQUFFLEVBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUNkLElBQUksQ0FDRixJQUFJLENBQUMsTUFBTSxDQUNUO1lBQ0UsUUFBUTtZQUNSLGFBQWEsRUFBRSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUU7U0FDOUUsRUFDRCxPQUFPLEVBQ1AsSUFBSSxDQUNMLENBQ0YsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUEwQztRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM5QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQ3pELEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNwRSxDQUFDO1lBRUYsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLElBQUksV0FBVyxFQUFFO2dCQUNmLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQ3BELFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixXQUFXLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDaEMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDMUI7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEVBQWtCO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixNQUFNLFNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBQztnQkFDbEMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJO2dCQUNkLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hCLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSTtnQkFDYixRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVE7YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQTBDO1FBQ2xFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDM0MsVUFBVSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1NBQ0o7YUFBTSxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdELGlFQUFpRTtZQUNqRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNyRSxVQUFVLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUMzQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDdEUsVUFBVSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7YUFDM0MsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBRTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUM3QjtZQUNFLFdBQVcsQ0FBQyxvQkFBb0I7WUFDaEMsV0FBVyxDQUFDLHFCQUFxQjtZQUNqQyxXQUFXLENBQUMseUJBQXlCO1lBQ3JDLFdBQVcsQ0FBQywwQkFBMEI7U0FDdkMsRUFDRCxFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBaUQ7UUFDdkQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQ2xDLElBQUksTUFBTSxDQUNSLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQzVGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQWlEO1FBQ3hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUNsQyxJQUFJLE1BQU0sQ0FDUixJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FDdkgsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsU0FBaUQ7UUFDNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQ2xDLElBQUksTUFBTSxDQUNSLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQ2pHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsU0FBaUQ7UUFDakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQ2xDLElBQUksTUFBTSxDQUNSLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQzdGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUQ7UUFDaEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQ2xDLElBQUksTUFBTSxDQUNSLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQzVGLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsMEJBQTBCLENBQUMsU0FBbUI7UUFDNUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzFCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDdEUsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZO1FBQzNDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQzVCLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FDdEUsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDaEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFpQjtRQUMxQixPQUFPLEtBQUssQ0FDVixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsRUFDRixJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsaUJBQWlCLEVBQUUsYUFBcUMsRUFBRSxFQUFtQjtRQUN6RixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWhELE1BQU0sVUFBVSxHQUFHLEVBQUU7WUFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFFaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDOUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNoRCxNQUFNLENBQ0osU0FBUyxDQUFDLEVBQUUsQ0FDVixTQUFTLENBQUMsRUFBRSxLQUFLLGlCQUFpQjtZQUNsQyxHQUFHLENBQ0QsU0FBUyxFQUNULEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixFQUFFLENBQy9HLENBQ0osQ0FDRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFVBQTRCO1FBQy9DLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJO2dCQUNGLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNsRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQzVCLFVBQVUsQ0FBQyxXQUFXLEVBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FDdkMsQ0FBQztvQkFDRixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUM5RSxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNyQzthQUNGO1lBQUMsTUFBTTtnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxDQUFDO2FBQzFFO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQWtCO1FBQ2hDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDbEMsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUNwRDthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEMsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNuRDthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEMsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNuRDthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFXTywyQkFBMkIsQ0FDakMsVUFBbUI7UUFFbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsaUVBQWlFO1FBQ2pFLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDcEMsT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFFRCxVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQ3RDLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQ0QsNkZBQTZGO1FBQzdGLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEUsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUNqQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFO2dCQUNiLE1BQU0sQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDM0I7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxLQUFLLENBQUMsc0JBQXNCLENBQUMsU0FBd0M7UUFDM0UsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDOUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDOUMsQ0FBQztJQUVPLGlCQUFpQixDQUN2QixhQUFxQyxFQUNyQyxjQUEyQjtRQUUzQixNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBRTNELElBQUksY0FBYyxLQUFLLG9CQUFvQixFQUFFO1lBQzNDLElBQUksb0JBQW9CLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBRTtnQkFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHFEQUFxRCxDQUFDLENBQUMsQ0FBQzthQUNwRjtpQkFBTSxJQUFJLG9CQUFvQixLQUFLLFdBQVcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxtREFBbUQsQ0FBQyxDQUFDLENBQUM7YUFDbEY7WUFDRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sMEJBQTBCLENBQ2hDLElBQXNCLEVBQ3RCLFVBQW1DLEVBQ25DLFVBQW1DO1FBRW5DLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FDckIsSUFBSSxDQUFDLFFBQVEsRUFDYixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNuQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDekIsTUFBTSxnQkFBZ0IsR0FBRztnQkFDdkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUMxRSxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FDdkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUNyRSxVQUFVLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FDdkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUNyRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FDNUIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDO2dCQUNyRSxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUM3QixJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUM7YUFDdEUsQ0FBQztZQUVGLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQzNDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRTtvQkFDZixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztpQkFDcEQ7YUFDRjtZQUVELFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxFQUNELEVBQUUsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0I7UUFDMUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzdDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUNqQixHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sMEJBQTBCLENBQ2hDLFVBQVUsRUFDVixVQUFtQyxFQUNuQyxVQUFtQztRQUVuQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLG1CQUFtQixDQUN6QixHQUE0QixFQUM1QixVQUFtQyxFQUNuQyxVQUFtQztRQUVuQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxRQUFRLENBQUMsRUFBaUMsRUFBRSxhQUFxQztRQUN2RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWhFLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDaEQsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ25FLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNwRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ2hELEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNwRCxPQUFPLEVBQUUsQ0FDVixDQUFDO0lBQ0osQ0FBQztJQUVPLDRCQUE0QixDQUFDLFNBQXdDO1FBQzNFLE1BQU0sY0FBYyxHQUFHLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUN0RixDQUFDO1FBQ0YsTUFBTSxnQkFBZ0IsR0FDcEIsQ0FBQyxjQUFjLElBQUksY0FBYyxLQUFLLHlCQUF5QjtZQUM3RCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNWLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUVPLHFCQUFxQixDQUFDLFFBQXFEO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDeEIsUUFBUSxFQUFFLEVBQ1YsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ2xCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsSUFBdUMsQ0FBQyxDQUNuRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyx5QkFBeUIsQ0FDckMsU0FBd0M7UUFFeEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxhQUFhLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUM5RCxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFFNUIsT0FBTyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUscUNBQXFDLENBQUMsRUFBRTtnQkFDckQsT0FBTyxLQUFLLENBQUMsbUNBQW1DLENBQUM7Z0JBQ2pELGVBQWUsR0FBRyxJQUFJLENBQUM7YUFDeEI7WUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtnQkFDcEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDaEMsZUFBZSxHQUFHLElBQUksQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxlQUFlLEVBQUU7WUFDbkIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUF3QztRQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxTQUF3QztRQUNqRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUM7UUFDcEQsT0FBTztZQUNMLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLElBQUksRUFBRSxFQUFFO1lBQzFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSTtZQUN0QixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1NBQ3hCLENBQUM7SUFDWCxDQUFDO0lBRU8sS0FBSyxDQUFDLFNBQVM7UUFDckIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDMUQsSUFBSSxHQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7Z0JBQzVDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBWTtRQUNwQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3pCLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUU7WUFDL0csUUFBUSxFQUFFLENBQUM7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsRUFBa0IsRUFBRSxhQUFxQztRQUNwRixPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUEwQixFQUFFLEVBQUUsQ0FDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDbEIsWUFBWSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO1lBQ3BELFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQ2hDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLHVCQUF1QixDQUFDLEVBQWtCLEVBQUUsSUFBMEI7UUFDNUUsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUU7WUFDakIsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUMvQzthQUFNO1lBQ0wsS0FBSyxHQUFHLElBQUksS0FBSyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDcEU7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQ3RGLENBQUM7SUFFTywrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsT0FBTztRQUMzRCxJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUMxQyxhQUFhLEdBQUcsWUFBWSxDQUFDLFVBQVU7Z0JBQ3JDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVO2dCQUNqQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDekMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQztTQUM1QztRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxvQkFBMEMsRUFBRSxLQUFhO1FBQ2pGLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFpRCxFQUFFLE9BQVE7UUFDakYsSUFDRSxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQzVCO1lBQ0EsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7b0hBam5CVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBDb250ZXh0RGF0YSxcbiAgRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gIGdldEFjdGl2YXRlZFJvdXRlLFxuICBnZXR0ZXh0LFxuICBHcm91cFNlcnZpY2UsXG4gIE1vZGFsU2VydmljZSxcbiAgTmF2aWdhdG9yTm9kZSxcbiAgTmF2aWdhdG9yU2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIFN0YXR1cyxcbiAgVGFiLFxuICBUYWJzU2VydmljZSxcbiAgVmlld0NvbnRleHQsXG4gIFdpZGdldFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIGFzc2lnbixcbiAgcGljayxcbiAgc29tZSxcbiAga2V5cyxcbiAga2V5QnksXG4gIGhhcyxcbiAgZ2V0LFxuICBmb3JFYWNoLFxuICBjbG9uZURlZXAsXG4gIHJlZHVjZSxcbiAgc2V0XG59IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBtYXAsXG4gIG1lcmdlQWxsLFxuICBtZXJnZU1hcCxcbiAgdGFwLFxuICB0aHJvd0lmRW1wdHksXG4gIHRvQXJyYXlcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQ29udGV4dERhc2hib2FyZCxcbiAgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsXG4gIENvbnRleHREYXNoYm9hcmRUeXBlLFxuICBEYXNoYm9hcmRDb250ZXh0LFxuICBEYXNoYm9hcmRDb3B5Q2xpcGJvYXJkLFxuICBTVFlMSU5HX0NMQVNTX1BSRUZJWEVTLFxuICBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVELFxuICBQUk9EVUNUX0VYUEVSSUVOQ0Vcbn0gZnJvbSAnLi9jb250ZXh0LWRhc2hib2FyZC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHREYXNoYm9hcmRTZXJ2aWNlIHtcbiAgZm9ybURpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcmVhZG9ubHkgUkVQT1JUX1BBUlRJQUxfTkFNRSA9ICdyZXBvcnRfJztcbiAgY29weUNsaXBib2FyZDogRGFzaGJvYXJkQ29weUNsaXBib2FyZDtcbiAgcHJpdmF0ZSByZWFkb25seSBJTlZFTlRPUllfUk9MRVMgPSBbXG4gICAgUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sXG4gICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTlxuICBdO1xuICBwcml2YXRlIGNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfUEFHRVNJWkUgPSAxMDAwO1xuICBwcml2YXRlIHJlYWRvbmx5IEZSQUdNRU5UX05BTUUgPSAnYzh5X0Rhc2hib2FyZCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgREFTSEJPQVJEX1JPVVRFX1BBVEggPSAnZGFzaGJvYXJkJztcbiAgcHJpdmF0ZSByZWFkb25seSBJTkRFWF9TUExJVCA9ICchJztcbiAgcHJpdmF0ZSBfZm9ybURpc2FibGVkID0gdHJ1ZTtcbiAgcHJpdmF0ZSBmb3JtRGlzYWJsZWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBnZXQgZm9ybURpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRGlzYWJsZWQ7XG4gIH1cblxuICBzZXQgZm9ybURpc2FibGVkKHZhbHVlKSB7XG4gICAgdGhpcy5fZm9ybURpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5mb3JtRGlzYWJsZWRTdWJqZWN0Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJzOiBUYWJzU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3I6IE5hdmlnYXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uczogUGVybWlzc2lvbnMsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudDogRHluYW1pY0NvbXBvbmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3VwU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvcm1EaXNhYmxlZCQgPSB0aGlzLmZvcm1EaXNhYmxlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoZGFzaGJvYXJkQ2ZnOiBDb250ZXh0RGFzaGJvYXJkLCBjb250ZXh0PzogQ29udGV4dERhdGEsIG5hbWUgPSAnJykge1xuICAgIGxldCBpZCA9ICcnO1xuICAgIGxldCBkYXNoYm9hcmRUeXBlO1xuXG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGlkID0gY29udGV4dC5jb250ZXh0RGF0YS5pZCBhcyBzdHJpbmc7XG4gICAgICBkYXNoYm9hcmRUeXBlID0gdGhpcy5nZXREYXNoYm9hcmRUeXBlRnJvbVZpZXdDb250ZXh0KGRhc2hib2FyZENmZywgY29udGV4dCk7XG4gICAgfVxuICAgIGlmIChuYW1lKSB7XG4gICAgICBkYXNoYm9hcmRUeXBlID0gQ29udGV4dERhc2hib2FyZFR5cGUuTmFtZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0PiA9IHt9O1xuICAgIGFzc2lnbihkYXNoYm9hcmQsIHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKHsgYzh5X0Rhc2hib2FyZDogZGFzaGJvYXJkQ2ZnIH0pKTtcblxuICAgIGNvbnN0IHZhbHVlID1cbiAgICAgIGRhc2hib2FyZFR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZVR5cGUgPyBkYXNoYm9hcmRDZmcuZGV2aWNlVHlwZVZhbHVlIDogbmFtZSB8fCBpZDtcblxuICAgIGNvbnN0IGZyYWdtZW50S2V5ID0gdGhpcy5jcmVhdGVGcmFnbWVudEtleShkYXNoYm9hcmRUeXBlLCB2YWx1ZSk7XG4gICAgZGFzaGJvYXJkW2ZyYWdtZW50S2V5XSA9IHt9O1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkU2V0R2xvYmFsKGRhc2hib2FyZCwgY29udGV4dCkpIHtcbiAgICAgIGFzc2lnbihkYXNoYm9hcmQsIHsgYzh5X0dsb2JhbDoge30gfSk7XG4gICAgfVxuICAgIGRhc2hib2FyZC5uYW1lID0gZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQubmFtZTtcbiAgICBjb25zdCB7IGRhdGEgfSA9XG4gICAgICBkYXNoYm9hcmRUeXBlID09PSBDb250ZXh0RGFzaGJvYXJkVHlwZS5Hcm91cCB8fFxuICAgICAgZGFzaGJvYXJkVHlwZSA9PT0gQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlIHx8XG4gICAgICAoY29udGV4dCAmJiBkYXNoYm9hcmRUeXBlID09PSBDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZClcbiAgICAgICAgPyBhd2FpdCB0aGlzLmludmVudG9yeS5jaGlsZEFkZGl0aW9uc0NyZWF0ZShkYXNoYm9hcmQsIGlkKVxuICAgICAgICA6IGF3YWl0IHRoaXMuaW52ZW50b3J5LmNyZWF0ZShkYXNoYm9hcmQpO1xuICAgIHJldHVybiBkYXRhIGFzIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICB9XG5cbiAgYXN5bmMgZGV0YWlsKGRhc2hib2FyZE1POiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIGxldCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbChkYXNoYm9hcmRNTyk7XG4gICAgZGF0YSA9IHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKGRhdGEgYXMgQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpO1xuICAgIHRoaXMuY2FjaGUuc2V0KGRhc2hib2FyZE1PLmlkLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgZGFzaGJvYXJkLm5hbWUgPSBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5uYW1lO1xuICAgIGRhc2hib2FyZCA9IHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKGRhc2hib2FyZCk7XG4gICAgY29uc3Qga2VlcEZyYWdtZW50cyA9IHRoaXMuY2xlYW4ocGljayhkYXNoYm9hcmQsIFt0aGlzLkZSQUdNRU5UX05BTUUsICdpZCcsICduYW1lJ10pKTtcbiAgICBrZWVwRnJhZ21lbnRzLmM4eV9HbG9iYWwgPSB0aGlzLnNob3VsZFNldEdsb2JhbChkYXNoYm9hcmQpO1xuICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplV2lkZ2V0Q29uZmlncyhrZWVwRnJhZ21lbnRzKTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5LnVwZGF0ZShrZWVwRnJhZ21lbnRzKTtcbiAgICB0aGlzLmNhY2hlLnNldChkYXNoYm9hcmQuaWQsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QsIHdpdGhDb25maXJtYXRpb24gPSB0cnVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh3aXRoQ29uZmlybWF0aW9uKSB7XG4gICAgICAgIGxldCBtc2c6IHN0cmluZyA9IGdldHRleHQoXG4gICAgICAgICAgYFlvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIHRoZSBkYXNoYm9hcmQgXCJ7eyBkYXNoYm9hcmROYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/YFxuICAgICAgICApO1xuICAgICAgICBpZiAodGhpcy5pc0RldmljZVR5cGUoZGFzaGJvYXJkKSkge1xuICAgICAgICAgIG1zZyA9IGdldHRleHQoXG4gICAgICAgICAgICBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIGRhc2hib2FyZCBcInt7IGRhc2hib2FyZE5hbWUgfX1cIiBmcm9tIGFsbCBkZXZpY2VzIG9mIHRoZSB0eXBlIFwie3sgZGV2aWNlVHlwZSB9fVwiLlxuICAgICAgICAgICBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMubW9kYWwuY29uZmlybShcbiAgICAgICAgICBnZXR0ZXh0KCdEZWxldGUgZGFzaGJvYXJkJyksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobXNnLCB7XG4gICAgICAgICAgICBkYXNoYm9hcmROYW1lOiBkYXNoYm9hcmQuYzh5X0Rhc2hib2FyZC5uYW1lLFxuICAgICAgICAgICAgZGV2aWNlVHlwZTogZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlXG4gICAgICAgICAgfSksXG4gICAgICAgICAgU3RhdHVzLkRBTkdFUixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvazogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICAgICAgICBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGVsZXRlKGRhc2hib2FyZCk7XG4gICAgICBjb25zdCB0YWJUb1JlbW92ZSA9IEFycmF5LmZyb20odGhpcy50YWJzLnN0YXRlKS5maW5kKHRhYiA9PlxuICAgICAgICB0YWIucGF0aC5lbmRzV2l0aChgJHt0aGlzLkRBU0hCT0FSRF9ST1VURV9QQVRIfS8ke2Rhc2hib2FyZC5pZH1gKVxuICAgICAgKTtcbiAgICAgIHRoaXMudGFicy5yZW1vdmUodGFiVG9SZW1vdmUpO1xuICAgICAgdGhpcy50YWJzLnJlZnJlc2goKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgLy8gaW50ZW5kZWQgZW1wdHlcbiAgICB9XG4gIH1cblxuICBhY3RpdmF0ZURhc2hib2FyZHMoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgdHlwZXM6IENvbnRleHREYXNoYm9hcmRUeXBlW11cbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVGFiW10+IHtcbiAgICBjb25zdCB7IGRhc2hib2FyZElkIH0gPSByb3V0ZS5wYXJhbXM7XG4gICAgaWYgKGRhc2hib2FyZElkKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXREYXNoYm9hcmQkKGRhc2hib2FyZElkLCB0eXBlcywgcm91dGUucGFyZW50LmRhdGEuY29udGV4dERhdGEpLnBpcGUoXG4gICAgICAgIHRhcChkYXNoYm9hcmQgPT4ge1xuICAgICAgICAgIHJvdXRlLmRhdGEgPSB7IGRhc2hib2FyZCB9O1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRUYWJzJChyb3V0ZS5kYXRhLmNvbnRleHREYXRhLCB0eXBlcyk7XG4gIH1cblxuICBnZXROYW1lZERhc2hib2FyZE9yQ3JlYXRlKG5hbWU6IHN0cmluZywgZGVmYXVsdFdpZGdldHM6IFdpZGdldFtdLCBjb250ZXh0PzogQ29udGV4dERhdGEpIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMubWFwV2lkZ2V0cyhkZWZhdWx0V2lkZ2V0cyk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGFzaGJvYXJkJChuYW1lLCBbQ29udGV4dERhc2hib2FyZFR5cGUuTmFtZWRdKS5waXBlKFxuICAgICAgdGhyb3dJZkVtcHR5KCksXG4gICAgICBjYXRjaEVycm9yKCgpID0+XG4gICAgICAgIGZyb20oXG4gICAgICAgICAgdGhpcy5jcmVhdGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICB3aWRnZXRDbGFzc2VzOiB7ICdkYXNoYm9hcmQtdGhlbWUtbGlnaHQnOiB0cnVlLCAncGFuZWwtdGl0bGUtcmVndWxhcic6IHRydWUgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2hUYWJzKGRhc2hib2FyZE1POiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghdGhpcy5pc05hbWVkKGRhc2hib2FyZE1PKSkge1xuICAgICAgY29uc3QgdGFiVG9VcGRhdGUgPSBBcnJheS5mcm9tKHRoaXMudGFicy5zdGF0ZSkuZmluZCh0YWIgPT5cbiAgICAgICAgdGFiLnBhdGguZW5kc1dpdGgoYCR7dGhpcy5EQVNIQk9BUkRfUk9VVEVfUEFUSH0vJHtkYXNoYm9hcmRNTy5pZH1gKVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZGV0YWlsKGRhc2hib2FyZE1PKTtcbiAgICAgIGlmICh0YWJUb1VwZGF0ZSkge1xuICAgICAgICBjb25zdCB7IGljb24sIHByaW9yaXR5LCBuYW1lIH0gPSBkYXRhLmM4eV9EYXNoYm9hcmQ7XG4gICAgICAgIHRhYlRvVXBkYXRlLmljb24gPSBpY29uO1xuICAgICAgICB0YWJUb1VwZGF0ZS5wcmlvcml0eSA9IHByaW9yaXR5O1xuICAgICAgICB0YWJUb1VwZGF0ZS5sYWJlbCA9IG5hbWU7XG4gICAgICB9XG4gICAgICB0aGlzLnRhYnMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU5hdmlnYXRvckl0ZW0obW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdGhpcy5uYXZpZ2F0b3Iuc3RhdGUuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIGlmIChub2RlLnBhdGggPT09IGByZXBvcnRzLyR7bW8uaWR9YCkge1xuICAgICAgICB0aGlzLm5hdmlnYXRvci5yZW1vdmUobm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKG1vLmM4eV9Jc05hdmlnYXRvck5vZGUpIHtcbiAgICAgIGNvbnN0IG5vZGVUb0FkZCA9IG5ldyBOYXZpZ2F0b3JOb2RlKHtcbiAgICAgICAgbGFiZWw6IG1vLm5hbWUsXG4gICAgICAgIHBhdGg6IGByZXBvcnRzLyR7bW8uaWR9YCxcbiAgICAgICAgaWNvbjogbW8uaWNvbixcbiAgICAgICAgcHJpb3JpdHk6IG1vLnByaW9yaXR5XG4gICAgICB9KTtcbiAgICAgIHRoaXMubmF2aWdhdG9yLmFkZChub2RlVG9BZGQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlVG9EYXNoYm9hcmQoZGFzaGJvYXJkTU86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0KSB7XG4gICAgaWYgKC9kYXNoYm9hcmQvLnRlc3QodGhpcy5yb3V0ZXIudXJsKSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycuLicsIGRhc2hib2FyZE1PLmlkXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiBnZXRBY3RpdmF0ZWRSb3V0ZSh0aGlzLnJvdXRlcilcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoL15cXC8oZGV2aWNlfGdyb3VwKVxcL1swLTldKyQvLnRlc3QodGhpcy5yb3V0ZXIudXJsKSkge1xuICAgICAgLy8gaW4gY2FzZSB0aGUgYWRkIGRhc2hib2FyZCBidXR0b24gaXMgdGhlIG9ubHkgdGFiIG9uIHRoYXQgcm91dGVcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLicsIHRoaXMuREFTSEJPQVJEX1JPVVRFX1BBVEgsIGRhc2hib2FyZE1PLmlkXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiBnZXRBY3RpdmF0ZWRSb3V0ZSh0aGlzLnJvdXRlcilcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uJywgdGhpcy5EQVNIQk9BUkRfUk9VVEVfUEFUSCwgZGFzaGJvYXJkTU8uaWRdLCB7XG4gICAgICAgIHJlbGF0aXZlVG86IGdldEFjdGl2YXRlZFJvdXRlKHRoaXMucm91dGVyKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2FuRWRpdERhc2hib2FyZChtbykge1xuICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zLmNhbkVkaXQoXG4gICAgICBbXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLFxuICAgICAgICBQZXJtaXNzaW9ucy5ST0xFX0lOVkVOVE9SWV9DUkVBVEUsXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4sXG4gICAgICAgIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFXG4gICAgICBdLFxuICAgICAgbW9cbiAgICApO1xuICB9XG5cbiAgaXNOYW1lZChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KSB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLk5hbWVkfSR7dGhpcy5JTkRFWF9TUExJVH1gXG4gICAgICApLnRlc3QocHJvcClcbiAgICApO1xuICB9XG5cbiAgaXNSZXBvcnQoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0Pikge1xuICAgIHJldHVybiBzb21lKGtleXMoZGFzaGJvYXJkKSwgcHJvcCA9PlxuICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgYF4ke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZH0ke3RoaXMuSU5ERVhfU1BMSVR9JHt0aGlzLlJFUE9SVF9QQVJUSUFMX05BTUV9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGlzRGV2aWNlVHlwZShkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KSB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZVR5cGV9JHt0aGlzLklOREVYX1NQTElUfWBcbiAgICAgICkudGVzdChwcm9wKVxuICAgICk7XG4gIH1cblxuICBpc0RldmljZURhc2hib2FyZChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHNvbWUoa2V5cyhkYXNoYm9hcmQpLCBwcm9wID0+XG4gICAgICBuZXcgUmVnRXhwKFxuICAgICAgICBgXiR7dGhpcy5GUkFHTUVOVF9OQU1FfSR7dGhpcy5JTkRFWF9TUExJVH0ke0NvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZX0ke3RoaXMuSU5ERVhfU1BMSVR9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGlzR3JvdXBEYXNoYm9hcmQoZGFzaGJvYXJkOiBQYXJ0aWFsPENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzb21lKGtleXMoZGFzaGJvYXJkKSwgcHJvcCA9PlxuICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgYF4ke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5Hcm91cH0ke3RoaXMuSU5ERVhfU1BMSVR9YFxuICAgICAgKS50ZXN0KHByb3ApXG4gICAgKTtcbiAgfVxuXG4gIGdldEZpbHRlcmVkRGFzaGJvYXJkU3R5bGVzKHN0eWxlTGlzdDogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gc3R5bGVMaXN0LmZpbHRlcihjID0+XG4gICAgICBTVFlMSU5HX0NMQVNTX1BSRUZJWEVTLnNvbWUoY2xhc3NQcmVmaXggPT4gYy5zdGFydHNXaXRoKGNsYXNzUHJlZml4KSlcbiAgICApO1xuICB9XG5cbiAgZ2V0U3R5bGluZyhzdHlsZUxpc3QsIHN0eWxlTmFtZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgY29uc3Qgc3R5bGluZyA9IHN0eWxlTGlzdC5maW5kKFxuICAgICAgc3R5bGUgPT4gc3R5bGUgJiYgbmV3IFJlZ0V4cChgLSR7c3R5bGVOYW1lfSRgLCAnaScpLnRlc3Qoc3R5bGUuY2xhc3MpXG4gICAgKTtcbiAgICByZXR1cm4gc3R5bGluZyA/IHN0eWxpbmcuY2xhc3MgOiBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICBtYXBXaWRnZXRzKHdpZGdldHM6IFdpZGdldFtdKSB7XG4gICAgcmV0dXJuIGtleUJ5KFxuICAgICAgd2lkZ2V0cy5tYXAod2lkZ2V0ID0+IHtcbiAgICAgICAgd2lkZ2V0LmlkID0gU3RyaW5nKE1hdGgucmFuZG9tKCkpLnN1YnN0cigyKTtcbiAgICAgICAgcmV0dXJuIHdpZGdldDtcbiAgICAgIH0pLFxuICAgICAgJ2lkJ1xuICAgICk7XG4gIH1cblxuICBnZXREYXNoYm9hcmQkKGRhc2hib2FyZElkT3JOYW1lLCBkYXNoYm9hcmRUeXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZVtdLCBtbz86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLmNhY2hlLmdldChkYXNoYm9hcmRJZE9yTmFtZSk7XG5cbiAgICBjb25zdCBkYXNoYm9hcmRzID0gbW9cbiAgICAgID8gdGhpcy5nZXRDb250ZXh0RGFzaGJvYXJkcyhtbywgZGFzaGJvYXJkVHlwZSlcbiAgICAgIDogW3RoaXMuZ2V0TmFtZWREYXNoYm9hcmQoZGFzaGJvYXJkSWRPck5hbWUpXTtcblxuICAgIGNvbnN0IGNhY2hlUmVmcmVzaCA9IHRoaXMuZ2V0Q29udGV4dERhc2hib2FyZHMkKGRhc2hib2FyZHMpLnBpcGUoXG4gICAgICB0YXAoZGFzaGJvYXJkID0+IHRoaXMuY2FjaGVEYXNoYm9hcmQoZGFzaGJvYXJkKSksXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIGRhc2hib2FyZCA9PlxuICAgICAgICAgIGRhc2hib2FyZC5pZCA9PT0gZGFzaGJvYXJkSWRPck5hbWUgfHxcbiAgICAgICAgICBoYXMoXG4gICAgICAgICAgICBkYXNoYm9hcmQsXG4gICAgICAgICAgICBgJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7Q29udGV4dERhc2hib2FyZFR5cGUuTmFtZWR9JHt0aGlzLklOREVYX1NQTElUfSR7ZGFzaGJvYXJkSWRPck5hbWV9YFxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBjYWNoZSA/IG9mKGNhY2hlKSA6IGNhY2hlUmVmcmVzaDtcbiAgfVxuXG4gIGFzeW5jIHBhc3RlRGFzaGJvYXJkKG5ld0NvbnRleHQ6IERhc2hib2FyZENvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5jb3B5Q2xpcGJvYXJkKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAodGhpcy5jYW5QYXN0ZURhc2hib2FyZCh0aGlzLmNvcHlDbGlwYm9hcmQsIG5ld0NvbnRleHQuY29udGV4dCkpIHtcbiAgICAgICAgICBjb25zdCBkYXNoYm9hcmRUb1Bhc3RlID0gdGhpcy5jcmVhdGVDb250ZXh0RGFzaGJvYXJkQ29weShcbiAgICAgICAgICAgIHRoaXMuY29weUNsaXBib2FyZC5kYXNoYm9hcmQsXG4gICAgICAgICAgICBuZXdDb250ZXh0LmNvbnRleHREYXRhLFxuICAgICAgICAgICAgdGhpcy5jb3B5Q2xpcGJvYXJkLmNvbnRleHQuY29udGV4dERhdGFcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGRhc2hib2FyZCA9IGF3YWl0IHRoaXMuY3JlYXRlKHRoaXMuY2xlYW4oZGFzaGJvYXJkVG9QYXN0ZSksIG5ld0NvbnRleHQpO1xuICAgICAgICAgIHRoaXMuY29weUNsaXBib2FyZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9EYXNoYm9hcmQoZGFzaGJvYXJkKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRoaXMuYWxlcnQud2FybmluZyhnZXR0ZXh0KCdJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgZm9yIHRoaXMgYWN0aW9uLicpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRDb250ZXh0Rm9yR1MobW86IElNYW5hZ2VkT2JqZWN0KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZ3JvdXBTZXJ2aWNlLmlzRGV2aWNlKG1vKSkge1xuICAgICAgcmV0dXJuIFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09OVEVYVC5ERVZJQ0U7XG4gICAgfSBlbHNlIGlmICh0aGlzLmdyb3VwU2VydmljZS5pc0Fzc2V0KG1vKSkge1xuICAgICAgcmV0dXJuIFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09OVEVYVC5BU1NFVDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ3JvdXBTZXJ2aWNlLmlzR3JvdXAobW8pKSB7XG4gICAgICByZXR1cm4gUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT05URVhULkdST1VQO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBtaWdyYXRlIGRhc2hib2FyZHMgZnJvbSBwcmV2aW91cyAxMiBjb2x1bW5zIGxheW91dCB0byAyNCBjb2x1bW5zLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnM8VCBleHRlbmRzIHsgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQgfT4oXG4gICAgZGFzaGJvYXJkczogVFtdXG4gICk6IFRbXTtcbiAgcHJpdmF0ZSBhZGp1c3REYXNoYm9hcmRGb3IyNENvbHVtbnM8VCBleHRlbmRzIHsgYzh5X0Rhc2hib2FyZD86IENvbnRleHREYXNoYm9hcmQgfT4oXG4gICAgZGFzaGJvYXJkczogVFxuICApOiBUO1xuICBwcml2YXRlIGFkanVzdERhc2hib2FyZEZvcjI0Q29sdW1uczxUIGV4dGVuZHMgeyBjOHlfRGFzaGJvYXJkPzogQ29udGV4dERhc2hib2FyZCB9PihcbiAgICBkYXNoYm9hcmRzOiBUIHwgVFtdXG4gICk6IFQgfCBUW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhc2hib2FyZHMpKSB7XG4gICAgICByZXR1cm4gZGFzaGJvYXJkcy5tYXAoZGFzaGJvYXJkID0+IHRoaXMuYWRqdXN0RGFzaGJvYXJkRm9yMjRDb2x1bW5zKGRhc2hib2FyZCkpO1xuICAgIH1cbiAgICAvLyBpZiBgY29sdW1uc2AgYXR0cmlidXRlIGV4aXN0cywgZGFzaGJvYXJkIHdhcyBhbHJlYWR5IGFkanVzdGVkLlxuICAgIGlmIChkYXNoYm9hcmRzLmM4eV9EYXNoYm9hcmQuY29sdW1ucykge1xuICAgICAgcmV0dXJuIGRhc2hib2FyZHM7XG4gICAgfVxuXG4gICAgZGFzaGJvYXJkcy5jOHlfRGFzaGJvYXJkLmNvbHVtbnMgPSAyNDtcbiAgICBpZiAoIWRhc2hib2FyZHMuYzh5X0Rhc2hib2FyZC5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIGRhc2hib2FyZHM7XG4gICAgfVxuICAgIC8vIHdlIG5lZWQgdG8gbXVsdGlwbHkgYm90aCBfd2lkdGggYW5kIF94IGF0dHJpYnV0ZXMgd2l0aCAyIHRvIG1pZ3JhdGUgZnJvbSAxMiB0byAyNCBjb2x1bW5zLlxuICAgIE9iamVjdC52YWx1ZXMoZGFzaGJvYXJkcy5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKS5mb3JFYWNoKHdpZGdldCA9PiB7XG4gICAgICBpZiAod2lkZ2V0Ll93aWR0aCkge1xuICAgICAgICB3aWRnZXQuX3dpZHRoID0gd2lkZ2V0Ll93aWR0aCAqIDI7XG4gICAgICB9XG4gICAgICBpZiAod2lkZ2V0Ll94KSB7XG4gICAgICAgIHdpZGdldC5feCA9IHdpZGdldC5feCAqIDI7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhc2hib2FyZHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlcmlhbGl6ZVdpZGdldENvbmZpZ3MoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gY2xvbmVEZWVwKGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuKTtcbiAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZ3MgPSBPYmplY3QudmFsdWVzKGNoaWxkcmVuKTtcbiAgICBjb25zdCBkZXRhaWxzID0gY29uZmlncy5tYXAoKHsgY29tcG9uZW50SWQsIGNvbmZpZyB9KSA9PiAoeyBjb21wb25lbnRJZCwgY29uZmlnIH0pKTtcbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5keW5hbWljQ29tcG9uZW50LnNlcmlhbGl6ZUNvbmZpZ3MoZGV0YWlscyk7XG4gICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQsIGluZGV4KSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXN1bHQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBzZXQoZGV0YWlsc1tpbmRleF0uY29uZmlnLCBrZXksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRhc2hib2FyZC5jOHlfRGFzaGJvYXJkLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH1cblxuICBwcml2YXRlIGNhblBhc3RlRGFzaGJvYXJkKFxuICAgIGNvcHlDbGlwYm9hcmQ6IERhc2hib2FyZENvcHlDbGlwYm9hcmQsXG4gICAgY3VycmVudENvbnRleHQ6IFZpZXdDb250ZXh0XG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsaXBib2FyZFZpZXdDb250ZXh0ID0gY29weUNsaXBib2FyZC5jb250ZXh0LmNvbnRleHQ7XG5cbiAgICBpZiAoY3VycmVudENvbnRleHQgIT09IGNsaXBib2FyZFZpZXdDb250ZXh0KSB7XG4gICAgICBpZiAoY2xpcGJvYXJkVmlld0NvbnRleHQgPT09IFZpZXdDb250ZXh0LkRldmljZSkge1xuICAgICAgICB0aGlzLmFsZXJ0Lndhcm5pbmcoZ2V0dGV4dCgnRGV2aWNlIGRhc2hib2FyZHMgY2FuIG9ubHkgYmUgY29waWVkIGludG8gYSBkZXZpY2UuJykpO1xuICAgICAgfSBlbHNlIGlmIChjbGlwYm9hcmRWaWV3Q29udGV4dCA9PT0gVmlld0NvbnRleHQuR3JvdXApIHtcbiAgICAgICAgdGhpcy5hbGVydC53YXJuaW5nKGdldHRleHQoJ0dyb3VwIGRhc2hib2FyZHMgY2FuIG9ubHkgYmUgY29waWVkIGludG8gYSBncm91cC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDb250ZXh0RGFzaGJvYXJkQ29weShcbiAgICBkYXNoOiBDb250ZXh0RGFzaGJvYXJkLFxuICAgIG5ld0NvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+LFxuICAgIG9sZENvbnRleHQ6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+XG4gICk6IENvbnRleHREYXNoYm9hcmQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gcmVkdWNlKFxuICAgICAgZGFzaC5jaGlsZHJlbixcbiAgICAgIChfY2hpbGRyZW4sIGNoaWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IGNoaWxkO1xuICAgICAgICBjb25zdCBjZmcgPSBjaGlsZC5jb25maWc7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXNUb0NvcHkgPSB7XG4gICAgICAgICAgZGV2aWNlOiBkZXZpY2UgPT4gdGhpcy5yZXBsYWNlQ29udGV4dEluT2JqKGRldmljZSwgbmV3Q29udGV4dCwgb2xkQ29udGV4dCksXG4gICAgICAgICAgZGF0YXBvaW50czogZGF0YVBvaW50cyA9PlxuICAgICAgICAgICAgdGhpcy5yZXBsYWNlQ29udGV4dEluRGF0YVBvaW50cyhkYXRhUG9pbnRzLCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KSxcbiAgICAgICAgICBkYXRhUG9pbnRzOiBkYXRhUG9pbnRzID0+XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VDb250ZXh0SW5EYXRhUG9pbnRzKGRhdGFQb2ludHMsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpLFxuICAgICAgICAgIGRhdGFwb2ludHNHYXVnZTogZGF0YVBvaW50cyA9PlxuICAgICAgICAgICAgdGhpcy5yZXBsYWNlQ29udGV4dEluRGF0YVBvaW50cyhkYXRhUG9pbnRzLCBuZXdDb250ZXh0LCBvbGRDb250ZXh0KSxcbiAgICAgICAgICBkYXRhcG9pbnRzTGFiZWxzOiBkYXRhUG9pbnRzID0+XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VDb250ZXh0SW5EYXRhUG9pbnRzKGRhdGFQb2ludHMsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGNmZykge1xuICAgICAgICAgIHRoaXMuY29weVByb3BlcnRpZXMoY2ZnLCBwcm9wZXJ0aWVzVG9Db3B5KTtcbiAgICAgICAgICBpZiAoY2ZnLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY29weVByb3BlcnRpZXMoY2ZnLm9wdGlvbnMsIHByb3BlcnRpZXNUb0NvcHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF9jaGlsZHJlbltpZF0gPSBjbG9uZURlZXAoY2hpbGQpO1xuICAgICAgICByZXR1cm4gX2NoaWxkcmVuO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGRhc2guY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICByZXR1cm4gZGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgY29weVByb3BlcnRpZXMob2JqLCBwcm9wZXJ0aWVzVG9Db3B5KSB7XG4gICAgZm9yRWFjaChwcm9wZXJ0aWVzVG9Db3B5LCAoY29weUZuLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgaWYgKG9ialtwcm9wZXJ0eV0pIHtcbiAgICAgICAgb2JqW3Byb3BlcnR5XSA9IGNvcHlGbihvYmpbcHJvcGVydHldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUNvbnRleHRJbkRhdGFQb2ludHMoXG4gICAgZGF0YVBvaW50cyxcbiAgICBuZXdDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PixcbiAgICBvbGRDb250ZXh0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PlxuICApIHtcbiAgICBkYXRhUG9pbnRzLmZvckVhY2goZHAgPT4ge1xuICAgICAgZHAuX190YXJnZXQgPSB0aGlzLnJlcGxhY2VDb250ZXh0SW5PYmooZHAuX190YXJnZXQsIG5ld0NvbnRleHQsIG9sZENvbnRleHQpO1xuICAgIH0pO1xuICAgIHJldHVybiBkYXRhUG9pbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQ29udGV4dEluT2JqKFxuICAgIG9iajogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4sXG4gICAgbmV3Q29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4sXG4gICAgb2xkQ29udGV4dDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD5cbiAgKSB7XG4gICAgaWYgKG9iaiAmJiBvYmouaWQgPT09IG9sZENvbnRleHQuaWQpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCBwaWNrKG5ld0NvbnRleHQsIFsnaWQnLCAnbmFtZSddKSk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIGdldFRhYnMkKG1vOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCwgZGFzaGJvYXJkVHlwZTogQ29udGV4dERhc2hib2FyZFR5cGVbXSkge1xuICAgIGNvbnN0IGRhc2hib2FyZHMgPSB0aGlzLmdldENvbnRleHREYXNoYm9hcmRzKG1vLCBkYXNoYm9hcmRUeXBlKTtcblxuICAgIHJldHVybiB0aGlzLmdldENvbnRleHREYXNoYm9hcmRzJChkYXNoYm9hcmRzKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoZGFzaGJvYXJkID0+IHRoaXMudmVyaWZ5RGFzaGJvYXJkQXZhaWxhYmlsaXR5JChkYXNoYm9hcmQpKSxcbiAgICAgIG1lcmdlTWFwKChbZGFzaGJvYXJkXSkgPT4gdGhpcy5yZW1vdmVEYXNoYm9hcmRNb1Byb3BlcnR5KGRhc2hib2FyZCkpLFxuICAgICAgdGFwKGRhc2hib2FyZCA9PiB0aGlzLmNhY2hlRGFzaGJvYXJkKGRhc2hib2FyZCkpLFxuICAgICAgbWFwKGRhc2hib2FyZCA9PiB0aGlzLmNyZWF0ZURhc2hib2FyZFRhYihkYXNoYm9hcmQpKSxcbiAgICAgIHRvQXJyYXkoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeURhc2hib2FyZEF2YWlsYWJpbGl0eSQoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGdsb2JhbFJvbGVzSWRzID0gZGFzaGJvYXJkPy5jOHlfRGFzaGJvYXJkPy5nbG9iYWxSb2xlc0lkcztcbiAgICBjb25zdCBjYW5FZGl0ID0gZnJvbShcbiAgICAgIHRoaXMucGVybWlzc2lvbnMuY2FuRWRpdCh0aGlzLklOVkVOVE9SWV9ST0xFUywgZGFzaGJvYXJkLCB7IHNraXBSZXF1ZXN0Q2hlY2s6IHRydWUgfSlcbiAgICApO1xuICAgIGNvbnN0IGhhc0FueUdsb2JhbFJvbGUgPVxuICAgICAgIWdsb2JhbFJvbGVzSWRzIHx8IGdsb2JhbFJvbGVzSWRzID09PSBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEXG4gICAgICAgID8gb2YodHJ1ZSlcbiAgICAgICAgOiBvZih0aGlzLnBlcm1pc3Npb25zLmhhc0FueUdsb2JhbFJvbGUoZ2xvYmFsUm9sZXNJZHMpKTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtvZihkYXNoYm9hcmQpLCBjYW5FZGl0LCBoYXNBbnlHbG9iYWxSb2xlXSkucGlwZShcbiAgICAgIGZpbHRlcigoWywgY2FuRWRpdCwgaGFzQW55R2xvYmFsUm9sZV0pID0+IGNhbkVkaXQgfHwgaGFzQW55R2xvYmFsUm9sZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZXh0RGFzaGJvYXJkcyQocmVxdWVzdHM6IEFycmF5PFByb21pc2U8SVJlc3VsdExpc3Q8SU1hbmFnZWRPYmplY3Q+Pj4pIHtcbiAgICByZXR1cm4gZnJvbShyZXF1ZXN0cykucGlwZShcbiAgICAgIG1lcmdlQWxsKCksXG4gICAgICBtZXJnZU1hcChyZXNwb25zZSA9PlxuICAgICAgICB0aGlzLmFkanVzdERhc2hib2FyZEZvcjI0Q29sdW1ucyhyZXNwb25zZS5kYXRhIGFzIENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0W10pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnMgYWxyZWFkeSBjb3JydXB0ZWQgZGFzaGJvYXJkcyBmcm9tIGRhc2hib2FyZE1vIHByb3BlcnR5LlxuICAgKiBBZGRlZCB0byBmaXggZGFzaGJvYXJkcyBvbiB0aGUgY2xvdWQgaW5zdGFuY2UgKGV1LWxhdGVzdCkuXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgaXMgZ29pbmcgdG8gYmUgcmVtb3ZlZCBhZnRlciAxMDA3LjcuMC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVtb3ZlRGFzaGJvYXJkTW9Qcm9wZXJ0eShcbiAgICBkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0XG4gICk6IFByb21pc2U8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+IHtcbiAgICBjb25zdCBkYXNoYm9hcmRDb3B5ID0gY2xvbmVEZWVwKGRhc2hib2FyZCk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBnZXQoZGFzaGJvYXJkQ29weSwgJ2M4eV9EYXNoYm9hcmQuY2hpbGRyZW4nKTtcbiAgICBsZXQgdXBkYXRlRGFzaGJvYXJkID0gZmFsc2U7XG5cbiAgICBmb3JFYWNoKGNoaWxkcmVuLCBjaGlsZCA9PiB7XG4gICAgICBpZiAoZ2V0KGNoaWxkLCAnY29tcG9uZW50VHJhbnNmb3JtQ29uZmlnV2l0aENvbnRleHQnKSkge1xuICAgICAgICBkZWxldGUgY2hpbGQuY29tcG9uZW50VHJhbnNmb3JtQ29uZmlnV2l0aENvbnRleHQ7XG4gICAgICAgIHVwZGF0ZURhc2hib2FyZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoZ2V0KGNoaWxkLCAnY29uZmlnLmRhc2hib2FyZE1vJykpIHtcbiAgICAgICAgZGVsZXRlIGNoaWxkLmNvbmZpZy5kYXNoYm9hcmRNbztcbiAgICAgICAgdXBkYXRlRGFzaGJvYXJkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh1cGRhdGVEYXNoYm9hcmQpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlKGRhc2hib2FyZENvcHkpO1xuICAgIH1cbiAgICByZXR1cm4gZGFzaGJvYXJkQ29weTtcbiAgfVxuXG4gIHByaXZhdGUgY2FjaGVEYXNoYm9hcmQoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMuY2FjaGUuc2V0KGRhc2hib2FyZC5pZCwgZGFzaGJvYXJkKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGFzaGJvYXJkVGFiKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCB7IGM4eV9EYXNoYm9hcmQ6IF9kYXNoYm9hcmQsIGlkIH0gPSBkYXNoYm9hcmQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGljb246IF9kYXNoYm9hcmQuaWNvbixcbiAgICAgIHBhdGg6IGAke3RoaXMuREFTSEJPQVJEX1JPVVRFX1BBVEh9LyR7aWR9YCxcbiAgICAgIGxhYmVsOiBfZGFzaGJvYXJkLm5hbWUsXG4gICAgICBwcmlvcml0eTogX2Rhc2hib2FyZC5wcmlvcml0eSxcbiAgICAgIGhpZGU6IHRoaXMuaXNSZXBvcnQoZGFzaGJvYXJkKVxuICAgIH0gYXMgVGFiO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbihkYXNoYm9hcmQpIHtcbiAgICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZGFzaGJvYXJkLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gJyQkaGFzaEtleScgfHwga2V5ID09PSAna2xhc3NlcycpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROYW1lZERhc2hib2FyZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnkubGlzdCh7XG4gICAgICBmcmFnbWVudFR5cGU6IGAke3RoaXMuRlJBR01FTlRfTkFNRX0ke3RoaXMuSU5ERVhfU1BMSVR9JHtDb250ZXh0RGFzaGJvYXJkVHlwZS5OYW1lZH0ke3RoaXMuSU5ERVhfU1BMSVR9JHtuYW1lfWAsXG4gICAgICBwYWdlU2l6ZTogMVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZXh0RGFzaGJvYXJkcyhtbzogSU1hbmFnZWRPYmplY3QsIGRhc2hib2FyZFR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlW10pIHtcbiAgICByZXR1cm4gZGFzaGJvYXJkVHlwZS5tYXAoKHR5cGU6IENvbnRleHREYXNoYm9hcmRUeXBlKSA9PlxuICAgICAgdGhpcy5pbnZlbnRvcnkubGlzdCh7XG4gICAgICAgIGZyYWdtZW50VHlwZTogdGhpcy5jcmVhdGVEYXNoYm9hcmRGcmFnbWVudChtbywgdHlwZSksXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLkRFRkFVTFRfUEFHRVNJWkVcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRGFzaGJvYXJkRnJhZ21lbnQobW86IElNYW5hZ2VkT2JqZWN0LCB0eXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZSkge1xuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAobW8uYzh5X1JlcG9ydCkge1xuICAgICAgdmFsdWUgPSBgJHt0aGlzLlJFUE9SVF9QQVJUSUFMX05BTUV9JHttby5pZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHR5cGUgPT09IENvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZVR5cGUgPyBtby50eXBlIDogbW8uaWQ7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLkZSQUdNRU5UX05BTUV9JHt0aGlzLklOREVYX1NQTElUfSR7dHlwZX0ke3RoaXMuSU5ERVhfU1BMSVR9JHt2YWx1ZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXNoYm9hcmRUeXBlRnJvbVZpZXdDb250ZXh0KGRhc2hib2FyZENmZywgY29udGV4dCkge1xuICAgIGxldCBkYXNoYm9hcmRUeXBlO1xuICAgIGlmIChjb250ZXh0LmNvbnRleHQgPT09IFZpZXdDb250ZXh0LkRldmljZSkge1xuICAgICAgZGFzaGJvYXJkVHlwZSA9IGRhc2hib2FyZENmZy5kZXZpY2VUeXBlXG4gICAgICAgID8gQ29udGV4dERhc2hib2FyZFR5cGUuRGV2aWNlVHlwZVxuICAgICAgICA6IENvbnRleHREYXNoYm9hcmRUeXBlLkRldmljZTtcbiAgICB9XG4gICAgaWYgKGNvbnRleHQuY29udGV4dCA9PT0gVmlld0NvbnRleHQuR3JvdXApIHtcbiAgICAgIGRhc2hib2FyZFR5cGUgPSBDb250ZXh0RGFzaGJvYXJkVHlwZS5Hcm91cDtcbiAgICB9XG4gICAgcmV0dXJuIGRhc2hib2FyZFR5cGU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZyYWdtZW50S2V5KGNvbnRleHREYXNoYm9hcmRUeXBlOiBDb250ZXh0RGFzaGJvYXJkVHlwZSwgdmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiBbdGhpcy5GUkFHTUVOVF9OQU1FLCBjb250ZXh0RGFzaGJvYXJkVHlwZSwgdmFsdWVdLmpvaW4odGhpcy5JTkRFWF9TUExJVCk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZFNldEdsb2JhbChkYXNoYm9hcmQ6IFBhcnRpYWw8Q29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3Q+LCBjb250ZXh0Pykge1xuICAgIGlmIChcbiAgICAgICghY29udGV4dCAmJiB0aGlzLmlzTmFtZWQoZGFzaGJvYXJkKSAmJiAhdGhpcy5pc1JlcG9ydChkYXNoYm9hcmQpKSB8fFxuICAgICAgdGhpcy5pc0RldmljZVR5cGUoZGFzaGJvYXJkKVxuICAgICkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -43,7 +43,7 @@ export class DashboardAvailabilityComponent {
43
43
  this.globalRolesItemsSelected = items;
44
44
  if (allItemsSelected) {
45
45
  this.globalRolesIdsChange.emit(ALL_GLOBAL_ROLES_SELECTED);
46
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARD_AVAILABILITY, {
46
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
47
47
  component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,
48
48
  action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,
49
49
  globalRoles: ALL_GLOBAL_ROLES_SELECTED
@@ -52,7 +52,7 @@ export class DashboardAvailabilityComponent {
52
52
  else {
53
53
  const selectedGlobalRolesIds = items.map(i => i.id);
54
54
  this.globalRolesIdsChange.emit([...selectedGlobalRolesIds]);
55
- this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARD_AVAILABILITY, {
55
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE.DASHBOARD.EVENTS.DASHBOARDS, {
56
56
  component: PRODUCT_EXPERIENCE.DASHBOARD.COMPONENTS.DASHBOARD_AVAILABILITY,
57
57
  action: PRODUCT_EXPERIENCE.DASHBOARD.ACTIONS.APPLY_GLOBAL_ROLES_CHANGES,
58
58
  globalRoles: selectedGlobalRolesIds?.sort()?.join()
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
87
87
  }], globalRolesIdsChange: [{
88
88
  type: Output
89
89
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWF2YWlsYWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtYXZhaWxhYmlsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1hdmFpbGFiaWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFRLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUVMLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbkIsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFNbkMsTUFBTSxPQUFPLDhCQUE4QjtJQUN6Qzs7O09BR0c7SUFDSCxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxHQUF5QjtRQUMxQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyx5QkFBeUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLHlCQUF5QixDQUFDO1lBQ2pELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFRRCxZQUNVLGdCQUFrQyxFQUNsQyxnQkFBa0M7UUFEbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVGxDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQzFFLHFCQUFnQixHQUFXLEVBQUUs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QUUsQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLENBQUM7YUFDN0UsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUM7OzJIQXJGVSw4QkFBOEI7K0dBQTlCLDhCQUE4QiwyS0NiM0MsNnpCQTRCQTsyRkRmYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNEJBQTRCO3NJQVNsQyxjQUFjO3NCQURqQixLQUFLO2dCQVdJLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElVc2VyR3JvdXAsIFVzZXJHcm91cFNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBHYWluc2lnaHRTZXJ2aWNlLCBJdGVtIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRHbG9iYWxSb2xlcyxcbiAgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRCxcbiAgUFJPRFVDVF9FWFBFUklFTkNFXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtYXZhaWxhYmlsaXR5LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRBdmFpbGFiaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSWRzIG9mIGdsb2JhbCByb2xlcyBhc3NpZ25lZCB0byB0aGUgZGFzaGJvYXJkIG9yIGEgc3RyaW5nIFwiYWxsXCIgaW5kaWNhdGluZyB0aGUgc2VsZWN0aW9uIG9mIGFsbCBnbG9iYWwgcm9sZXMuXG4gICAqIFRoZSB2YWx1ZSB1bmRlZmluZWQgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvICdhbGwnLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGdsb2JhbFJvbGVzSWRzKCk6IERhc2hib2FyZEdsb2JhbFJvbGVzIHtcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsUm9sZXNJZHM7XG4gIH1cbiAgc2V0IGdsb2JhbFJvbGVzSWRzKGlkczogRGFzaGJvYXJkR2xvYmFsUm9sZXMpIHtcbiAgICBpZiAoIWlkcyB8fCBpZHMgPT09IEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURUQpIHtcbiAgICAgIHRoaXMuX2dsb2JhbFJvbGVzSWRzID0gQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZ2xvYmFsUm9sZXNJZHMgPSBbLi4uaWRzXTtcbiAgfVxuICBAT3V0cHV0KCkgZ2xvYmFsUm9sZXNJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhc2hib2FyZEdsb2JhbFJvbGVzPigpO1xuICBnbG9iYWxSb2xlc0l0ZW1zOiBJdGVtW10gPSBbXTtcbiAgZ2xvYmFsUm9sZXNJdGVtc1NlbGVjdGVkOiBJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBnbG9iYWxSb2xlczogSVVzZXJHcm91cFtdID0gW107XG4gIHByaXZhdGUgUEFHRV9TSVpFID0gMTAwO1xuICBwcml2YXRlIF9nbG9iYWxSb2xlc0lkczogRGFzaGJvYXJkR2xvYmFsUm9sZXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1c2VyR3JvdXBTZXJ2aWNlOiBVc2VyR3JvdXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nbG9iYWxSb2xlcyA9IGF3YWl0IHRoaXMuZ2V0R2xvYmFsUm9sZXMoKTtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSXRlbXMgPSB0aGlzLm1hcEdsb2JhbFJvbGVzVG9JdGVtcygpO1xuICAgIHRoaXMuZ2xvYmFsUm9sZXNJdGVtc1NlbGVjdGVkID0gdGhpcy5nZXRTZWxlY3RlZEdsb2JhbFJvbGVzSXRlbXMoKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWQoaXRlbXM6IEl0ZW1bXSkge1xuICAgIGlmICghaXRlbXMgfHwgIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWxsSXRlbXNTZWxlY3RlZCA9IGl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5nbG9iYWxSb2xlc0l0ZW1zLmxlbmd0aDtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSXRlbXNTZWxlY3RlZCA9IGl0ZW1zO1xuXG4gICAgaWYgKGFsbEl0ZW1zU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZ2xvYmFsUm9sZXNJZHNDaGFuZ2UuZW1pdChBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuRVZFTlRTLkRBU0hCT0FSRF9BVkFJTEFCSUxJVFksXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5EQVNIQk9BUkRfQVZBSUxBQklMSVRZLFxuICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5BQ1RJT05TLkFQUExZX0dMT0JBTF9ST0xFU19DSEFOR0VTLFxuICAgICAgICAgIGdsb2JhbFJvbGVzOiBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkR2xvYmFsUm9sZXNJZHMgPSBpdGVtcy5tYXAoaSA9PiBpLmlkKTtcbiAgICAgIHRoaXMuZ2xvYmFsUm9sZXNJZHNDaGFuZ2UuZW1pdChbLi4uc2VsZWN0ZWRHbG9iYWxSb2xlc0lkc10pO1xuXG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgICBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRfQVZBSUxBQklMSVRZLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkNPTVBPTkVOVFMuREFTSEJPQVJEX0FWQUlMQUJJTElUWSxcbiAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5BUFBMWV9HTE9CQUxfUk9MRVNfQ0hBTkdFUyxcbiAgICAgICAgICBnbG9iYWxSb2xlczogc2VsZWN0ZWRHbG9iYWxSb2xlc0lkcz8uc29ydCgpPy5qb2luKClcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEdsb2JhbFJvbGVzKCkge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy51c2VyR3JvdXBTZXJ2aWNlLmxpc3QoeyBwYWdlU2l6ZTogdGhpcy5QQUdFX1NJWkUgfSkpLmRhdGE7XG4gIH1cblxuICBwcml2YXRlIG1hcEdsb2JhbFJvbGVzVG9JdGVtcygpOiBJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmdsb2JhbFJvbGVzLm1hcCgoeyBuYW1lLCBpZCB9KSA9PiAoe1xuICAgICAgbmFtZSxcbiAgICAgIGlkXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZEdsb2JhbFJvbGVzSXRlbXMoKTogSXRlbVtdIHtcbiAgICBpZiAoIXRoaXMuZ2xvYmFsUm9sZXNJZHMgfHwgdGhpcy5nbG9iYWxSb2xlc0lkcyA9PT0gQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2xvYmFsUm9sZXNJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2xvYmFsUm9sZXNJZHNcbiAgICAgIC5tYXAoZ2xvYmFsUm9sZUlkID0+IHRoaXMuZ2xvYmFsUm9sZXNJdGVtcy5maW5kKGdSID0+IGdSLmlkID09PSBnbG9iYWxSb2xlSWQpKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgfVxufVxuIiwiPGM4eS1mb3JtLWdyb3VwIGNsYXNzPVwicC1iLTI0IG0tYi0wXCI+XG4gIDxkaXYgY2xhc3M9XCJsZWdlbmQgZm9ybS1ibG9ja1wiPlxuICAgIDxzcGFuPnt7ICdBdmFpbGFiaWxpdHknIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGxhYmVsIGZvcj1cImF2YWlsYWJpbGl0eVwiPlxuICAgIDxzcGFuIGNsYXNzPVwibS1yLTRcIiBpZD1cImF2YWlsYWJpbGl0eVwiPlxuICAgICAge3sgJ0dsb2JhbCByb2xlcycgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgJ1NlbGVjdCB0aGUgZ2xvYmFsIHJvbGVzIGZvciB3aGljaCB0aGUgZGFzaGJvYXJkIHdpbGwgYmUgYXZhaWxhYmxlJyB8IHRyYW5zbGF0ZVxuICAgICAgfX1cIlxuICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICA+XG4gICAgPC9idXR0b24+XG4gIDwvbGFiZWw+XG4gIDxjOHktc2VsZWN0XG4gICAgc3R5bGU9XCJ3aWR0aDogMTgwcHhcIlxuICAgIFtpdGVtc109XCJnbG9iYWxSb2xlc0l0ZW1zXCJcbiAgICBbc2VsZWN0ZWRdPVwiZ2xvYmFsUm9sZXNJdGVtc1NlbGVjdGVkXCJcbiAgICAob25DaGFuZ2UpPVwib25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgPjwvYzh5LXNlbGVjdD5cbjwvYzh5LWZvcm0tZ3JvdXA+XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWF2YWlsYWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9kYXNoYm9hcmQtYXZhaWxhYmlsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1hdmFpbGFiaWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFRLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUVMLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbkIsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFNbkMsTUFBTSxPQUFPLDhCQUE4QjtJQUN6Qzs7O09BR0c7SUFDSCxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxHQUF5QjtRQUMxQyxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyx5QkFBeUIsRUFBRTtZQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLHlCQUF5QixDQUFDO1lBQ2pELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFRRCxZQUNVLGdCQUFrQyxFQUNsQyxnQkFBa0M7UUFEbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVGxDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQzFFLHFCQUFnQixHQUFXLEVBQUUs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QyxFQUFFLEtBQUssWUFBWSxDQUFDLENBQUM7YUFDN0UsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUM7OzJIQS9FVSw4QkFBOEI7K0dBQTlCLDhCQUE4QiwyS0NiM0MsNnpCQTRCQTsyRkRmYSw4QkFBOEI7a0JBSjFDLFNBQVM7K0JBQ0UsNEJBQTRCO3NJQVNsQyxjQUFjO3NCQURqQixLQUFLO2dCQVdJLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElVc2VyR3JvdXAsIFVzZXJHcm91cFNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBHYWluc2lnaHRTZXJ2aWNlLCBJdGVtIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBEYXNoYm9hcmRHbG9iYWxSb2xlcyxcbiAgQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRCxcbiAgUFJPRFVDVF9FWFBFUklFTkNFXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGFzaGJvYXJkLWF2YWlsYWJpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtYXZhaWxhYmlsaXR5LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRBdmFpbGFiaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSWRzIG9mIGdsb2JhbCByb2xlcyBhc3NpZ25lZCB0byB0aGUgZGFzaGJvYXJkIG9yIGEgc3RyaW5nIFwiYWxsXCIgaW5kaWNhdGluZyB0aGUgc2VsZWN0aW9uIG9mIGFsbCBnbG9iYWwgcm9sZXMuXG4gICAqIFRoZSB2YWx1ZSB1bmRlZmluZWQgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvICdhbGwnLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGdsb2JhbFJvbGVzSWRzKCk6IERhc2hib2FyZEdsb2JhbFJvbGVzIHtcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsUm9sZXNJZHM7XG4gIH1cbiAgc2V0IGdsb2JhbFJvbGVzSWRzKGlkczogRGFzaGJvYXJkR2xvYmFsUm9sZXMpIHtcbiAgICBpZiAoIWlkcyB8fCBpZHMgPT09IEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURUQpIHtcbiAgICAgIHRoaXMuX2dsb2JhbFJvbGVzSWRzID0gQUxMX0dMT0JBTF9ST0xFU19TRUxFQ1RFRDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZ2xvYmFsUm9sZXNJZHMgPSBbLi4uaWRzXTtcbiAgfVxuICBAT3V0cHV0KCkgZ2xvYmFsUm9sZXNJZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhc2hib2FyZEdsb2JhbFJvbGVzPigpO1xuICBnbG9iYWxSb2xlc0l0ZW1zOiBJdGVtW10gPSBbXTtcbiAgZ2xvYmFsUm9sZXNJdGVtc1NlbGVjdGVkOiBJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSBnbG9iYWxSb2xlczogSVVzZXJHcm91cFtdID0gW107XG4gIHByaXZhdGUgUEFHRV9TSVpFID0gMTAwO1xuICBwcml2YXRlIF9nbG9iYWxSb2xlc0lkczogRGFzaGJvYXJkR2xvYmFsUm9sZXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB1c2VyR3JvdXBTZXJ2aWNlOiBVc2VyR3JvdXBTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nbG9iYWxSb2xlcyA9IGF3YWl0IHRoaXMuZ2V0R2xvYmFsUm9sZXMoKTtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSXRlbXMgPSB0aGlzLm1hcEdsb2JhbFJvbGVzVG9JdGVtcygpO1xuICAgIHRoaXMuZ2xvYmFsUm9sZXNJdGVtc1NlbGVjdGVkID0gdGhpcy5nZXRTZWxlY3RlZEdsb2JhbFJvbGVzSXRlbXMoKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWQoaXRlbXM6IEl0ZW1bXSkge1xuICAgIGlmICghaXRlbXMgfHwgIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWxsSXRlbXNTZWxlY3RlZCA9IGl0ZW1zLmxlbmd0aCA9PT0gdGhpcy5nbG9iYWxSb2xlc0l0ZW1zLmxlbmd0aDtcbiAgICB0aGlzLmdsb2JhbFJvbGVzSXRlbXNTZWxlY3RlZCA9IGl0ZW1zO1xuXG4gICAgaWYgKGFsbEl0ZW1zU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZ2xvYmFsUm9sZXNJZHNDaGFuZ2UuZW1pdChBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEKTtcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5FVkVOVFMuREFTSEJPQVJEUywge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQ09NUE9ORU5UUy5EQVNIQk9BUkRfQVZBSUxBQklMSVRZLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5EQVNIQk9BUkQuQUNUSU9OUy5BUFBMWV9HTE9CQUxfUk9MRVNfQ0hBTkdFUyxcbiAgICAgICAgZ2xvYmFsUm9sZXM6IEFMTF9HTE9CQUxfUk9MRVNfU0VMRUNURURcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEdsb2JhbFJvbGVzSWRzID0gaXRlbXMubWFwKGkgPT4gaS5pZCk7XG4gICAgICB0aGlzLmdsb2JhbFJvbGVzSWRzQ2hhbmdlLmVtaXQoWy4uLnNlbGVjdGVkR2xvYmFsUm9sZXNJZHNdKTtcblxuICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuREFTSEJPQVJELkVWRU5UUy5EQVNIQk9BUkRTLCB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5DT01QT05FTlRTLkRBU0hCT0FSRF9BVkFJTEFCSUxJVFksXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkRBU0hCT0FSRC5BQ1RJT05TLkFQUExZX0dMT0JBTF9ST0xFU19DSEFOR0VTLFxuICAgICAgICBnbG9iYWxSb2xlczogc2VsZWN0ZWRHbG9iYWxSb2xlc0lkcz8uc29ydCgpPy5qb2luKClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0R2xvYmFsUm9sZXMoKSB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLnVzZXJHcm91cFNlcnZpY2UubGlzdCh7IHBhZ2VTaXplOiB0aGlzLlBBR0VfU0laRSB9KSkuZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwR2xvYmFsUm9sZXNUb0l0ZW1zKCk6IEl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2xvYmFsUm9sZXMubWFwKCh7IG5hbWUsIGlkIH0pID0+ICh7XG4gICAgICBuYW1lLFxuICAgICAgaWRcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGVkR2xvYmFsUm9sZXNJdGVtcygpOiBJdGVtW10ge1xuICAgIGlmICghdGhpcy5nbG9iYWxSb2xlc0lkcyB8fCB0aGlzLmdsb2JhbFJvbGVzSWRzID09PSBBTExfR0xPQkFMX1JPTEVTX1NFTEVDVEVEKSB7XG4gICAgICByZXR1cm4gdGhpcy5nbG9iYWxSb2xlc0l0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nbG9iYWxSb2xlc0lkc1xuICAgICAgLm1hcChnbG9iYWxSb2xlSWQgPT4gdGhpcy5nbG9iYWxSb2xlc0l0ZW1zLmZpbmQoZ1IgPT4gZ1IuaWQgPT09IGdsb2JhbFJvbGVJZCkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG59XG4iLCI8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJwLWItMjQgbS1iLTBcIj5cbiAgPGRpdiBjbGFzcz1cImxlZ2VuZCBmb3JtLWJsb2NrXCI+XG4gICAgPHNwYW4+e3sgJ0F2YWlsYWJpbGl0eScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvZGl2PlxuICA8bGFiZWwgZm9yPVwiYXZhaWxhYmlsaXR5XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXItNFwiIGlkPVwiYXZhaWxhYmlsaXR5XCI+XG4gICAgICB7eyAnR2xvYmFsIHJvbGVzJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIHBvcG92ZXI9XCJ7e1xuICAgICAgICAnU2VsZWN0IHRoZSBnbG9iYWwgcm9sZXMgZm9yIHdoaWNoIHRoZSBkYXNoYm9hcmQgd2lsbCBiZSBhdmFpbGFibGUnIHwgdHJhbnNsYXRlXG4gICAgICB9fVwiXG4gICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgID5cbiAgICA8L2J1dHRvbj5cbiAgPC9sYWJlbD5cbiAgPGM4eS1zZWxlY3RcbiAgICBzdHlsZT1cIndpZHRoOiAxODBweFwiXG4gICAgW2l0ZW1zXT1cImdsb2JhbFJvbGVzSXRlbXNcIlxuICAgIFtzZWxlY3RlZF09XCJnbG9iYWxSb2xlc0l0ZW1zU2VsZWN0ZWRcIlxuICAgIChvbkNoYW5nZSk9XCJvblNlbGVjdGVkKCRldmVudClcIlxuICA+PC9jOHktc2VsZWN0PlxuPC9jOHktZm9ybS1ncm91cD5cbiJdfQ==