@c8y/ngx-components 1021.60.1 → 1021.62.2

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 (114) hide show
  1. package/core/authentication/new-password.component.d.ts +6 -3
  2. package/core/authentication/new-password.component.d.ts.map +1 -1
  3. package/core/common/interval-based-reload.abstract.d.ts +12 -1
  4. package/core/common/interval-based-reload.abstract.d.ts.map +1 -1
  5. package/core/common/permissions.service.d.ts +2 -0
  6. package/core/common/permissions.service.d.ts.map +1 -1
  7. package/core/common/tenant-ui.service.d.ts +9 -2
  8. package/core/common/tenant-ui.service.d.ts.map +1 -1
  9. package/core/forms/phone-validation.directive.d.ts +3 -6
  10. package/core/forms/phone-validation.directive.d.ts.map +1 -1
  11. package/core/router/router.module.d.ts.map +1 -1
  12. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -1
  13. package/esm2022/core/authentication/new-password.component.mjs +26 -5
  14. package/esm2022/core/common/interval-based-reload.abstract.mjs +50 -2
  15. package/esm2022/core/common/permissions.service.mjs +3 -1
  16. package/esm2022/core/common/tenant-ui.service.mjs +28 -6
  17. package/esm2022/core/forms/phone-validation.directive.mjs +18 -19
  18. package/esm2022/core/router/router.module.mjs +1 -5
  19. package/esm2022/core/user/user-edit.component.mjs +1 -1
  20. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +8 -3
  21. package/esm2022/tenants/custom-properties/custom-properties.component.mjs +25 -5
  22. package/esm2022/tenants/existing-tenant.guard.mjs +18 -0
  23. package/esm2022/tenants/index.mjs +3 -1
  24. package/esm2022/tenants/support-user-access/support-user-access.component.mjs +31 -0
  25. package/esm2022/tenants/tenant-form/tenant-form-inputs-definitions.mjs +116 -0
  26. package/esm2022/tenants/tenant-form/tenant-form.component.mjs +294 -0
  27. package/esm2022/tenants/tenant-limits/tenant-limits-definitions.mjs +10 -17
  28. package/esm2022/tenants/tenant-limits/tenant-limits.component.mjs +42 -29
  29. package/esm2022/tenants/tenant-list/tenant-list.component.mjs +17 -8
  30. package/esm2022/tenants/tenants.model.mjs +30 -1
  31. package/esm2022/tenants/tenants.module.mjs +57 -22
  32. package/esm2022/translation-editor/data/translation-store.service.mjs +11 -8
  33. package/esm2022/translation-editor/index.mjs +22 -5
  34. package/esm2022/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.mjs +136 -0
  35. package/esm2022/translation-editor/lazy/index.mjs +2 -1
  36. package/esm2022/translation-editor/translation-editor-tab-factory.service.mjs +40 -0
  37. package/esm2022/translation-editor/translation-editor.constants.mjs +4 -0
  38. package/esm2022/upgrade/upgraded-services/index.mjs +2 -1
  39. package/esm2022/upgrade/upgraded-services/tenant-policies.service.mjs +11 -0
  40. package/esm2022/upgrade/upgraded-services/upgraded-services.module.mjs +12 -3
  41. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +9 -7
  42. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +9 -7
  43. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +7 -2
  44. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-tenants.mjs +603 -82
  46. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +9 -6
  48. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +127 -2
  50. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-translation-editor.mjs +58 -4
  52. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +22 -3
  54. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +8 -6
  56. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +8 -6
  58. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components.mjs +499 -413
  60. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  61. package/locales/de.po +35 -25
  62. package/locales/es.po +35 -25
  63. package/locales/fr.po +35 -25
  64. package/locales/ja_JP.po +35 -25
  65. package/locales/ko.po +35 -25
  66. package/locales/locales.pot +25 -24
  67. package/locales/nl.po +35 -25
  68. package/locales/pl.po +35 -25
  69. package/locales/pt_BR.po +35 -25
  70. package/locales/zh_CN.po +35 -25
  71. package/locales/zh_TW.po +35 -25
  72. package/package.json +1 -1
  73. package/tenants/custom-properties/custom-properties.component.d.ts +4 -2
  74. package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
  75. package/tenants/existing-tenant.guard.d.ts +13 -0
  76. package/tenants/existing-tenant.guard.d.ts.map +1 -0
  77. package/tenants/index.d.ts +2 -0
  78. package/tenants/index.d.ts.map +1 -1
  79. package/tenants/support-user-access/support-user-access.component.d.ts +18 -0
  80. package/tenants/support-user-access/support-user-access.component.d.ts.map +1 -0
  81. package/tenants/tenant-form/tenant-form-inputs-definitions.d.ts +113 -0
  82. package/tenants/tenant-form/tenant-form-inputs-definitions.d.ts.map +1 -0
  83. package/tenants/tenant-form/tenant-form.component.d.ts +79 -0
  84. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -0
  85. package/tenants/tenant-limits/tenant-limits-definitions.d.ts +11 -15
  86. package/tenants/tenant-limits/tenant-limits-definitions.d.ts.map +1 -1
  87. package/tenants/tenant-limits/tenant-limits.component.d.ts +9 -7
  88. package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
  89. package/tenants/tenant-list/tenant-list.component.d.ts +6 -3
  90. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  91. package/tenants/tenants.model.d.ts +31 -0
  92. package/tenants/tenants.model.d.ts.map +1 -1
  93. package/tenants/tenants.module.d.ts +4 -2
  94. package/tenants/tenants.module.d.ts.map +1 -1
  95. package/translation-editor/data/translation-store.service.d.ts +3 -2
  96. package/translation-editor/data/translation-store.service.d.ts.map +1 -1
  97. package/translation-editor/index.d.ts.map +1 -1
  98. package/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.d.ts +28 -0
  99. package/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.d.ts.map +1 -0
  100. package/translation-editor/lazy/index.d.ts +1 -0
  101. package/translation-editor/lazy/index.d.ts.map +1 -1
  102. package/translation-editor/translation-editor-tab-factory.service.d.ts +22 -0
  103. package/translation-editor/translation-editor-tab-factory.service.d.ts.map +1 -0
  104. package/translation-editor/translation-editor.constants.d.ts +4 -0
  105. package/translation-editor/translation-editor.constants.d.ts.map +1 -0
  106. package/upgrade/upgraded-services/index.d.ts +1 -0
  107. package/upgrade/upgraded-services/index.d.ts.map +1 -1
  108. package/upgrade/upgraded-services/tenant-policies.service.d.ts +11 -0
  109. package/upgrade/upgraded-services/tenant-policies.service.d.ts.map +1 -0
  110. package/upgrade/upgraded-services/upgraded-services.module.d.ts.map +1 -1
  111. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +7 -2
  112. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  113. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +7 -2
  114. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
@@ -64,6 +64,8 @@ export class Permissions {
64
64
  static { this.ROLE_SMARTRULE_READ = 'ROLE_SMARTRULE_READ'; }
65
65
  static { this.ROLE_SMS_ADMIN = 'ROLE_SMS_ADMIN'; }
66
66
  static { this.ROLE_SMS_READ = 'ROLE_SMS_READ'; }
67
+ static { this.ROLE_SUPPORT_ADMIN = 'ROLE_SUPPORT_ADMIN'; }
68
+ static { this.ROLE_SUPPORT_READ = 'ROLE_SUPPORT_READ'; }
67
69
  static { this.ROLE_TENANT_ADMIN = 'ROLE_TENANT_ADMIN'; }
68
70
  static { this.ROLE_TENANT_MANAGEMENT_ADMIN = 'ROLE_TENANT_MANAGEMENT_ADMIN'; }
69
71
  static { this.ROLE_TENANT_MANAGEMENT_CREATE = 'ROLE_TENANT_MANAGEMENT_CREATE'; }
@@ -297,4 +299,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
297
299
  type: Injectable,
298
300
  args: [{ providedIn: 'root' }]
299
301
  }], ctorParameters: () => [{ type: i1.AppStateService }, { type: i2.InventoryService }, { type: i2.UserService }], propDecorators: { checkIfOwner: [], checkWithRequest: [] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUErQixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBa0JyRCxNQUFNLE9BQU8sV0FBVzthQUNmLGlDQUE0QixHQUFHLDhCQUE4QixBQUFqQyxDQUFrQzthQUM5RCxnQ0FBMkIsR0FBRyw2QkFBNkIsQUFBaEMsQ0FBaUM7YUFDNUQscUJBQWdCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBQ3RDLG9CQUFlLEdBQUcsaUJBQWlCLEFBQXBCLENBQXFCO2FBQ3BDLCtCQUEwQixHQUFHLDRCQUE0QixBQUEvQixDQUFnQzthQUMxRCxzQ0FBaUMsR0FBRyxtQ0FBbUMsQUFBdEMsQ0FBdUM7YUFDeEUscUNBQWdDLEdBQUcsa0NBQWtDLEFBQXJDLENBQXNDO2FBQ3RFLHFCQUFnQixHQUFHLGtCQUFrQixBQUFyQixDQUFzQjthQUN0QyxvQkFBZSxHQUFHLGlCQUFpQixBQUFwQixDQUFxQjthQUNwQyxzQkFBaUIsR0FBRyxtQkFBbUIsQUFBdEIsQ0FBdUI7YUFDeEMsdUJBQWtCLEdBQUcsb0JBQW9CLEFBQXZCLENBQXdCO2FBQzFDLHFCQUFnQixHQUFHLGtCQUFrQixBQUFyQixDQUFzQjthQUN0Qyw4QkFBeUIsR0FBRywyQkFBMkIsQUFBOUIsQ0FBK0I7YUFDeEQsNkJBQXdCLEdBQUcsMEJBQTBCLEFBQTdC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QUNmLENBQUM7K0dBL1JVLFdBQVc7bUhBQVgsV0FBVyxjQURFLE1BQU07O0FBNE5kO0lBRGYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OzsrQ0FLdkI7QUF3QmU7SUFEZixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7O21EQWN2Qjs0RkFwUVUsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7NklBNE5oQixZQUFZLE1BNEJaLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSAnLi9tZW1vaXplLmRlY29yYXRvcic7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL3VpLXN0YXRlLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBDYW5FZGl0Q29uZmlnID0ge1xuICAvKipcbiAgICogU2tpcHMgcm9sZXMgY2hlY2suXG4gICAqL1xuICBza2lwUm9sZXNDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTa2lwcyBtYW5hZ2VkIG9iamVjdCBvd25lcnNoaXAgY2hlY2suXG4gICAqL1xuICBza2lwT3duZXJDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTa2lwcyBjaGVja3Mgd2l0aCBhIHF1ZXJ5IHRvIHRoZSBpbnZlbnRvcnkgQVBJLlxuICAgKi9cbiAgc2tpcFJlcXVlc3RDaGVjaz86IGJvb2xlYW47XG59O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zIHtcbiAgc3RhdGljIFJPTEVfQURWQU5DRURfU09GVFdBUkVfQURNSU4gPSAnUk9MRV9BRFZBTkNFRF9TT0ZUV0FSRV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0FEVkFOQ0VEX1NPRlRXQVJFX1JFQUQgPSAnUk9MRV9BRFZBTkNFRF9TT0ZUV0FSRV9SRUFEJztcbiAgc3RhdGljIFJPTEVfQUxBUk1fQURNSU4gPSAnUk9MRV9BTEFSTV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0FMQVJNX1JFQUQgPSAnUk9MRV9BTEFSTV9SRUFEJztcbiAgc3RhdGljIFJPTEVfQU5BTFlUSUNTQlVJTERFUl9SRUFEID0gJ1JPTEVfQU5BTFlUSUNTQlVJTERFUl9SRUFEJztcbiAgc3RhdGljIFJPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTiA9ICdST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX1JFQUQgPSAnUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9BVURJVF9BRE1JTiA9ICdST0xFX0FVRElUX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQVVESVRfUkVBRCA9ICdST0xFX0FVRElUX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9CSU5BUllfQURNSU4gPSAnUk9MRV9CSU5BUllfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9CSU5BUllfQ1JFQVRFID0gJ1JPTEVfQklOQVJZX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX0JJTkFSWV9SRUFEID0gJ1JPTEVfQklOQVJZX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9CVUxLX09QRVJBVElPTl9BRE1JTiA9ICdST0xFX0JVTEtfT1BFUkFUSU9OX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQlVMS19PUEVSQVRJT05fUkVBRCA9ICdST0xFX0JVTEtfT1BFUkFUSU9OX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9DRVBfTUFOQUdFTUVOVF9BRE1JTiA9ICdST0xFX0NFUF9NQU5BR0VNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQ0VQX01BTkFHRU1FTlRfUkVBRCA9ICdST0xFX0NFUF9NQU5BR0VNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9EQVRBX0JST0tFUl9BRE1JTiA9ICdST0xFX0RBVEFfQlJPS0VSX0FETUlOJztcbiAgc3RhdGljIFJPTEVfREFUQV9CUk9LRVJfUkVBRCA9ICdST0xFX0RBVEFfQlJPS0VSX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9ERVZJQ0VfQ09OVFJPTF9BRE1JTiA9ICdST0xFX0RFVklDRV9DT05UUk9MX0FETUlOJztcbiAgc3RhdGljIFJPTEVfREVWSUNFX0NPTlRST0xfUkVBRCA9ICdST0xFX0RFVklDRV9DT05UUk9MX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9FTUFJTF9DUkVBVEUgPSAnUk9MRV9FTUFJTF9DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9FUExBUFBTX1JFQUQgPSAnUk9MRV9FUExBUFBTX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9FVkVOVF9BRE1JTiA9ICdST0xFX0VWRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfRVZFTlRfUkVBRCA9ICdST0xFX0VWRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9HRU5FUklDX01RVFRfQURNSU4gPSAnUk9MRV9HRU5FUklDX01RVFRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9JREVOVElUWV9BRE1JTiA9ICdST0xFX0lERU5USVRZX0FETUlOJztcbiAgc3RhdGljIFJPTEVfSURFTlRJVFlfUkVBRCA9ICdST0xFX0lERU5USVRZX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9JTlZFTlRPUllfQURNSU4gPSAnUk9MRV9JTlZFTlRPUllfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9JTlZFTlRPUllfQ1JFQVRFID0gJ1JPTEVfSU5WRU5UT1JZX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX0lOVkVOVE9SWV9SRUFEID0gJ1JPTEVfSU5WRU5UT1JZX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NQUNISU5FX0xFQVJOSU5HX1JFQUQgPSAnUk9MRV9NQUNISU5FX0xFQVJOSU5HX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NQU5BR0VEX09CSkVDVF9BRE1JTiA9ICdST0xFX01BTkFHRURfT0JKRUNUX0FETUlOJztcbiAgc3RhdGljIFJPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFID0gJ1JPTEVfTUFOQUdFRF9PQkpFQ1RfQ1JFQVRFJztcbiAgc3RhdGljIFJPTEVfTUFOQUdFRF9PQkpFQ1RfUkVBRCA9ICdST0xFX01BTkFHRURfT0JKRUNUX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NRUFTVVJFTUVOVF9BRE1JTiA9ICdST0xFX01FQVNVUkVNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfTUVBU1VSRU1FTlRfUkVBRCA9ICdST0xFX01FQVNVUkVNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9NUVRUX0NPTk5FQ1RfQURNSU4gPSAnUk9MRV9NUVRUX0NPTk5FQ1RfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9NUVRUX1NFUlZJQ0VfQURNSU4gPSAnUk9MRV9NUVRUX1NFUlZJQ0VfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9OT1RJRklDQVRJT05fMl9BRE1JTiA9ICdST0xFX05PVElGSUNBVElPTl8yX0FETUlOJztcbiAgc3RhdGljIFJPTEVfT1BUSU9OX01BTkFHRU1FTlRfQURNSU4gPSAnUk9MRV9PUFRJT05fTUFOQUdFTUVOVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX09QVElPTl9NQU5BR0VNRU5UX1JFQUQgPSAnUk9MRV9PUFRJT05fTUFOQUdFTUVOVF9SRUFEJztcbiAgc3RhdGljIFJPTEVfUFJPVklTSU9OSU5HX0NSRUFURSA9ICdST0xFX1BST1ZJU0lPTklOR19DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9QUk9WSVNJT05JTkdfUkVBRCA9ICdST0xFX1BST1ZJU0lPTklOR19SRUFEJztcbiAgc3RhdGljIFJPTEVfUFJPVklTSU9OSU5HX1VQREFURSA9ICdST0xFX1BST1ZJU0lPTklOR19VUERBVEUnO1xuICBzdGF0aWMgUk9MRV9SRU1PVEVfQUNDRVNTX0FETUlOID0gJ1JPTEVfUkVNT1RFX0FDQ0VTU19BRE1JTic7XG4gIHN0YXRpYyBST0xFX1JFVEVOVElPTl9SVUxFX0FETUlOID0gJ1JPTEVfUkVURU5USU9OX1JVTEVfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9SRVRFTlRJT05fUlVMRV9SRUFEID0gJ1JPTEVfUkVURU5USU9OX1JVTEVfUkVBRCc7XG4gIHN0YXRpYyBST0xFX1NDSEVEVUxFX1JFUE9SVF9BRE1JTiA9ICdST0xFX1NDSEVEVUxFX1JFUE9SVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1NJTVVMQVRPUl9BRE1JTiA9ICdST0xFX1NJTVVMQVRPUl9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1NNQVJUR1JPVVBfQURNSU4gPSAnUk9MRV9TTUFSVEdST1VQX0FETUlOJztcbiAgc3RhdGljIFJPTEVfU01BUlRHUk9VUF9DUkVBVEUgPSAnUk9MRV9TTUFSVEdST1VQX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX1NNQVJUR1JPVVBfVVBEQVRFID0gJ1JPTEVfU01BUlRHUk9VUF9VUERBVEUnO1xuICBzdGF0aWMgUk9MRV9TTUFSVFJVTEVfQURNSU4gPSAnUk9MRV9TTUFSVFJVTEVfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9TTUFSVFJVTEVfUkVBRCA9ICdST0xFX1NNQVJUUlVMRV9SRUFEJztcbiAgc3RhdGljIFJPTEVfU01TX0FETUlOID0gJ1JPTEVfU01TX0FETUlOJztcbiAgc3RhdGljIFJPTEVfU01TX1JFQUQgPSAnUk9MRV9TTVNfUkVBRCc7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9BRE1JTiA9ICdST0xFX1RFTkFOVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX0FETUlOID0gJ1JPTEVfVEVOQU5UX01BTkFHRU1FTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9DUkVBVEUgPSAnUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEID0gJ1JPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCc7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1VQREFURSA9ICdST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1VQREFURSc7XG4gIHN0YXRpYyBST0xFX1RFTkFOVF9TVEFUSVNUSUNTX1JFQUQgPSAnUk9MRV9URU5BTlRfU1RBVElTVElDU19SRUFEJztcbiAgc3RhdGljIFJPTEVfVVNFUl9NQU5BR0VNRU5UX0FETUlOID0gJ1JPTEVfVVNFUl9NQU5BR0VNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfVVNFUl9NQU5BR0VNRU5UX0NSRUFURSA9ICdST0xFX1VTRVJfTUFOQUdFTUVOVF9DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9VU0VSX01BTkFHRU1FTlRfT1dOX0FETUlOID0gJ1JPTEVfVVNFUl9NQU5BR0VNRU5UX09XTl9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1VTRVJfTUFOQUdFTUVOVF9PV05fUkVBRCA9ICdST0xFX1VTRVJfTUFOQUdFTUVOVF9PV05fUkVBRCc7XG4gIHN0YXRpYyBST0xFX1VTRVJfTUFOQUdFTUVOVF9SRUFEID0gJ1JPTEVfVVNFUl9NQU5BR0VNRU5UX1JFQUQnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXI6IFVzZXJTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGUgZ2l2ZW4gbW9cbiAgICogKGVpdGhlciB0aHJvdWdoIGdsb2JhbCByb2xlLCBpbmRpdmlkdWFsIGRldmljZSBwZXJtaXNzaW9ucyBvciB2aWEgaW52ZW50b3J5IHJvbGVzKS5cbiAgICpcbiAgICogYGBgdHNcbiAgICogYXN5bmMgY2FuRWRpdEdyb3VwKGdyb3VwOiBJTWFuYWdlZE9iamVjdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgKiAgIHJldHVybiBhd2FpdCB0aGlzLnBlcm1pc3Npb25zLmNhbkVkaXQoXG4gICAqICAgICBbUGVybWlzc2lvbnMuUk9MRV9JTlZFTlRPUllfQURNSU4sIFBlcm1pc3Npb25zLlJPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU5dLFxuICAgKiAgICAgZ3JvdXBcbiAgICogICApO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gcm9sZUlkcyAtIFRoZSBhcnJheSBvZiByb2xlIGlkcyB0byBjaGVjayBpZiB0aGUgY3VycmVudCB1c2VyIGhhdmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0uXG4gICAqIEBwYXJhbSBtbyAtIFRoZSBtYW5hZ2VkIG9iamVjdCBmb3Igd2hpY2ggd2UgYXJlIGNoZWNraW5nIHdoZXRoZXIgdGhlIHVzZXIgaGFzIGFjY2Vzcy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIEEgY29uZmlndXJhdGlvbiBvYmplY3QgdGhhdCBjYW4gdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczogYHNraXBSb2xlc0NoZWNrYDogYGJvb2xlYW5gIC0gc2tpcHMgcm9sZXMgY2hlY2ssIGBza2lwT3duZXJDaGVja2A6IGBib29sZWFuYCAtIHNraXBzIG93bmVyc2hpcCBjaGVjaywgYHNraXBSZXF1ZXN0Q2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyBjaGVja3Mgd2l0aCBhIHF1ZXJ5IHRvIHRoZSBpbnZlbnRvcnkgQVBJLiBVSSB3aWxsIG1ha2UgYSBxdWVyeSB0byBiYWNrZW5kIHdoZXRoZXIgdGhlIHVzZXIgY2FuIGVkaXQgdGhlIG1hbmFnZWQgb2JqZWN0LiBBIHJlamVjdGlvbiBmcm9tIEJFIGluZGljYXRlcyBhIGxhY2sgb2YgcGVybWlzc2lvbi5cbiAgICpcbiAgICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byBhIGJvb2xlYW4gdmFsdWUuIGB0cnVlYCBpZiBlZGl0aW5nIGlzIHBlcm1pdHRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBhbmQgY29uZmlndXJhdGlvbjsgb3RoZXJ3aXNlLCBgZmFsc2VgLlxuICAgKlxuICAgKi9cbiAgY2FuRWRpdChcbiAgICByb2xlSWRzOiBzdHJpbmdbXSxcbiAgICBtbzogSU1hbmFnZWRPYmplY3QgfCBJSWRlbnRpZmllZCxcbiAgICBjb25maWc6IENhbkVkaXRDb25maWcgPSB7XG4gICAgICBza2lwUm9sZXNDaGVjazogZmFsc2UsXG4gICAgICBza2lwT3duZXJDaGVjazogZmFsc2UsXG4gICAgICBza2lwUmVxdWVzdENoZWNrOiBmYWxzZVxuICAgIH1cbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJZkNhbkVkaXQocm9sZUlkcywgbW8sIGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHRoZSBzcGVjaWZpZWQgcm9sZS5cbiAgICpcbiAgICogYGBgdHNcbiAgICogaGFzU21zUmVhZFJvbGUoKTogYm9vbGVhbiB7XG4gICAqICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKFBlcm1pc3Npb25zLlJPTEVfU01TX1JFQUQpO1xuICAgKiB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHJvbGVJZCAtIFRoZSBJRCBvZiB0aGUgcm9sZSB0byBjaGVjayBhZ2FpbnN0IHRoZSBjdXJyZW50IHVzZXIncyByb2xlcy5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyB0aGUgc3BlY2lmaWVkIHJvbGUuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gdXNlciBpcyBjdXJyZW50bHkgbG9nZ2VkIGluLlxuICAgKlxuICAgKi9cbiAgaGFzUm9sZShyb2xlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzUm9sZShjdXJyZW50VXNlciwgcm9sZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgdXNlciBwb3NzZXNzZXMgYWxsIHRoZSBzcGVjaWZpZWQgcm9sZXMuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGhhc01PUmVhZEFuZEJpbmFyeVJlYWRSb2xlcygpOiBib29sZWFuIHtcbiAgICogICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbGxSb2xlcyhbXG4gICAqICAgICBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX1JFQUQsXG4gICAqICAgICBQZXJtaXNzaW9ucy5ST0xFX0JJTkFSWV9SRUFEXG4gICAqICAgXSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSByb2xlSWRzIC0gQW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJvbGUgSURzIHRvIGNoZWNrIGFnYWluc3QgdGhlIGN1cnJlbnQgdXNlcidzIHJvbGVzLlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFsbCB0aGUgc3BlY2lmaWVkIHJvbGVzLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG5vIHVzZXIgaXMgY3VycmVudGx5IGxvZ2dlZCBpbi5cbiAgICpcbiAgICovXG4gIGhhc0FsbFJvbGVzKHJvbGVJZHM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbGxSb2xlcyhjdXJyZW50VXNlciwgcm9sZUlkcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgcG9zc2Vzc2VzIGFueSBvZiB0aGUgc3BlY2lmaWVkIHJvbGVzLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBoYXNUZW5hbnRBZG1pbk9yVGVuYW50TWFuYWdlbWVudEFkbWluUm9sZXMoKTogYm9vbGVhbiB7XG4gICAqICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlSb2xlKFtcbiAgICogICAgUGVybWlzc2lvbnMuUk9MRV9URU5BTlRfQURNSU4sXG4gICAqICAgIFBlcm1pc3Npb25zLlJPTEVfVEVOQU5UX01BTkFHRU1FTlRfQURNSU5cbiAgICogIF0pO1xuICAgKiB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHJvbGVJZHMgLSBBbiBhcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcm9sZSBJRHMgdG8gY2hlY2sgYWdhaW5zdCB0aGUgY3VycmVudCB1c2VyJ3Mgcm9sZXMuXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgYW55IG9mIHRoZSBzcGVjaWZpZWQgcm9sZXMuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gdXNlciBpcyBjdXJyZW50bHkgbG9nZ2VkIGluLlxuICAgKlxuICAgKi9cbiAgaGFzQW55Um9sZShyb2xlSWRzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQW55Um9sZShjdXJyZW50VXNlciwgcm9sZUlkcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgcG9zc2Vzc2VzIGFueSBvZiB0aGUgc3BlY2lmaWVkIGdsb2JhbCByb2xlcy5cbiAgICpcbiAgICogYGBgdHNcbiAgICogaGFzQW55R2xvYmFsUm9sZXMoZGFzaGJvYXJkOiBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCk6IGJvb2xlYW4ge1xuICAgKiAgIGNvbnN0IGdsb2JhbFJvbGVzSWRzID0gZGFzaGJvYXJkPy5jOHlfRGFzaGJvYXJkPy5nbG9iYWxSb2xlc0lkcztcbiAgICogICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucy5oYXNBbnlHbG9iYWxSb2xlKGdsb2JhbFJvbGVzSWRzKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGdsb2JhbFJvbGVzSWRzIC0gQW4gYXJyYXkgb2YgbnVtYmVycyByZXByZXNlbnRpbmcgdGhlIGdsb2JhbCByb2xlIElEcyB0byBjaGVjayBhZ2FpbnN0IHRoZSBjdXJyZW50IHVzZXIncyByb2xlcy5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyBhbnkgb2YgdGhlIHNwZWNpZmllZCBnbG9iYWwgcm9sZXMuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gdXNlciBpcyBjdXJyZW50bHkgbG9nZ2VkIGluLlxuICAgKlxuICAgKi9cbiAgaGFzQW55R2xvYmFsUm9sZShnbG9iYWxSb2xlc0lkczogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHbG9iYWwgcm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbnlHbG9iYWxSb2xlKGN1cnJlbnRVc2VyLCBnbG9iYWxSb2xlc0lkcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgaXMgdGhlIG93bmVyIG9mIHRoZSBtYW5hZ2VkIG9iamVjdC5cbiAgICogVXRpbGl6ZXMgbWVtb2l6YXRpb24gdG8gY2FjaGUgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGUgbWFuYWdlZCBvYmplY3QncyBpZCxcbiAgICogaW1wcm92aW5nIHBlcmZvcm1hbmNlIGZvciBzdWJzZXF1ZW50IGNoZWNrcyBvZiB0aGUgc2FtZSBvYmplY3QuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGNvbnN0IG1hbmFnZWRPYmplY3QgPSB7IGlkOiAnMTIzJywgb3duZXI6ICdqb2huRG9lJyB9O1xuICAgKiB0aGlzLmNoZWNrSWZPd25lcihtYW5hZ2VkT2JqZWN0KS50aGVuKGlzT3duZXIgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKGlzT3duZXIpO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBtbyAtIFRoZSBtYW5hZ2VkIG9iamVjdCB0byBjaGVjayBvd25lcnNoaXAgYWdhaW5zdC5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBjdXJyZW50IHVzZXIgaXMgdGhlIG93bmVyIG9mIHRoZSBtYW5hZ2VkIG9iamVjdCwgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKlxuICAgKi9cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIHByb3RlY3RlZCBhc3luYyBjaGVja0lmT3duZXIobW86IElNYW5hZ2VkT2JqZWN0IHwgSUlkZW50aWZpZWQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjdXJyZW50VXNlck5hbWUgPSBhd2FpdCB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLnVzZXJOYW1lO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKG1vLmlkKTtcbiAgICByZXR1cm4gY3VycmVudFVzZXJOYW1lID09PSBkYXRhLm93bmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIHBlcmZvcm0gYSBwYXJ0aWFsIHVwZGF0ZSBvbiBhIG1hbmFnZWQgb2JqZWN0IGFzIGEgbWVhbnMgdG8gY2hlY2sgZm9yIGVkaXQgcGVybWlzc2lvbnMuXG4gICAqIFV0aWxpemVzIG1lbW9pemF0aW9uIHRvIGNhY2hlIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlIG1hbmFnZWQgb2JqZWN0J3MgaWQsXG4gICAqIHRoZXJlYnkgYXZvaWRpbmcgdW5uZWNlc3NhcnkgcmVwZWF0ZWQgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIG9iamVjdC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgZXNzZW50aWFsbHkgdGVzdHMgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbiB0byB1cGRhdGUgdGhlIG1hbmFnZWQgb2JqZWN0LFxuICAgKiBzZXJ2aW5nIGFzIGFuIGluZGlyZWN0IHBlcm1pc3Npb24gY2hlY2suXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGNvbnN0IG1hbmFnZWRPYmplY3QgPSB7IGlkOiAnNDU2JyB9O1xuICAgKiB0aGlzLmNoZWNrV2l0aFJlcXVlc3QobWFuYWdlZE9iamVjdCkudGhlbihoYXNQZXJtaXNzaW9uID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhoYXNQZXJtaXNzaW9uKTtcbiAgICogfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgKiAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBtbyAtIFRoZSBtYW5hZ2VkIG9iamVjdCB0byB0ZXN0IGVkaXQgcGVybWlzc2lvbnMgb24uXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgdXBkYXRlIHJlcXVlc3Qgc3VjY2VlZHMgKGluZGljYXRpbmcgZWRpdCBwZXJtaXNzaW9ucyksIGFuZCBgZmFsc2VgIGlmIGl0IGZhaWxzLlxuICAgKlxuICAgKi9cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIHByb3RlY3RlZCBhc3luYyBjaGVja1dpdGhSZXF1ZXN0KG1vOiBJTWFuYWdlZE9iamVjdCB8IElJZGVudGlmaWVkKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgbW9JZCA9IG1vLmlkLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgcGFydGlhbFVwZGF0ZU9iamVjdDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7XG4gICAgICBpZDogbW9JZFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaW52ZW50b3J5XG4gICAgICAudXBkYXRlKHBhcnRpYWxVcGRhdGVPYmplY3QpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIGVkaXQgYSBtYW5hZ2VkIG9iamVjdC5cbiAgICogVGhpcyBtZXRob2QgY29uc2lkZXJzIHZhcmlvdXMgY29uZGl0aW9ucyB0byBkZXRlcm1pbmUgZWRpdGFiaWxpdHksIGluY2x1ZGluZyByb2xlIGNoZWNrcyxcbiAgICogb3duZXJzaGlwLCBhbmQgY3VzdG9tIHJlcXVlc3QtYmFzZWQgY2hlY2tzLiBFYWNoIG9mIHRoZXNlIGNoZWNrcyBjYW4gYmUgb3B0aW9uYWxseSBza2lwcGVkXG4gICAqIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcm9sZUlkcyAtIEFuIGFycmF5IG9mIHJvbGUgSURzIHRvIGNoZWNrIGFnYWluc3QgdGhlIGN1cnJlbnQgdXNlcidzIHJvbGVzLlxuICAgKiBAcGFyYW0gbW8gLSBUaGUgbWFuYWdlZCBvYmplY3Qgb3IgYW4gaWRlbnRpZmllZCByZXNvdXJjZSB0byBjaGVjayBlZGl0IHBlcm1pc3Npb25zIGZvci5cbiAgICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBjdXN0b21pemUgdGhlIGNoZWNrcyBwZXJmb3JtZWQuIFRoaXMgaW5jbHVkZXMgb3B0aW9ucyB0byBza2lwIHJvbGUgY2hlY2tzLCBvd25lciBjaGVja3MsIG9yIGN1c3RvbSByZXF1ZXN0IGNoZWNrcy5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBjdXJyZW50IHVzZXIgY2FuIGVkaXQgdGhlIG1hbmFnZWQgb2JqZWN0IGJhc2VkIG9uIHRoZSBnaXZlbiBjb25kaXRpb25zLCBhbmQgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNoZWNrSWZDYW5FZGl0KFxuICAgIHJvbGVJZHM6IHN0cmluZ1tdLFxuICAgIG1vOiBJTWFuYWdlZE9iamVjdCB8IElJZGVudGlmaWVkLFxuICAgIGNvbmZpZzogQ2FuRWRpdENvbmZpZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWNvbmZpZz8uc2tpcFJvbGVzQ2hlY2sgJiYgKGF3YWl0IHRoaXMuaGFzQW55Um9sZShyb2xlSWRzKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWNvbmZpZz8uc2tpcE93bmVyQ2hlY2sgJiYgKGF3YWl0IHRoaXMuY2hlY2tJZk93bmVyKG1vKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWNvbmZpZz8uc2tpcFJlcXVlc3RDaGVjayAmJiAoYXdhaXQgdGhpcy5jaGVja1dpdGhSZXF1ZXN0KG1vKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUErQixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBa0JyRCxNQUFNLE9BQU8sV0FBVzthQUNmLGlDQUE0QixHQUFHLDhCQUE4QixBQUFqQyxDQUFrQzthQUM5RCxnQ0FBMkIsR0FBRyw2QkFBNkIsQUFBaEMsQ0FBaUM7YUFDNUQscUJBQWdCLEdBQUcsa0JBQWtCLEFBQXJCLENBQXNCO2FBQ3RDLG9CQUFlLEdBQUcsaUJBQWlCLEFBQXBCLENBQXFCO2FBQ3BDLCtCQUEwQixHQUFHLDRCQUE0QixBQUEvQixDQUFnQzthQUMxRCxzQ0FBaUMsR0FBRyxtQ0FBbUMsQUFBdEMsQ0FBdUM7YUFDeEUscUNBQWdDLEdBQUcsa0NBQWtDLEFBQXJDLENBQXNDO2FBQ3RFLHFCQUFnQixHQUFHLGtCQUFrQixBQUFyQixDQUFzQjthQUN0QyxvQkFBZSxHQUFHLGlCQUFpQixBQUFwQixDQUFxQjthQUNwQyxzQkFBaUIsR0FBRyxtQkFBbUIsQUFBdEIsQ0FBdUI7YUFDeEMsdUJBQWtCLEdBQUcsb0JBQW9CLEFBQXZCLENBQXdCO2FBQzFDLHFCQUFnQixHQUFHLGtCQUFrQixBQUFyQixDQUFzQjthQUN0Qyw4QkFBeUIsR0FBRywyQkFBMkIsQUFBOUIsQ0FBK0I7YUFDeEQsNkJBQXdCLEdBQUcsMEJBQTBCLEFBQTdC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RSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0FqU1UsV0FBVzttSEFBWCxXQUFXLGNBREUsTUFBTTs7QUE4TmQ7SUFEZixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7OytDQUt2QjtBQXdCZTtJQURmLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7bURBY3ZCOzRGQXRRVSxXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs2SUE4TmhCLFlBQVksTUE0QlosZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBVc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUuZGVjb3JhdG9yJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4vdWktc3RhdGUuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIENhbkVkaXRDb25maWcgPSB7XG4gIC8qKlxuICAgKiBTa2lwcyByb2xlcyBjaGVjay5cbiAgICovXG4gIHNraXBSb2xlc0NoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNraXBzIG1hbmFnZWQgb2JqZWN0IG93bmVyc2hpcCBjaGVjay5cbiAgICovXG4gIHNraXBPd25lckNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNraXBzIGNoZWNrcyB3aXRoIGEgcXVlcnkgdG8gdGhlIGludmVudG9yeSBBUEkuXG4gICAqL1xuICBza2lwUmVxdWVzdENoZWNrPzogYm9vbGVhbjtcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbnMge1xuICBzdGF0aWMgUk9MRV9BRFZBTkNFRF9TT0ZUV0FSRV9BRE1JTiA9ICdST0xFX0FEVkFOQ0VEX1NPRlRXQVJFX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQURWQU5DRURfU09GVFdBUkVfUkVBRCA9ICdST0xFX0FEVkFOQ0VEX1NPRlRXQVJFX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9BTEFSTV9BRE1JTiA9ICdST0xFX0FMQVJNX0FETUlOJztcbiAgc3RhdGljIFJPTEVfQUxBUk1fUkVBRCA9ICdST0xFX0FMQVJNX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9BTkFMWVRJQ1NCVUlMREVSX1JFQUQgPSAnUk9MRV9BTkFMWVRJQ1NCVUlMREVSX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9BUFBMSUNBVElPTl9NQU5BR0VNRU5UX0FETUlOID0gJ1JPTEVfQVBQTElDQVRJT05fTUFOQUdFTUVOVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfUkVBRCA9ICdST0xFX0FQUExJQ0FUSU9OX01BTkFHRU1FTlRfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0FVRElUX0FETUlOID0gJ1JPTEVfQVVESVRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9BVURJVF9SRUFEID0gJ1JPTEVfQVVESVRfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0JJTkFSWV9BRE1JTiA9ICdST0xFX0JJTkFSWV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0JJTkFSWV9DUkVBVEUgPSAnUk9MRV9CSU5BUllfQ1JFQVRFJztcbiAgc3RhdGljIFJPTEVfQklOQVJZX1JFQUQgPSAnUk9MRV9CSU5BUllfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0JVTEtfT1BFUkFUSU9OX0FETUlOID0gJ1JPTEVfQlVMS19PUEVSQVRJT05fQURNSU4nO1xuICBzdGF0aWMgUk9MRV9CVUxLX09QRVJBVElPTl9SRUFEID0gJ1JPTEVfQlVMS19PUEVSQVRJT05fUkVBRCc7XG4gIHN0YXRpYyBST0xFX0NFUF9NQU5BR0VNRU5UX0FETUlOID0gJ1JPTEVfQ0VQX01BTkFHRU1FTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9DRVBfTUFOQUdFTUVOVF9SRUFEID0gJ1JPTEVfQ0VQX01BTkFHRU1FTlRfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0RBVEFfQlJPS0VSX0FETUlOID0gJ1JPTEVfREFUQV9CUk9LRVJfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9EQVRBX0JST0tFUl9SRUFEID0gJ1JPTEVfREFUQV9CUk9LRVJfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0RFVklDRV9DT05UUk9MX0FETUlOID0gJ1JPTEVfREVWSUNFX0NPTlRST0xfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9ERVZJQ0VfQ09OVFJPTF9SRUFEID0gJ1JPTEVfREVWSUNFX0NPTlRST0xfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0VNQUlMX0NSRUFURSA9ICdST0xFX0VNQUlMX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX0VQTEFQUFNfUkVBRCA9ICdST0xFX0VQTEFQUFNfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0VWRU5UX0FETUlOID0gJ1JPTEVfRVZFTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9FVkVOVF9SRUFEID0gJ1JPTEVfRVZFTlRfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0dFTkVSSUNfTVFUVF9BRE1JTiA9ICdST0xFX0dFTkVSSUNfTVFUVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0lERU5USVRZX0FETUlOID0gJ1JPTEVfSURFTlRJVFlfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9JREVOVElUWV9SRUFEID0gJ1JPTEVfSURFTlRJVFlfUkVBRCc7XG4gIHN0YXRpYyBST0xFX0lOVkVOVE9SWV9BRE1JTiA9ICdST0xFX0lOVkVOVE9SWV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX0lOVkVOVE9SWV9DUkVBVEUgPSAnUk9MRV9JTlZFTlRPUllfQ1JFQVRFJztcbiAgc3RhdGljIFJPTEVfSU5WRU5UT1JZX1JFQUQgPSAnUk9MRV9JTlZFTlRPUllfUkVBRCc7XG4gIHN0YXRpYyBST0xFX01BQ0hJTkVfTEVBUk5JTkdfUkVBRCA9ICdST0xFX01BQ0hJTkVfTEVBUk5JTkdfUkVBRCc7XG4gIHN0YXRpYyBST0xFX01BTkFHRURfT0JKRUNUX0FETUlOID0gJ1JPTEVfTUFOQUdFRF9PQkpFQ1RfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9NQU5BR0VEX09CSkVDVF9DUkVBVEUgPSAnUk9MRV9NQU5BR0VEX09CSkVDVF9DUkVBVEUnO1xuICBzdGF0aWMgUk9MRV9NQU5BR0VEX09CSkVDVF9SRUFEID0gJ1JPTEVfTUFOQUdFRF9PQkpFQ1RfUkVBRCc7XG4gIHN0YXRpYyBST0xFX01FQVNVUkVNRU5UX0FETUlOID0gJ1JPTEVfTUVBU1VSRU1FTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9NRUFTVVJFTUVOVF9SRUFEID0gJ1JPTEVfTUVBU1VSRU1FTlRfUkVBRCc7XG4gIHN0YXRpYyBST0xFX01RVFRfQ09OTkVDVF9BRE1JTiA9ICdST0xFX01RVFRfQ09OTkVDVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX01RVFRfU0VSVklDRV9BRE1JTiA9ICdST0xFX01RVFRfU0VSVklDRV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX05PVElGSUNBVElPTl8yX0FETUlOID0gJ1JPTEVfTk9USUZJQ0FUSU9OXzJfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9PUFRJT05fTUFOQUdFTUVOVF9BRE1JTiA9ICdST0xFX09QVElPTl9NQU5BR0VNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfT1BUSU9OX01BTkFHRU1FTlRfUkVBRCA9ICdST0xFX09QVElPTl9NQU5BR0VNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9QUk9WSVNJT05JTkdfQ1JFQVRFID0gJ1JPTEVfUFJPVklTSU9OSU5HX0NSRUFURSc7XG4gIHN0YXRpYyBST0xFX1BST1ZJU0lPTklOR19SRUFEID0gJ1JPTEVfUFJPVklTSU9OSU5HX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9QUk9WSVNJT05JTkdfVVBEQVRFID0gJ1JPTEVfUFJPVklTSU9OSU5HX1VQREFURSc7XG4gIHN0YXRpYyBST0xFX1JFTU9URV9BQ0NFU1NfQURNSU4gPSAnUk9MRV9SRU1PVEVfQUNDRVNTX0FETUlOJztcbiAgc3RhdGljIFJPTEVfUkVURU5USU9OX1JVTEVfQURNSU4gPSAnUk9MRV9SRVRFTlRJT05fUlVMRV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1JFVEVOVElPTl9SVUxFX1JFQUQgPSAnUk9MRV9SRVRFTlRJT05fUlVMRV9SRUFEJztcbiAgc3RhdGljIFJPTEVfU0NIRURVTEVfUkVQT1JUX0FETUlOID0gJ1JPTEVfU0NIRURVTEVfUkVQT1JUX0FETUlOJztcbiAgc3RhdGljIFJPTEVfU0lNVUxBVE9SX0FETUlOID0gJ1JPTEVfU0lNVUxBVE9SX0FETUlOJztcbiAgc3RhdGljIFJPTEVfU01BUlRHUk9VUF9BRE1JTiA9ICdST0xFX1NNQVJUR1JPVVBfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9TTUFSVEdST1VQX0NSRUFURSA9ICdST0xFX1NNQVJUR1JPVVBfQ1JFQVRFJztcbiAgc3RhdGljIFJPTEVfU01BUlRHUk9VUF9VUERBVEUgPSAnUk9MRV9TTUFSVEdST1VQX1VQREFURSc7XG4gIHN0YXRpYyBST0xFX1NNQVJUUlVMRV9BRE1JTiA9ICdST0xFX1NNQVJUUlVMRV9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1NNQVJUUlVMRV9SRUFEID0gJ1JPTEVfU01BUlRSVUxFX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9TTVNfQURNSU4gPSAnUk9MRV9TTVNfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9TTVNfUkVBRCA9ICdST0xFX1NNU19SRUFEJztcbiAgc3RhdGljIFJPTEVfU1VQUE9SVF9BRE1JTiA9ICdST0xFX1NVUFBPUlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9TVVBQT1JUX1JFQUQgPSAnUk9MRV9TVVBQT1JUX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfQURNSU4gPSAnUk9MRV9URU5BTlRfQURNSU4nO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9BRE1JTiA9ICdST0xFX1RFTkFOVF9NQU5BR0VNRU5UX0FETUlOJztcbiAgc3RhdGljIFJPTEVfVEVOQU5UX01BTkFHRU1FTlRfQ1JFQVRFID0gJ1JPTEVfVEVOQU5UX01BTkFHRU1FTlRfQ1JFQVRFJztcbiAgc3RhdGljIFJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCA9ICdST0xFX1RFTkFOVF9NQU5BR0VNRU5UX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9VUERBVEUgPSAnUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9VUERBVEUnO1xuICBzdGF0aWMgUk9MRV9URU5BTlRfU1RBVElTVElDU19SRUFEID0gJ1JPTEVfVEVOQU5UX1NUQVRJU1RJQ1NfUkVBRCc7XG4gIHN0YXRpYyBST0xFX1VTRVJfTUFOQUdFTUVOVF9BRE1JTiA9ICdST0xFX1VTRVJfTUFOQUdFTUVOVF9BRE1JTic7XG4gIHN0YXRpYyBST0xFX1VTRVJfTUFOQUdFTUVOVF9DUkVBVEUgPSAnUk9MRV9VU0VSX01BTkFHRU1FTlRfQ1JFQVRFJztcbiAgc3RhdGljIFJPTEVfVVNFUl9NQU5BR0VNRU5UX09XTl9BRE1JTiA9ICdST0xFX1VTRVJfTUFOQUdFTUVOVF9PV05fQURNSU4nO1xuICBzdGF0aWMgUk9MRV9VU0VSX01BTkFHRU1FTlRfT1dOX1JFQUQgPSAnUk9MRV9VU0VSX01BTkFHRU1FTlRfT1dOX1JFQUQnO1xuICBzdGF0aWMgUk9MRV9VU0VSX01BTkFHRU1FTlRfUkVBRCA9ICdST0xFX1VTRVJfTUFOQUdFTUVOVF9SRUFEJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIGdpdmVuIG1vXG4gICAqIChlaXRoZXIgdGhyb3VnaCBnbG9iYWwgcm9sZSwgaW5kaXZpZHVhbCBkZXZpY2UgcGVybWlzc2lvbnMgb3IgdmlhIGludmVudG9yeSByb2xlcykuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGFzeW5jIGNhbkVkaXRHcm91cChncm91cDogSU1hbmFnZWRPYmplY3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICogICByZXR1cm4gYXdhaXQgdGhpcy5wZXJtaXNzaW9ucy5jYW5FZGl0KFxuICAgKiAgICAgW1Blcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOLCBQZXJtaXNzaW9ucy5ST0xFX01BTkFHRURfT0JKRUNUX0FETUlOXSxcbiAgICogICAgIGdyb3VwXG4gICAqICAgKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHJvbGVJZHMgLSBUaGUgYXJyYXkgb2Ygcm9sZSBpZHMgdG8gY2hlY2sgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXZlIGF0IGxlYXN0IG9uZSBvZiB0aGVtLlxuICAgKiBAcGFyYW0gbW8gLSBUaGUgbWFuYWdlZCBvYmplY3QgZm9yIHdoaWNoIHdlIGFyZSBjaGVja2luZyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhY2Nlc3MuXG4gICAqIEBwYXJhbSBjb25maWcgLSBBIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRoYXQgY2FuIHRha2UgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IGBza2lwUm9sZXNDaGVja2A6IGBib29sZWFuYCAtIHNraXBzIHJvbGVzIGNoZWNrLCBgc2tpcE93bmVyQ2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyBvd25lcnNoaXAgY2hlY2ssIGBza2lwUmVxdWVzdENoZWNrYDogYGJvb2xlYW5gIC0gc2tpcHMgY2hlY2tzIHdpdGggYSBxdWVyeSB0byB0aGUgaW52ZW50b3J5IEFQSS4gVUkgd2lsbCBtYWtlIGEgcXVlcnkgdG8gYmFja2VuZCB3aGV0aGVyIHRoZSB1c2VyIGNhbiBlZGl0IHRoZSBtYW5hZ2VkIG9iamVjdC4gQSByZWplY3Rpb24gZnJvbSBCRSBpbmRpY2F0ZXMgYSBsYWNrIG9mIHBlcm1pc3Npb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gYSBib29sZWFuIHZhbHVlLiBgdHJ1ZWAgaWYgZWRpdGluZyBpcyBwZXJtaXR0ZWQgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnMgYW5kIGNvbmZpZ3VyYXRpb247IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICpcbiAgICovXG4gIGNhbkVkaXQoXG4gICAgcm9sZUlkczogc3RyaW5nW10sXG4gICAgbW86IElNYW5hZ2VkT2JqZWN0IHwgSUlkZW50aWZpZWQsXG4gICAgY29uZmlnOiBDYW5FZGl0Q29uZmlnID0ge1xuICAgICAgc2tpcFJvbGVzQ2hlY2s6IGZhbHNlLFxuICAgICAgc2tpcE93bmVyQ2hlY2s6IGZhbHNlLFxuICAgICAgc2tpcFJlcXVlc3RDaGVjazogZmFsc2VcbiAgICB9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrSWZDYW5FZGl0KHJvbGVJZHMsIG1vLCBjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyB0aGUgc3BlY2lmaWVkIHJvbGUuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGhhc1Ntc1JlYWRSb2xlKCk6IGJvb2xlYW4ge1xuICAgKiAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuaGFzUm9sZShQZXJtaXNzaW9ucy5ST0xFX1NNU19SRUFEKTtcbiAgICogfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSByb2xlSWQgLSBUaGUgSUQgb2YgdGhlIHJvbGUgdG8gY2hlY2sgYWdhaW5zdCB0aGUgY3VycmVudCB1c2VyJ3Mgcm9sZXMuXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgdGhlIHNwZWNpZmllZCByb2xlLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG5vIHVzZXIgaXMgY3VycmVudGx5IGxvZ2dlZCBpbi5cbiAgICpcbiAgICovXG4gIGhhc1JvbGUocm9sZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb2xlcyBjYW4gb25seSBiZSByZXF1ZXN0ZWQgaWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51c2VyLmhhc1JvbGUoY3VycmVudFVzZXIsIHJvbGVJZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgcG9zc2Vzc2VzIGFsbCB0aGUgc3BlY2lmaWVkIHJvbGVzLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBoYXNNT1JlYWRBbmRCaW5hcnlSZWFkUm9sZXMoKTogYm9vbGVhbiB7XG4gICAqICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuaGFzQWxsUm9sZXMoW1xuICAgKiAgICAgUGVybWlzc2lvbnMuUk9MRV9NQU5BR0VEX09CSkVDVF9SRUFELFxuICAgKiAgICAgUGVybWlzc2lvbnMuUk9MRV9CSU5BUllfUkVBRFxuICAgKiAgIF0pO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gcm9sZUlkcyAtIEFuIGFycmF5IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByb2xlIElEcyB0byBjaGVjayBhZ2FpbnN0IHRoZSBjdXJyZW50IHVzZXIncyByb2xlcy5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyBhbGwgdGhlIHNwZWNpZmllZCByb2xlcy5cbiAgICogQHRocm93cyBFcnJvciBpZiBubyB1c2VyIGlzIGN1cnJlbnRseSBsb2dnZWQgaW4uXG4gICAqXG4gICAqL1xuICBoYXNBbGxSb2xlcyhyb2xlSWRzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQWxsUm9sZXMoY3VycmVudFVzZXIsIHJvbGVJZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIHBvc3Nlc3NlcyBhbnkgb2YgdGhlIHNwZWNpZmllZCByb2xlcy5cbiAgICpcbiAgICogYGBgdHNcbiAgICogaGFzVGVuYW50QWRtaW5PclRlbmFudE1hbmFnZW1lbnRBZG1pblJvbGVzKCk6IGJvb2xlYW4ge1xuICAgKiAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbXG4gICAqICAgIFBlcm1pc3Npb25zLlJPTEVfVEVOQU5UX0FETUlOLFxuICAgKiAgICBQZXJtaXNzaW9ucy5ST0xFX1RFTkFOVF9NQU5BR0VNRU5UX0FETUlOXG4gICAqICBdKTtcbiAgICogfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSByb2xlSWRzIC0gQW4gYXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJvbGUgSURzIHRvIGNoZWNrIGFnYWluc3QgdGhlIGN1cnJlbnQgdXNlcidzIHJvbGVzLlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFueSBvZiB0aGUgc3BlY2lmaWVkIHJvbGVzLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG5vIHVzZXIgaXMgY3VycmVudGx5IGxvZ2dlZCBpbi5cbiAgICpcbiAgICovXG4gIGhhc0FueVJvbGUocm9sZUlkczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb2xlcyBjYW4gb25seSBiZSByZXF1ZXN0ZWQgaWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51c2VyLmhhc0FueVJvbGUoY3VycmVudFVzZXIsIHJvbGVJZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIHBvc3Nlc3NlcyBhbnkgb2YgdGhlIHNwZWNpZmllZCBnbG9iYWwgcm9sZXMuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGhhc0FueUdsb2JhbFJvbGVzKGRhc2hib2FyZDogQ29udGV4dERhc2hib2FyZE1hbmFnZWRPYmplY3QpOiBib29sZWFuIHtcbiAgICogICBjb25zdCBnbG9iYWxSb2xlc0lkcyA9IGRhc2hib2FyZD8uYzh5X0Rhc2hib2FyZD8uZ2xvYmFsUm9sZXNJZHM7XG4gICAqICAgcmV0dXJuIHRoaXMucGVybWlzc2lvbnMuaGFzQW55R2xvYmFsUm9sZShnbG9iYWxSb2xlc0lkcyk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBnbG9iYWxSb2xlc0lkcyAtIEFuIGFycmF5IG9mIG51bWJlcnMgcmVwcmVzZW50aW5nIHRoZSBnbG9iYWwgcm9sZSBJRHMgdG8gY2hlY2sgYWdhaW5zdCB0aGUgY3VycmVudCB1c2VyJ3Mgcm9sZXMuXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgYW55IG9mIHRoZSBzcGVjaWZpZWQgZ2xvYmFsIHJvbGVzLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG5vIHVzZXIgaXMgY3VycmVudGx5IGxvZ2dlZCBpbi5cbiAgICpcbiAgICovXG4gIGhhc0FueUdsb2JhbFJvbGUoZ2xvYmFsUm9sZXNJZHM6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignR2xvYmFsIHJvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQW55R2xvYmFsUm9sZShjdXJyZW50VXNlciwgZ2xvYmFsUm9sZXNJZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY3VycmVudCB1c2VyIGlzIHRoZSBvd25lciBvZiB0aGUgbWFuYWdlZCBvYmplY3QuXG4gICAqIFV0aWxpemVzIG1lbW9pemF0aW9uIHRvIGNhY2hlIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlIG1hbmFnZWQgb2JqZWN0J3MgaWQsXG4gICAqIGltcHJvdmluZyBwZXJmb3JtYW5jZSBmb3Igc3Vic2VxdWVudCBjaGVja3Mgb2YgdGhlIHNhbWUgb2JqZWN0LlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBtYW5hZ2VkT2JqZWN0ID0geyBpZDogJzEyMycsIG93bmVyOiAnam9obkRvZScgfTtcbiAgICogdGhpcy5jaGVja0lmT3duZXIobWFuYWdlZE9iamVjdCkudGhlbihpc093bmVyID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhpc093bmVyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gbW8gLSBUaGUgbWFuYWdlZCBvYmplY3QgdG8gY2hlY2sgb3duZXJzaGlwIGFnYWluc3QuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgY3VycmVudCB1c2VyIGlzIHRoZSBvd25lciBvZiB0aGUgbWFuYWdlZCBvYmplY3QsIGFuZCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICpcbiAgICovXG4gIEBtZW1vaXplKHByb3BlcnR5KCdpZCcpKVxuICBwcm90ZWN0ZWQgYXN5bmMgY2hlY2tJZk93bmVyKG1vOiBJTWFuYWdlZE9iamVjdCB8IElJZGVudGlmaWVkKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3VycmVudFVzZXJOYW1lID0gYXdhaXQgdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZS51c2VyTmFtZTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5LmRldGFpbChtby5pZCk7XG4gICAgcmV0dXJuIGN1cnJlbnRVc2VyTmFtZSA9PT0gZGF0YS5vd25lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBwZXJmb3JtIGEgcGFydGlhbCB1cGRhdGUgb24gYSBtYW5hZ2VkIG9iamVjdCBhcyBhIG1lYW5zIHRvIGNoZWNrIGZvciBlZGl0IHBlcm1pc3Npb25zLlxuICAgKiBVdGlsaXplcyBtZW1vaXphdGlvbiB0byBjYWNoZSB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZSBtYW5hZ2VkIG9iamVjdCdzIGlkLFxuICAgKiB0aGVyZWJ5IGF2b2lkaW5nIHVubmVjZXNzYXJ5IHJlcGVhdGVkIHJlcXVlc3RzIGZvciB0aGUgc2FtZSBvYmplY3QuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGVzc2VudGlhbGx5IHRlc3RzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gdXBkYXRlIHRoZSBtYW5hZ2VkIG9iamVjdCxcbiAgICogc2VydmluZyBhcyBhbiBpbmRpcmVjdCBwZXJtaXNzaW9uIGNoZWNrLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb25zdCBtYW5hZ2VkT2JqZWN0ID0geyBpZDogJzQ1NicgfTtcbiAgICogdGhpcy5jaGVja1dpdGhSZXF1ZXN0KG1hbmFnZWRPYmplY3QpLnRoZW4oaGFzUGVybWlzc2lvbiA9PiB7XG4gICAqICAgY29uc29sZS5sb2coaGFzUGVybWlzc2lvbik7XG4gICAqIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gbW8gLSBUaGUgbWFuYWdlZCBvYmplY3QgdG8gdGVzdCBlZGl0IHBlcm1pc3Npb25zIG9uLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBgdHJ1ZWAgaWYgdGhlIHVwZGF0ZSByZXF1ZXN0IHN1Y2NlZWRzIChpbmRpY2F0aW5nIGVkaXQgcGVybWlzc2lvbnMpLCBhbmQgYGZhbHNlYCBpZiBpdCBmYWlscy5cbiAgICpcbiAgICovXG4gIEBtZW1vaXplKHByb3BlcnR5KCdpZCcpKVxuICBwcm90ZWN0ZWQgYXN5bmMgY2hlY2tXaXRoUmVxdWVzdChtbzogSU1hbmFnZWRPYmplY3QgfCBJSWRlbnRpZmllZCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG1vSWQgPSBtby5pZC50b1N0cmluZygpO1xuICAgIGNvbnN0IHBhcnRpYWxVcGRhdGVPYmplY3Q6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgaWQ6IG1vSWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeVxuICAgICAgLnVwZGF0ZShwYXJ0aWFsVXBkYXRlT2JqZWN0KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byBlZGl0IGEgbWFuYWdlZCBvYmplY3QuXG4gICAqIFRoaXMgbWV0aG9kIGNvbnNpZGVycyB2YXJpb3VzIGNvbmRpdGlvbnMgdG8gZGV0ZXJtaW5lIGVkaXRhYmlsaXR5LCBpbmNsdWRpbmcgcm9sZSBjaGVja3MsXG4gICAqIG93bmVyc2hpcCwgYW5kIGN1c3RvbSByZXF1ZXN0LWJhc2VkIGNoZWNrcy4gRWFjaCBvZiB0aGVzZSBjaGVja3MgY2FuIGJlIG9wdGlvbmFsbHkgc2tpcHBlZFxuICAgKiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHJvbGVJZHMgLSBBbiBhcnJheSBvZiByb2xlIElEcyB0byBjaGVjayBhZ2FpbnN0IHRoZSBjdXJyZW50IHVzZXIncyByb2xlcy5cbiAgICogQHBhcmFtIG1vIC0gVGhlIG1hbmFnZWQgb2JqZWN0IG9yIGFuIGlkZW50aWZpZWQgcmVzb3VyY2UgdG8gY2hlY2sgZWRpdCBwZXJtaXNzaW9ucyBmb3IuXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBjaGVja3MgcGVyZm9ybWVkLiBUaGlzIGluY2x1ZGVzIG9wdGlvbnMgdG8gc2tpcCByb2xlIGNoZWNrcywgb3duZXIgY2hlY2tzLCBvciBjdXN0b20gcmVxdWVzdCBjaGVja3MuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgY3VycmVudCB1c2VyIGNhbiBlZGl0IHRoZSBtYW5hZ2VkIG9iamVjdCBiYXNlZCBvbiB0aGUgZ2l2ZW4gY29uZGl0aW9ucywgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0lmQ2FuRWRpdChcbiAgICByb2xlSWRzOiBzdHJpbmdbXSxcbiAgICBtbzogSU1hbmFnZWRPYmplY3QgfCBJSWRlbnRpZmllZCxcbiAgICBjb25maWc6IENhbkVkaXRDb25maWdcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCFjb25maWc/LnNraXBSb2xlc0NoZWNrICYmIChhd2FpdCB0aGlzLmhhc0FueVJvbGUocm9sZUlkcykpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCFjb25maWc/LnNraXBPd25lckNoZWNrICYmIChhd2FpdCB0aGlzLmNoZWNrSWZPd25lcihtbykpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCFjb25maWc/LnNraXBSZXF1ZXN0Q2hlY2sgJiYgKGF3YWl0IHRoaXMuY2hlY2tXaXRoUmVxdWVzdChtbykpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { ApplicationType, GrantType, TenantLoginOptionType, UserManagementSource, UserService } from '@c8y/client';
3
- import { get } from 'lodash-es';
2
+ import { ApplicationType, GrantType, TenantLoginOptionsService, TenantLoginOptionType, UserManagementSource, UserService } from '@c8y/client';
3
+ import { get, pick } from 'lodash-es';
4
4
  import { AppStateService } from './ui-state.service';
5
5
  import { take } from 'rxjs/operators';
6
6
  import { Permissions } from '../common/permissions.service';
@@ -9,9 +9,10 @@ import * as i1 from "@c8y/client";
9
9
  import * as i2 from "./ui-state.service";
10
10
  /** The helper UI service for tenant related methods built upon client services. */
11
11
  export class TenantUiService {
12
- constructor(userService, appStateService) {
12
+ constructor(userService, appStateService, tenantLoginOption) {
13
13
  this.userService = userService;
14
14
  this.appStateService = appStateService;
15
+ this.tenantLoginOption = tenantLoginOption;
15
16
  this.MANAGEMENT = 'management';
16
17
  this.ROLE_TENANT_MANAGEMENT_READ = Permissions.ROLE_TENANT_MANAGEMENT_READ;
17
18
  }
@@ -222,6 +223,27 @@ export class TenantUiService {
222
223
  .map(appRef => appRef.application)
223
224
  .filter(app => app.type === ApplicationType.MICROSERVICE);
224
225
  }
226
+ /**
227
+ * Gets password constraints setting from loginOptions.
228
+ * @returns Returns Promise<PasswordStrengthSettings> with password properties.
229
+ */
230
+ async getPasswordStrengthSettings() {
231
+ return this.tenantLoginOption.list({}).then(res => {
232
+ const loginOptionWithPasswordSettings = res.data.find(({ type }) => [TenantLoginOptionType.BASIC, TenantLoginOptionType.OAUTH2_INTERNAL].includes(type));
233
+ if (!loginOptionWithPasswordSettings) {
234
+ return {
235
+ enforceStrength: true,
236
+ greenMinLength: 8,
237
+ strengthValidity: true
238
+ };
239
+ }
240
+ return pick(loginOptionWithPasswordSettings, [
241
+ 'enforceStrength',
242
+ 'greenMinLength',
243
+ 'strengthValidity'
244
+ ]);
245
+ });
246
+ }
225
247
  hasApp(apps, requiredAppName) {
226
248
  if (!apps?.length) {
227
249
  return false;
@@ -231,11 +253,11 @@ export class TenantUiService {
231
253
  isManagement(currentTenant) {
232
254
  return currentTenant.name === this.MANAGEMENT;
233
255
  }
234
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantUiService, deps: [{ token: i1.UserService }, { token: i2.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
256
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantUiService, deps: [{ token: i1.UserService }, { token: i2.AppStateService }, { token: i1.TenantLoginOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
235
257
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantUiService, providedIn: 'root' }); }
236
258
  }
237
259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantUiService, decorators: [{
238
260
  type: Injectable,
239
261
  args: [{ providedIn: 'root' }]
240
- }], ctorParameters: () => [{ type: i1.UserService }, { type: i2.AppStateService }] });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXVpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2NvbW1vbi90ZW5hbnQtdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUtULHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsV0FBVyxFQUNaLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFFNUQsbUZBQW1GO0FBRW5GLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1UsV0FBd0IsRUFDeEIsZUFBZ0M7UUFEaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBTGpDLGVBQVUsR0FBRyxZQUFZLENBQUM7UUFDMUIsZ0NBQTJCLEdBQUcsV0FBVyxDQUFDLDJCQUEyQixDQUFDO0lBSzVFLENBQUM7SUFFSjs7T0FFRztJQUNILElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gs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O09BSUc7SUFDSCx5Q0FBeUM7UUFDdkMsTUFBTSxVQUFVLEdBQTRCLEdBQUcsQ0FDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQ2xDLCtCQUErQixFQUMvQixFQUFFLENBQ0gsQ0FBQztRQUNGLE9BQU8sVUFBVTthQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFvQixFQUFFLGVBQXVCO1FBQzFELElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sWUFBWSxDQUFDLGFBQTZCO1FBQ2hELE9BQU8sYUFBYSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7K0dBbFFVLGVBQWU7bUhBQWYsZUFBZSxjQURGLE1BQU07OzRGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uVHlwZSxcbiAgR3JhbnRUeXBlLFxuICBJQXBwbGljYXRpb24sXG4gIElBcHBsaWNhdGlvblJlZmVyZW5jZSxcbiAgSUN1cnJlbnRUZW5hbnQsXG4gIElUZW5hbnRMb2dpbk9wdGlvbixcbiAgVGVuYW50TG9naW5PcHRpb25UeXBlLFxuICBVc2VyTWFuYWdlbWVudFNvdXJjZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMgfSBmcm9tICcuLi9jb21tb24vcGVybWlzc2lvbnMuc2VydmljZSc7XG5cbi8qKiBUaGUgaGVscGVyIFVJIHNlcnZpY2UgZm9yIHRlbmFudCByZWxhdGVkIG1ldGhvZHMgYnVpbHQgdXBvbiBjbGllbnQgc2VydmljZXMuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRlbmFudFVpU2VydmljZSB7XG4gIHJlYWRvbmx5IE1BTkFHRU1FTlQgPSAnbWFuYWdlbWVudCc7XG4gIHJlYWRvbmx5IFJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCA9IFBlcm1pc3Npb25zLlJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogUmV0dXJucyBjdXJyZW50IHRlbmFudFxuICAgKi9cbiAgZ2V0IGN1cnJlbnRUZW5hbnQoKTogSUN1cnJlbnRUZW5hbnQge1xuICAgIHJldHVybiB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGN1cnJlbnQgdGVuYW50IGlzIHRoZSBtYW5hZ2VtZW50IHRlbmFudC5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBjdXJyZW50IHRlbmFudCBpcyB0aGUgbWFuYWdlbWVudCB0ZW5hbnQuXG4gICAqL1xuICBhc3luYyBpc01hbmFnZW1lbnRUZW5hbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuaXNNYW5hZ2VtZW50KGN1cnJlbnRUZW5hbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGN1cnJlbnQgdGVuYW50IGlzIGFuIGVudGVycHJpc2UgdGVuYW50LlxuICAgKiBBbiBlbnRlcnByaXNlIHRlbmFudCBpcyBhIHRlbmFudCB3aGljaCBoYXMgc3Vic2NyaWJlZDpcbiAgICogLSBgYnJhbmRpbmdgIG1pY3Jvc2VydmljZSBvciBgZmVhdHVyZS1icmFuZGluZ2AgZmVhdHVyZSBhcHAsXG4gICAqIC0gYHNzbG1hbmFnZW1lbnRgIG1pY3Jvc2VydmljZSxcbiAgICogLSBgZmVhdHVyZS11c2VyLWhpZXJhcmNoeWAgZmVhdHVyZSBhcHAsXG4gICAqIC0gYGZlYXR1cmUtYnJva2VyYCBmZWF0dXJlIGFwcC5cbiAgICpcbiAgICogU2VlIGh0dHBzOi8vY3VtdWxvY2l0eS5jb20vZ3VpZGVzL3VzZXJzLWd1aWRlL2VudGVycHJpc2UtZWRpdGlvbi8gZm9yIGRldGFpbHMgYWJvdXQgc3VjaCB0ZW5hbnRzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUcnVlLCBpZiBjdXJyZW50IHRlbmFudCBpcyBhbiBlbnRlcnByaXNlIHRlbmFudC5cbiAgICovXG4gIGFzeW5jIGlzRW50ZXJwcmlzZVRlbmFudCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhdmFpbGFibGVBcHBzT2ZVc2VyID0gYXdhaXQgdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudEFwcHNPZlVzZXJcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICBjb25zdCBicmFuZGluZ0F2YWlsYWJsZSA9XG4gICAgICB0aGlzLmhhc0FwcChhdmFpbGFibGVBcHBzT2ZVc2VyLCAnYnJhbmRpbmcnKSB8fFxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2ZlYXR1cmUtYnJhbmRpbmcnKTtcblxuICAgIGNvbnN0IHJlcXVpcmVkQXBwc0FuZEZlYXR1cmVzQXZhaWxhYmxlID1cbiAgICAgIGJyYW5kaW5nQXZhaWxhYmxlICYmXG4gICAgICB0aGlzLmhhc0FwcChhdmFpbGFibGVBcHBzT2ZVc2VyLCAnc3NsbWFuYWdlbWVudCcpICYmXG4gICAgICB0aGlzLmhhc0FwcChhdmFpbGFibGVBcHBzT2ZVc2VyLCAnZmVhdHVyZS11c2VyLWhpZXJhcmNoeScpICYmXG4gICAgICB0aGlzLmhhc0FwcChhdmFpbGFibGVBcHBzT2ZVc2VyLCAnZmVhdHVyZS1icm9rZXInKTtcblxuICAgIHJldHVybiByZXF1aXJlZEFwcHNBbmRGZWF0dXJlc0F2YWlsYWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyByZWFkIGFjY2VzcyB0byB0ZW5hbnRzLCBpLmUuOlxuICAgKiAtIHRoZSBjdXJyZW50IHRlbmFudCBjYW4gY3JlYXRlIHN1YnRlbmFudHMgb3IgaXQncyB0aGUgbWFuYWdlbWVudCB0ZW5hbnQsXG4gICAqIC0gdGhlIGN1cnJlbnQgdXNlciBoYXMgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEIHJvbGUuXG4gICAqIEByZXR1cm5zIFRydWUsIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHJlYWQgYWNjZXNzIHRvIHRlbmFudHMuXG4gICAqL1xuICBjYW5SZWFkVGVuYW50cygpOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50VGVuYW50ID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5pc01hbmFnZW1lbnQoY3VycmVudFRlbmFudCkgfHwgY3VycmVudFRlbmFudC5hbGxvd0NyZWF0ZVRlbmFudHMpICYmXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmhhc1JvbGUoY3VycmVudFVzZXIsIHRoaXMuUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjdXJyZW50IHRlbmFudCBwcmVmZXJyZWQgbG9naW4gbW9kZS5cbiAgICovXG4gIGdldEN1cnJlbnRUZW5hbnRQcmVmZXJyZWRMb2dpbk9wdGlvbigpOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIHJldHVybiB0aGlzLmdldFByZWZlcnJlZExvZ2luT3B0aW9uKHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnN0YXRlLmxvZ2luT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBjdXJyZW50IHVzZXIgbG9naW4gbW9kZS5cbiAgICovXG4gIGdldEN1cnJlbnRVc2VyTG9naW5Nb2RlKCk6IFRlbmFudExvZ2luT3B0aW9uVHlwZSB7XG4gICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb24gPSB0aGlzLmdldEN1cnJlbnRUZW5hbnRQcmVmZXJyZWRMb2dpbk9wdGlvbigpO1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKGN1cnJlbnRVc2VyLmN1c3RvbVByb3BlcnRpZXMudXNlck9yaWdpbiA9PT0gJ09BVVRIMicpIHtcbiAgICAgIHJldHVybiBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pc0Jhc2ljKHByZWZlcnJlZExvZ2luT3B0aW9uKVxuICAgICAgPyBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUNcbiAgICAgIDogVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRlbmFudCBsb2dpbiBvcHRpb24gd2hpY2ggaXMgcHJlZmVycmVkLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb25zIFRoZSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdGVuYW50J3MgbG9naW4gb3B0aW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgUmV0dXJucyBJVGVuYW50TG9naW5PcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBwcmVmZXJyZWRMb2dpbk9wdGlvbiA9IHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuZ2V0UHJlZmVycmVkTG9naW5PcHRpb24obG9naW5PcHRpb25zKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGdldFByZWZlcnJlZExvZ2luT3B0aW9uKGxvZ2luT3B0aW9uczogSVRlbmFudExvZ2luT3B0aW9uW10pOiBJVGVuYW50TG9naW5PcHRpb24ge1xuICAgIGNvbnN0IGRlZmF1bHRGYWxsYmFjayA9IHtcbiAgICAgIHR5cGU6IFRlbmFudExvZ2luT3B0aW9uVHlwZS5CQVNJQyxcbiAgICAgIHVzZXJNYW5hZ2VtZW50U291cmNlOiBVc2VyTWFuYWdlbWVudFNvdXJjZS5JTlRFUk5BTFxuICAgIH07XG4gICAgaWYgKCFsb2dpbk9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0RmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpc2libGVMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRoaXMuaXNWaXNpYmxlT25Mb2dpblBhZ2UpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc09hdXRoSW50ZXJuYWwpIHx8XG4gICAgICAgIHZpc2libGVMb2dpbk9wdGlvbnMuZmluZCh0aGlzLmlzQmFzaWMpIHx8XG4gICAgICAgIHZpc2libGVMb2dpbk9wdGlvbnMuZmluZCh0aGlzLmlzT2F1dGgyKSB8fFxuICAgICAgICBkZWZhdWx0RmFsbGJhY2tcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgT2F1dGgyIGxvZ2luIG9wdGlvbiBpZiBpdCBjYW4gYmUgdXNlZCBieSBVSS5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9ucyBUaGUgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHRlbmFudCdzIGxvZ2luIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFJldHVybnMgSVRlbmFudExvZ2luT3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3Qgb2F1dGgyID0gdGVuYW50TG9naW5PcHRpb25zU2VydmljZS5nZXRPYXV0aDJPcHRpb24obG9naW5PcHRpb25zKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGdldE9hdXRoMk9wdGlvbihsb2dpbk9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbltdKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb25zLmZpbmQoXG4gICAgICBsb2dpbk9wdGlvbiA9PiB0aGlzLmlzVmlzaWJsZU9uTG9naW5QYWdlKGxvZ2luT3B0aW9uKSAmJiB0aGlzLmlzT2F1dGgyKGxvZ2luT3B0aW9uKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiBpcyB2aXNpYmxlIG9uIGxvZ2luIHBhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbiBUaGUgdGVuYW50IGxvZ2luIG9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IGxvZ2luT3B0aW9uc1Zpc2libGVPbkxvZ2luUGFnZSA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5pc1Zpc2libGVPbkxvZ2luUGFnZSk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc1Zpc2libGVPbkxvZ2luUGFnZShsb2dpbk9wdGlvbjogSVRlbmFudExvZ2luT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGxvZ2luT3B0aW9uLnZpc2libGVPbkxvZ2luUGFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGljaCBjaGVja3MgaWYgbG9naW4gb3B0aW9uIHR5cGUgaXMgJ09BVVRIMl9JTlRFUk5BTCcuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbiBUaGUgdGVuYW50IGxvZ2luIG9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IG9hdXRoMkludGVybmFsTG9naW5PcHRpb25zID0gbG9naW5PcHRpb25zLmZpbHRlcih0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmlzT2F1dGhJbnRlcm5hbCk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc09hdXRoSW50ZXJuYWwobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi50eXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gdHlwZSBpcyAnQkFTSUMnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBiYXNpY0xvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5pc0Jhc2ljKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGlzQmFzaWMobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi50eXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiB0eXBlIGlzICdPQVVUSDInIGFuZCBncmFudFR5cGUgaXMgJ0FVVEhPUklaQVRJT05fQ09ERScuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbiBUaGUgdGVuYW50IGxvZ2luIG9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IG9hdXRoMkxvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5PQVVUSDIpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNPYXV0aDIobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBsb2dpbk9wdGlvbi50eXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyICYmXG4gICAgICBsb2dpbk9wdGlvbi5ncmFudFR5cGUgPT09IEdyYW50VHlwZS5BVVRIT1JJWkFUSU9OX0NPREVcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhcHBsaWNhdGlvbiBvZiB0eXBlIE1JQ1JPU0VSVklDRSBpcyBzdWJzY3JpYmVkIHRvIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogSXQgY2hlY2tzIHRoZSBhcHBsaWNhdGlvbiByZWZlcmVuY2VzIG9mIHRoZSBjdXJyZW50VGVuYW50IGZyb20gdGhlIGFwcGxpY2F0aW9uIHN0YXRlLlxuICAgKiBObyBhZGRpdGlvbmFsIHJlcXVlc3QuXG4gICAqIEBwYXJhbSBpZGVudGlmaWVyIGFwcGxpY2F0aW9uIG5hbWUgb3IgY29udGV4dFBhdGhcbiAgICovXG4gIGlzTWljcm9zZXJ2aWNlU3Vic2NyaWJlZEluQ3VycmVudFRlbmFudChpZGVudGlmaWVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoaWRlbnRpZmllcj8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbWljcm9zZXJ2aWNlcyA9IHRoaXMuZ2V0U3Vic2NyaWJlZE1pY3Jvc2VydmljZXNJbkN1cnJlbnRUZW5hbnQoKTtcbiAgICAgIHJldHVybiBtaWNyb3NlcnZpY2VzLnNvbWUoKHsgbmFtZSwgY29udGV4dFBhdGggfSkgPT5cbiAgICAgICAgW25hbWUsIGNvbnRleHRQYXRoXS5pbmNsdWRlcyhpZGVudGlmaWVyKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGFwcGxpY2F0aW9uIG9mIHR5cGUgTUlDUk9TRVJWSUNFIHN1YnNjcmliZWQgdG8gdGhlIGN1cnJlbnQgdGVuYW50LlxuICAgKiBJdCBjaGVja3MgdGhlIGFwcGxpY2F0aW9uIHJlZmVyZW5jZXMgb2YgdGhlIGN1cnJlbnRUZW5hbnQgZnJvbSB0aGUgYXBwbGljYXRpb24gc3RhdGUuXG4gICAqIE5vIGFkZGl0aW9uYWwgcmVxdWVzdC5cbiAgICovXG4gIGdldFN1YnNjcmliZWRNaWNyb3NlcnZpY2VzSW5DdXJyZW50VGVuYW50KCk6IElBcHBsaWNhdGlvbltdIHtcbiAgICBjb25zdCByZWZlcmVuY2VzOiBJQXBwbGljYXRpb25SZWZlcmVuY2VbXSA9IGdldChcbiAgICAgIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQsXG4gICAgICAndmFsdWUuYXBwbGljYXRpb25zLnJlZmVyZW5jZXMnLFxuICAgICAgW11cbiAgICApO1xuICAgIHJldHVybiByZWZlcmVuY2VzXG4gICAgICAubWFwKGFwcFJlZiA9PiBhcHBSZWYuYXBwbGljYXRpb24pXG4gICAgICAuZmlsdGVyKGFwcCA9PiBhcHAudHlwZSA9PT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSk7XG4gIH1cblxuICBwcml2YXRlIGhhc0FwcChhcHBzOiBJQXBwbGljYXRpb25bXSwgcmVxdWlyZWRBcHBOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWFwcHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gYXBwcy5zb21lKGFwcCA9PiBhcHAubmFtZSA9PT0gcmVxdWlyZWRBcHBOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNYW5hZ2VtZW50KGN1cnJlbnRUZW5hbnQ6IElDdXJyZW50VGVuYW50KSB7XG4gICAgcmV0dXJuIGN1cnJlbnRUZW5hbnQubmFtZSA9PT0gdGhpcy5NQU5BR0VNRU5UO1xuICB9XG59XG4iXX0=
262
+ }], ctorParameters: () => [{ type: i1.UserService }, { type: i2.AppStateService }, { type: i1.TenantLoginOptionsService }] });
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LXVpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2NvbW1vbi90ZW5hbnQtdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUtULHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQU01RCxtRkFBbUY7QUFFbkYsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxXQUF3QixFQUN4QixlQUFnQyxFQUNoQyxpQkFBNEM7UUFGNUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMkI7UUFON0MsZUFBVSxHQUFHLFlBQVksQ0FBQztRQUMxQixnQ0FBMkIsR0FBRyxXQUFXLENBQUMsMkJBQTJCLENBQUM7SUFNNUUsQ0FBQztJQUVKOztPQUVHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxrQkFBa0I7UUFDdEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCO1FBQ3RCLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQjthQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxFQUFFLENBQUM7UUFFZixNQUFNLGlCQUFpQixHQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQztZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFdkQsTUFBTSxnQ0FBZ0MsR0FDcEMsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsd0JBQXdCLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXJELE9BQU8sZ0NBQWdDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYztRQUNaLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUMvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDM0QsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxhQUFhLENBQUMsa0JBQWtCLENBQUM7WUFDdEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0NBQW9DO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO1FBQ3pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUMzRCxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDekQsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztZQUN2QyxDQUFDLENBQUMscUJBQXFCLENBQUMsS0FBSztZQUM3QixDQUFDLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILHVCQUF1QixDQUFDLFlBQWtDO1FBQ3hELE1BQU0sZUFBZSxHQUFHO1lBQ3RCLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxLQUFLO1lBQ2pDLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLFFBQVE7U0FDcEQsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUUzRSxPQUFPLENBQ0wsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQzlDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUN0QyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDdkMsZUFBZSxDQUNoQixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILGVBQWUsQ0FBQyxZQUFrQztRQUNoRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQ3RCLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQ3BGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsb0JBQW9CLENBQUMsV0FBK0I7UUFDbEQsT0FBTyxXQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWUsQ0FBQyxXQUErQjtRQUM3QyxPQUFPLFdBQVcsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsZUFBZSxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxPQUFPLENBQUMsV0FBK0I7UUFDckMsT0FBTyxXQUFXLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLEtBQUssQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsUUFBUSxDQUFDLFdBQStCO1FBQ3RDLE9BQU8sQ0FDTCxXQUFXLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLE1BQU07WUFDakQsV0FBVyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsa0JBQWtCLENBQ3ZELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx1Q0FBdUMsQ0FBQyxVQUFrQjtRQUN4RCxJQUFJLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHlDQUF5QyxFQUFFLENBQUM7WUFDdkUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUNsRCxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQ3pDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHlDQUF5QztRQUN2QyxNQUFNLFVBQVUsR0FBNEIsR0FBRyxDQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFDbEMsK0JBQStCLEVBQy9CLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsT0FBTyxVQUFVO2FBQ2QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQzthQUNqQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLDJCQUEyQjtRQUMvQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDakUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUNwRixDQUFDO1lBRUYsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7Z0JBQ3JDLE9BQU87b0JBQ0wsZUFBZSxFQUFFLElBQUk7b0JBQ3JCLGNBQWMsRUFBRSxDQUFDO29CQUNqQixnQkFBZ0IsRUFBRSxJQUFJO2lCQUN2QixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLCtCQUErQixFQUFFO2dCQUMzQyxpQkFBaUI7Z0JBQ2pCLGdCQUFnQjtnQkFDaEIsa0JBQWtCO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFvQixFQUFFLGVBQXVCO1FBQzFELElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sWUFBWSxDQUFDLGFBQTZCO1FBQ2hELE9BQU8sYUFBYSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7K0dBN1JVLGVBQWU7bUhBQWYsZUFBZSxjQURGLE1BQU07OzRGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uVHlwZSxcbiAgR3JhbnRUeXBlLFxuICBJQXBwbGljYXRpb24sXG4gIElBcHBsaWNhdGlvblJlZmVyZW5jZSxcbiAgSUN1cnJlbnRUZW5hbnQsXG4gIElUZW5hbnRMb2dpbk9wdGlvbixcbiAgVGVuYW50TG9naW5PcHRpb25zU2VydmljZSxcbiAgVGVuYW50TG9naW5PcHRpb25UeXBlLFxuICBVc2VyTWFuYWdlbWVudFNvdXJjZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0LCBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnMgfSBmcm9tICcuLi9jb21tb24vcGVybWlzc2lvbnMuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFBhc3N3b3JkU3RyZW5ndGhTZXR0aW5ncyA9IFJlcXVpcmVkPFxuICBQaWNrPElUZW5hbnRMb2dpbk9wdGlvbiwgJ2VuZm9yY2VTdHJlbmd0aCcgfCAnZ3JlZW5NaW5MZW5ndGgnIHwgJ3N0cmVuZ3RoVmFsaWRpdHknPlxuPjtcblxuLyoqIFRoZSBoZWxwZXIgVUkgc2VydmljZSBmb3IgdGVuYW50IHJlbGF0ZWQgbWV0aG9kcyBidWlsdCB1cG9uIGNsaWVudCBzZXJ2aWNlcy4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGVuYW50VWlTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgTUFOQUdFTUVOVCA9ICdtYW5hZ2VtZW50JztcbiAgcmVhZG9ubHkgUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEID0gUGVybWlzc2lvbnMuUk9MRV9URU5BTlRfTUFOQUdFTUVOVF9SRUFEO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRMb2dpbk9wdGlvbjogVGVuYW50TG9naW5PcHRpb25zU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB0ZW5hbnRcbiAgICovXG4gIGdldCBjdXJyZW50VGVuYW50KCk6IElDdXJyZW50VGVuYW50IHtcbiAgICByZXR1cm4gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudFRlbmFudC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBjdXJyZW50IHRlbmFudCBpcyB0aGUgbWFuYWdlbWVudCB0ZW5hbnQuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgY3VycmVudCB0ZW5hbnQgaXMgdGhlIG1hbmFnZW1lbnQgdGVuYW50LlxuICAgKi9cbiAgYXN5bmMgaXNNYW5hZ2VtZW50VGVuYW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGN1cnJlbnRUZW5hbnQgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LnZhbHVlO1xuICAgIHJldHVybiB0aGlzLmlzTWFuYWdlbWVudChjdXJyZW50VGVuYW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBjdXJyZW50IHRlbmFudCBpcyBhbiBlbnRlcnByaXNlIHRlbmFudC5cbiAgICogQW4gZW50ZXJwcmlzZSB0ZW5hbnQgaXMgYSB0ZW5hbnQgd2hpY2ggaGFzIHN1YnNjcmliZWQ6XG4gICAqIC0gYGJyYW5kaW5nYCBtaWNyb3NlcnZpY2Ugb3IgYGZlYXR1cmUtYnJhbmRpbmdgIGZlYXR1cmUgYXBwLFxuICAgKiAtIGBzc2xtYW5hZ2VtZW50YCBtaWNyb3NlcnZpY2UsXG4gICAqIC0gYGZlYXR1cmUtdXNlci1oaWVyYXJjaHlgIGZlYXR1cmUgYXBwLFxuICAgKiAtIGBmZWF0dXJlLWJyb2tlcmAgZmVhdHVyZSBhcHAuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2N1bXVsb2NpdHkuY29tL2d1aWRlcy91c2Vycy1ndWlkZS9lbnRlcnByaXNlLWVkaXRpb24vIGZvciBkZXRhaWxzIGFib3V0IHN1Y2ggdGVuYW50cy5cbiAgICpcbiAgICogQHJldHVybnMgVHJ1ZSwgaWYgY3VycmVudCB0ZW5hbnQgaXMgYW4gZW50ZXJwcmlzZSB0ZW5hbnQuXG4gICAqL1xuICBhc3luYyBpc0VudGVycHJpc2VUZW5hbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgYXZhaWxhYmxlQXBwc09mVXNlciA9IGF3YWl0IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRBcHBzT2ZVc2VyXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgY29uc3QgYnJhbmRpbmdBdmFpbGFibGUgPVxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2JyYW5kaW5nJykgfHxcbiAgICAgIHRoaXMuaGFzQXBwKGF2YWlsYWJsZUFwcHNPZlVzZXIsICdmZWF0dXJlLWJyYW5kaW5nJyk7XG5cbiAgICBjb25zdCByZXF1aXJlZEFwcHNBbmRGZWF0dXJlc0F2YWlsYWJsZSA9XG4gICAgICBicmFuZGluZ0F2YWlsYWJsZSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ3NzbG1hbmFnZW1lbnQnKSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2ZlYXR1cmUtdXNlci1oaWVyYXJjaHknKSAmJlxuICAgICAgdGhpcy5oYXNBcHAoYXZhaWxhYmxlQXBwc09mVXNlciwgJ2ZlYXR1cmUtYnJva2VyJyk7XG5cbiAgICByZXR1cm4gcmVxdWlyZWRBcHBzQW5kRmVhdHVyZXNBdmFpbGFibGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcmVhZCBhY2Nlc3MgdG8gdGVuYW50cywgaS5lLjpcbiAgICogLSB0aGUgY3VycmVudCB0ZW5hbnQgY2FuIGNyZWF0ZSBzdWJ0ZW5hbnRzIG9yIGl0J3MgdGhlIG1hbmFnZW1lbnQgdGVuYW50LFxuICAgKiAtIHRoZSBjdXJyZW50IHVzZXIgaGFzIFJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRCByb2xlLlxuICAgKiBAcmV0dXJucyBUcnVlLCBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyByZWFkIGFjY2VzcyB0byB0ZW5hbnRzLlxuICAgKi9cbiAgY2FuUmVhZFRlbmFudHMoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudFRlbmFudCA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRUZW5hbnQudmFsdWU7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaXNNYW5hZ2VtZW50KGN1cnJlbnRUZW5hbnQpIHx8IGN1cnJlbnRUZW5hbnQuYWxsb3dDcmVhdGVUZW5hbnRzKSAmJlxuICAgICAgdGhpcy51c2VyU2VydmljZS5oYXNSb2xlKGN1cnJlbnRVc2VyLCB0aGlzLlJPTEVfVEVOQU5UX01BTkFHRU1FTlRfUkVBRClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB0ZW5hbnQgcHJlZmVycmVkIGxvZ2luIG1vZGUuXG4gICAqL1xuICBnZXRDdXJyZW50VGVuYW50UHJlZmVycmVkTG9naW5PcHRpb24oKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcmVmZXJyZWRMb2dpbk9wdGlvbih0aGlzLmFwcFN0YXRlU2VydmljZS5zdGF0ZS5sb2dpbk9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCB1c2VyIGxvZ2luIG1vZGUuXG4gICAqL1xuICBnZXRDdXJyZW50VXNlckxvZ2luTW9kZSgpOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUge1xuICAgIGNvbnN0IHByZWZlcnJlZExvZ2luT3B0aW9uID0gdGhpcy5nZXRDdXJyZW50VGVuYW50UHJlZmVycmVkTG9naW5PcHRpb24oKTtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmIChjdXJyZW50VXNlci5jdXN0b21Qcm9wZXJ0aWVzLnVzZXJPcmlnaW4gPT09ICdPQVVUSDInKSB7XG4gICAgICByZXR1cm4gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXNCYXNpYyhwcmVmZXJyZWRMb2dpbk9wdGlvbilcbiAgICAgID8gVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDXG4gICAgICA6IFRlbmFudExvZ2luT3B0aW9uVHlwZS5PQVVUSDJfSU5URVJOQUw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0ZW5hbnQgbG9naW4gb3B0aW9uIHdoaWNoIGlzIHByZWZlcnJlZC5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9ucyBUaGUgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHRlbmFudCdzIGxvZ2luIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFJldHVybnMgSVRlbmFudExvZ2luT3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3QgcHJlZmVycmVkTG9naW5PcHRpb24gPSB0ZW5hbnRMb2dpbk9wdGlvbnNTZXJ2aWNlLmdldFByZWZlcnJlZExvZ2luT3B0aW9uKGxvZ2luT3B0aW9ucyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXRQcmVmZXJyZWRMb2dpbk9wdGlvbihsb2dpbk9wdGlvbnM6IElUZW5hbnRMb2dpbk9wdGlvbltdKTogSVRlbmFudExvZ2luT3B0aW9uIHtcbiAgICBjb25zdCBkZWZhdWx0RmFsbGJhY2sgPSB7XG4gICAgICB0eXBlOiBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUMsXG4gICAgICB1c2VyTWFuYWdlbWVudFNvdXJjZTogVXNlck1hbmFnZW1lbnRTb3VyY2UuSU5URVJOQUxcbiAgICB9O1xuICAgIGlmICghbG9naW5PcHRpb25zKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdEZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2aXNpYmxlTG9naW5PcHRpb25zID0gbG9naW5PcHRpb25zLmZpbHRlcih0aGlzLmlzVmlzaWJsZU9uTG9naW5QYWdlKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdmlzaWJsZUxvZ2luT3B0aW9ucy5maW5kKHRoaXMuaXNPYXV0aEludGVybmFsKSB8fFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc0Jhc2ljKSB8fFxuICAgICAgICB2aXNpYmxlTG9naW5PcHRpb25zLmZpbmQodGhpcy5pc09hdXRoMikgfHxcbiAgICAgICAgZGVmYXVsdEZhbGxiYWNrXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIE9hdXRoMiBsb2dpbiBvcHRpb24gaWYgaXQgY2FuIGJlIHVzZWQgYnkgVUkuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpbk9wdGlvbnMgVGhlIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB0ZW5hbnQncyBsb2dpbiBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyBSZXR1cm5zIElUZW5hbnRMb2dpbk9wdGlvbi5cbiAgICpcbiAgICogKipFeGFtcGxlKipcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKlxuICAgKiAgICAoKCkgPT4ge1xuICAgKiAgICAgIGNvbnN0IG9hdXRoMiA9IHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuZ2V0T2F1dGgyT3B0aW9uKGxvZ2luT3B0aW9ucyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBnZXRPYXV0aDJPcHRpb24obG9naW5PcHRpb25zOiBJVGVuYW50TG9naW5PcHRpb25bXSk6IElUZW5hbnRMb2dpbk9wdGlvbiB7XG4gICAgcmV0dXJuIGxvZ2luT3B0aW9ucy5maW5kKFxuICAgICAgbG9naW5PcHRpb24gPT4gdGhpcy5pc1Zpc2libGVPbkxvZ2luUGFnZShsb2dpbk9wdGlvbikgJiYgdGhpcy5pc09hdXRoMihsb2dpbk9wdGlvbilcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gaXMgdmlzaWJsZSBvbiBsb2dpbiBwYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBsb2dpbk9wdGlvbnNWaXNpYmxlT25Mb2dpblBhZ2UgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuaXNWaXNpYmxlT25Mb2dpblBhZ2UpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNWaXNpYmxlT25Mb2dpblBhZ2UobG9naW5PcHRpb246IElUZW5hbnRMb2dpbk9wdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2dpbk9wdGlvbi52aXNpYmxlT25Mb2dpblBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgd2hpY2ggY2hlY2tzIGlmIGxvZ2luIG9wdGlvbiB0eXBlIGlzICdPQVVUSDJfSU5URVJOQUwnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBvYXV0aDJJbnRlcm5hbExvZ2luT3B0aW9ucyA9IGxvZ2luT3B0aW9ucy5maWx0ZXIodGVuYW50TG9naW5PcHRpb25zU2VydmljZS5pc09hdXRoSW50ZXJuYWwpO1xuICAgKiAgIH0pKCk7XG4gICAqIGBgYFxuICAgKi9cbiAgaXNPYXV0aEludGVybmFsKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMl9JTlRFUk5BTDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayB3aGljaCBjaGVja3MgaWYgbG9naW4gb3B0aW9uIHR5cGUgaXMgJ0JBU0lDJy5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2luT3B0aW9uIFRoZSB0ZW5hbnQgbG9naW4gb3B0aW9uLlxuICAgKlxuICAgKiAqKkV4YW1wbGUqKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqXG4gICAqICAgICgoKSA9PiB7XG4gICAqICAgICAgY29uc3QgYmFzaWNMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuaXNCYXNpYyk7XG4gICAqICAgfSkoKTtcbiAgICogYGBgXG4gICAqL1xuICBpc0Jhc2ljKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHdoaWNoIGNoZWNrcyBpZiBsb2dpbiBvcHRpb24gdHlwZSBpcyAnT0FVVEgyJyBhbmQgZ3JhbnRUeXBlIGlzICdBVVRIT1JJWkFUSU9OX0NPREUnLlxuICAgKlxuICAgKiBAcGFyYW0gbG9naW5PcHRpb24gVGhlIHRlbmFudCBsb2dpbiBvcHRpb24uXG4gICAqXG4gICAqICoqRXhhbXBsZSoqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICpcbiAgICogICAgKCgpID0+IHtcbiAgICogICAgICBjb25zdCBvYXV0aDJMb2dpbk9wdGlvbnMgPSBsb2dpbk9wdGlvbnMuZmlsdGVyKHRlbmFudExvZ2luT3B0aW9uc1NlcnZpY2UuT0FVVEgyKTtcbiAgICogICB9KSgpO1xuICAgKiBgYGBcbiAgICovXG4gIGlzT2F1dGgyKGxvZ2luT3B0aW9uOiBJVGVuYW50TG9naW5PcHRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgbG9naW5PcHRpb24udHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLk9BVVRIMiAmJlxuICAgICAgbG9naW5PcHRpb24uZ3JhbnRUeXBlID09PSBHcmFudFR5cGUuQVVUSE9SSVpBVElPTl9DT0RFXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYXBwbGljYXRpb24gb2YgdHlwZSBNSUNST1NFUlZJQ0UgaXMgc3Vic2NyaWJlZCB0byB0aGUgY3VycmVudCB0ZW5hbnQuXG4gICAqIEl0IGNoZWNrcyB0aGUgYXBwbGljYXRpb24gcmVmZXJlbmNlcyBvZiB0aGUgY3VycmVudFRlbmFudCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBzdGF0ZS5cbiAgICogTm8gYWRkaXRpb25hbCByZXF1ZXN0LlxuICAgKiBAcGFyYW0gaWRlbnRpZmllciBhcHBsaWNhdGlvbiBuYW1lIG9yIGNvbnRleHRQYXRoXG4gICAqL1xuICBpc01pY3Jvc2VydmljZVN1YnNjcmliZWRJbkN1cnJlbnRUZW5hbnQoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGlkZW50aWZpZXI/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1pY3Jvc2VydmljZXMgPSB0aGlzLmdldFN1YnNjcmliZWRNaWNyb3NlcnZpY2VzSW5DdXJyZW50VGVuYW50KCk7XG4gICAgICByZXR1cm4gbWljcm9zZXJ2aWNlcy5zb21lKCh7IG5hbWUsIGNvbnRleHRQYXRoIH0pID0+XG4gICAgICAgIFtuYW1lLCBjb250ZXh0UGF0aF0uaW5jbHVkZXMoaWRlbnRpZmllcilcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBhcHBsaWNhdGlvbiBvZiB0eXBlIE1JQ1JPU0VSVklDRSBzdWJzY3JpYmVkIHRvIHRoZSBjdXJyZW50IHRlbmFudC5cbiAgICogSXQgY2hlY2tzIHRoZSBhcHBsaWNhdGlvbiByZWZlcmVuY2VzIG9mIHRoZSBjdXJyZW50VGVuYW50IGZyb20gdGhlIGFwcGxpY2F0aW9uIHN0YXRlLlxuICAgKiBObyBhZGRpdGlvbmFsIHJlcXVlc3QuXG4gICAqL1xuICBnZXRTdWJzY3JpYmVkTWljcm9zZXJ2aWNlc0luQ3VycmVudFRlbmFudCgpOiBJQXBwbGljYXRpb25bXSB7XG4gICAgY29uc3QgcmVmZXJlbmNlczogSUFwcGxpY2F0aW9uUmVmZXJlbmNlW10gPSBnZXQoXG4gICAgICB0aGlzLmFwcFN0YXRlU2VydmljZS5jdXJyZW50VGVuYW50LFxuICAgICAgJ3ZhbHVlLmFwcGxpY2F0aW9ucy5yZWZlcmVuY2VzJyxcbiAgICAgIFtdXG4gICAgKTtcbiAgICByZXR1cm4gcmVmZXJlbmNlc1xuICAgICAgLm1hcChhcHBSZWYgPT4gYXBwUmVmLmFwcGxpY2F0aW9uKVxuICAgICAgLmZpbHRlcihhcHAgPT4gYXBwLnR5cGUgPT09IEFwcGxpY2F0aW9uVHlwZS5NSUNST1NFUlZJQ0UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgcGFzc3dvcmQgY29uc3RyYWludHMgc2V0dGluZyBmcm9tIGxvZ2luT3B0aW9ucy5cbiAgICogQHJldHVybnMgUmV0dXJucyBQcm9taXNlPFBhc3N3b3JkU3RyZW5ndGhTZXR0aW5ncz4gd2l0aCBwYXNzd29yZCBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgYXN5bmMgZ2V0UGFzc3dvcmRTdHJlbmd0aFNldHRpbmdzKCk6IFByb21pc2U8UGFzc3dvcmRTdHJlbmd0aFNldHRpbmdzPiB7XG4gICAgcmV0dXJuIHRoaXMudGVuYW50TG9naW5PcHRpb24ubGlzdCh7fSkudGhlbihyZXMgPT4ge1xuICAgICAgY29uc3QgbG9naW5PcHRpb25XaXRoUGFzc3dvcmRTZXR0aW5ncyA9IHJlcy5kYXRhLmZpbmQoKHsgdHlwZSB9KSA9PlxuICAgICAgICBbVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDLCBUZW5hbnRMb2dpbk9wdGlvblR5cGUuT0FVVEgyX0lOVEVSTkFMXS5pbmNsdWRlcyh0eXBlKVxuICAgICAgKTtcblxuICAgICAgaWYgKCFsb2dpbk9wdGlvbldpdGhQYXNzd29yZFNldHRpbmdzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW5mb3JjZVN0cmVuZ3RoOiB0cnVlLFxuICAgICAgICAgIGdyZWVuTWluTGVuZ3RoOiA4LFxuICAgICAgICAgIHN0cmVuZ3RoVmFsaWRpdHk6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBpY2sobG9naW5PcHRpb25XaXRoUGFzc3dvcmRTZXR0aW5ncywgW1xuICAgICAgICAnZW5mb3JjZVN0cmVuZ3RoJyxcbiAgICAgICAgJ2dyZWVuTWluTGVuZ3RoJyxcbiAgICAgICAgJ3N0cmVuZ3RoVmFsaWRpdHknXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzQXBwKGFwcHM6IElBcHBsaWNhdGlvbltdLCByZXF1aXJlZEFwcE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghYXBwcz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBhcHBzLnNvbWUoYXBwID0+IGFwcC5uYW1lID09PSByZXF1aXJlZEFwcE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc01hbmFnZW1lbnQoY3VycmVudFRlbmFudDogSUN1cnJlbnRUZW5hbnQpIHtcbiAgICByZXR1cm4gY3VycmVudFRlbmFudC5uYW1lID09PSB0aGlzLk1BTkFHRU1FTlQ7XG4gIH1cbn1cbiJdfQ==
@@ -3,18 +3,26 @@ import { Directive } from '@angular/core';
3
3
  import { parsePhoneNumberFromString } from 'libphonenumber-js/max';
4
4
  import * as i0 from "@angular/core";
5
5
  export class PhoneValidationDirective {
6
- constructor() {
7
- this.allowedCharactersPattern = /^[/\d\-+ ]*$/;
8
- }
9
6
  validate(control) {
10
- const valid = this.validateInternationalPhoneNumber(control);
11
- return valid ? null : { internationalPhoneNumber: true };
7
+ return validateInternationalPhoneNumber()(control);
12
8
  }
13
- validateInternationalPhoneNumber(control) {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PhoneValidationDirective, selector: "[c8yPhoneValidation]", providers: [{ provide: NG_VALIDATORS, useExisting: PhoneValidationDirective, multi: true }], ngImport: i0 }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneValidationDirective, decorators: [{
13
+ type: Directive,
14
+ args: [{
15
+ selector: '[c8yPhoneValidation]',
16
+ providers: [{ provide: NG_VALIDATORS, useExisting: PhoneValidationDirective, multi: true }]
17
+ }]
18
+ }] });
19
+ export function validateInternationalPhoneNumber() {
20
+ const allowedCharactersPattern = /^[/\d\-+ ]*$/;
21
+ return (control) => {
14
22
  let numberValid;
15
23
  try {
16
24
  const phoneNumber = parsePhoneNumberFromString(control.value);
17
- numberValid = this.allowedCharactersPattern.test(control.value) && phoneNumber.isValid();
25
+ numberValid = allowedCharactersPattern.test(control.value) && phoneNumber.isValid();
18
26
  if (numberValid && control.value !== phoneNumber.format('E.164')) {
19
27
  control.setValue(phoneNumber.format('E.164'), {
20
28
  emitEvent: false,
@@ -25,16 +33,7 @@ export class PhoneValidationDirective {
25
33
  catch (e) {
26
34
  numberValid = !control.value;
27
35
  }
28
- return numberValid;
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneValidationDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
31
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PhoneValidationDirective, selector: "[c8yPhoneValidation]", providers: [{ provide: NG_VALIDATORS, useExisting: PhoneValidationDirective, multi: true }], ngImport: i0 }); }
36
+ return numberValid ? null : { internationalPhoneNumber: true };
37
+ };
32
38
  }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PhoneValidationDirective, decorators: [{
34
- type: Directive,
35
- args: [{
36
- selector: '[c8yPhoneValidation]',
37
- providers: [{ provide: NG_VALIDATORS, useExisting: PhoneValidationDirective, multi: true }]
38
- }]
39
- }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtdmFsaWRhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Zvcm1zL3Bob25lLXZhbGlkYXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNbkUsTUFBTSxPQUFPLHdCQUF3QjtJQUpyQztRQUtFLDZCQUF3QixHQUFHLGNBQWMsQ0FBQztLQXVCM0M7SUFyQkMsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFTyxnQ0FBZ0MsQ0FBQyxPQUF3QjtRQUMvRCxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsV0FBVyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6RixJQUFJLFdBQVcsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUM1QyxTQUFTLEVBQUUsS0FBSztvQkFDaEIscUJBQXFCLEVBQUUsS0FBSztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsV0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzsrR0F2QlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsK0NBRnhCLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7OzRGQUVoRix3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUM1RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwYXJzZVBob25lTnVtYmVyRnJvbVN0cmluZyB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzL21heCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjOHlQaG9uZVZhbGlkYXRpb25dJyxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogUGhvbmVWYWxpZGF0aW9uRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9XVxufSlcbmV4cG9ydCBjbGFzcyBQaG9uZVZhbGlkYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICBhbGxvd2VkQ2hhcmFjdGVyc1BhdHRlcm4gPSAvXlsvXFxkXFwtKyBdKiQvO1xuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsIHtcbiAgICBjb25zdCB2YWxpZCA9IHRoaXMudmFsaWRhdGVJbnRlcm5hdGlvbmFsUGhvbmVOdW1iZXIoY29udHJvbCk7XG4gICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IHsgaW50ZXJuYXRpb25hbFBob25lTnVtYmVyOiB0cnVlIH07XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW50ZXJuYXRpb25hbFBob25lTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGxldCBudW1iZXJWYWxpZDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGhvbmVOdW1iZXIgPSBwYXJzZVBob25lTnVtYmVyRnJvbVN0cmluZyhjb250cm9sLnZhbHVlKTtcbiAgICAgIG51bWJlclZhbGlkID0gdGhpcy5hbGxvd2VkQ2hhcmFjdGVyc1BhdHRlcm4udGVzdChjb250cm9sLnZhbHVlKSAmJiBwaG9uZU51bWJlci5pc1ZhbGlkKCk7XG4gICAgICBpZiAobnVtYmVyVmFsaWQgJiYgY29udHJvbC52YWx1ZSAhPT0gcGhvbmVOdW1iZXIuZm9ybWF0KCdFLjE2NCcpKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUocGhvbmVOdW1iZXIuZm9ybWF0KCdFLjE2NCcpLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICBlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG51bWJlclZhbGlkID0gIWNvbnRyb2wudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudW1iZXJWYWxpZDtcbiAgfVxufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtdmFsaWRhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2Zvcm1zL3Bob25lLXZhbGlkYXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBS2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU1uRSxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLGdDQUFnQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQzsrR0FIVSx3QkFBd0I7bUdBQXhCLHdCQUF3QiwrQ0FGeEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7NEZBRWhGLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVywwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzVGOztBQU1ELE1BQU0sVUFBVSxnQ0FBZ0M7SUFDOUMsTUFBTSx3QkFBd0IsR0FBRyxjQUFjLENBQUM7SUFDaEQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsSUFBSSxXQUFXLENBQUM7UUFFaEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsMEJBQTBCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlELFdBQVcsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwRixJQUFJLFdBQVcsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUM1QyxTQUFTLEVBQUUsS0FBSztvQkFDaEIscUJBQXFCLEVBQUUsS0FBSztpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsV0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqRSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTkdfVkFMSURBVE9SUyxcbiAgQWJzdHJhY3RDb250cm9sLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0aW9uRXJyb3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGFyc2VQaG9uZU51bWJlckZyb21TdHJpbmcgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcy9tYXgnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYzh5UGhvbmVWYWxpZGF0aW9uXScsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IFBob25lVmFsaWRhdGlvbkRpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfV1cbn0pXG5leHBvcnQgY2xhc3MgUGhvbmVWYWxpZGF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWxpZGF0ZUludGVybmF0aW9uYWxQaG9uZU51bWJlcigpKGNvbnRyb2wpO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVJbnRlcm5hdGlvbmFsUGhvbmVOdW1iZXIoKTogVmFsaWRhdG9yRm4ge1xuICBjb25zdCBhbGxvd2VkQ2hhcmFjdGVyc1BhdHRlcm4gPSAvXlsvXFxkXFwtKyBdKiQvO1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBsZXQgbnVtYmVyVmFsaWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGhvbmVOdW1iZXIgPSBwYXJzZVBob25lTnVtYmVyRnJvbVN0cmluZyhjb250cm9sLnZhbHVlKTtcbiAgICAgIG51bWJlclZhbGlkID0gYWxsb3dlZENoYXJhY3RlcnNQYXR0ZXJuLnRlc3QoY29udHJvbC52YWx1ZSkgJiYgcGhvbmVOdW1iZXIuaXNWYWxpZCgpO1xuICAgICAgaWYgKG51bWJlclZhbGlkICYmIGNvbnRyb2wudmFsdWUgIT09IHBob25lTnVtYmVyLmZvcm1hdCgnRS4xNjQnKSkge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKHBob25lTnVtYmVyLmZvcm1hdCgnRS4xNjQnKSwge1xuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXG4gICAgICAgICAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBudW1iZXJWYWxpZCA9ICFjb250cm9sLnZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW1iZXJWYWxpZCA/IG51bGwgOiB7IGludGVybmF0aW9uYWxQaG9uZU51bWJlcjogdHJ1ZSB9O1xuICB9O1xufVxuIl19
@@ -16,10 +16,6 @@ export const extraRoutes = [
16
16
  {
17
17
  path: 'users/new',
18
18
  component: EmptyComponent
19
- },
20
- {
21
- path: 'tenants/new',
22
- component: EmptyComponent
23
19
  }
24
20
  ];
25
21
  export const viewContextRoutes = [];
@@ -88,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
88
84
  providers: [ScopedContextRouteService]
89
85
  }]
90
86
  }], ctorParameters: () => [{ type: i1.RouterService }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3JvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFnQixZQUFZLElBQUksY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFTLFdBQVcsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUU3RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVk7SUFDbEM7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsY0FBYztLQUMxQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztBQUM1RCxrQ0FBa0M7QUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzlDLFNBQVM7SUFDWCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzFDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDaEMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFNSCxNQUFNLE9BQU8sWUFBWTtJQUN2Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxNQUFxQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELHdHQUF3RztRQUN4RyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FBQztRQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBRXhDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQzNDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxFQUNqRCxNQUFNLENBQ1AsQ0FBQztRQUVGLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUM7U0FDcEUsQ0FBQztJQUNKLENBQUM7SUFFRDtJQUNFLG1GQUFtRjtJQUMzRSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNuQyxDQUFDOytHQTlCTyxZQUFZO2dIQUFaLFlBQVksaUJBSlIscUJBQXFCLEVBQUUsY0FBYyxhQUMxQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7Z0hBR3pDLFlBQVksYUFGWixDQUFDLHlCQUF5QixDQUFDLFlBRDVCLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWTs7NEZBR3pDLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDO29CQUNyRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckQsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dHJhT3B0aW9ucywgUm91dGVyTW9kdWxlIGFzIE5nUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVHdWFyZCB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5ndWFyZCc7XG5pbXBvcnQgeyBFbXB0eUNvbXBvbmVudCB9IGZyb20gJy4vZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFJvdXRlclRhYnNSZXNvbHZlciB9IGZyb20gJy4vcm91dGVyLXRhYnMucmVzb2x2ZXInO1xuaW1wb3J0IHsgUm91dGUsIFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlclNlcnZpY2UgfSBmcm9tICcuL3JvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2UgfSBmcm9tICcuL3Njb3BlZC1jb250ZXh0LXJvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld0NvbnRleHRTZXJ2aWNlcyB9IGZyb20gJy4vdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFSb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBwYXRoOiAndXNlcnMvbmV3JyxcbiAgICBjb21wb25lbnQ6IEVtcHR5Q29tcG9uZW50XG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGVuYW50cy9uZXcnLFxuICAgIGNvbXBvbmVudDogRW1wdHlDb21wb25lbnRcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IHZpZXdDb250ZXh0Um91dGVzOiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGZvcmluXG5mb3IgKGNvbnN0IGtleSBpbiBWaWV3Q29udGV4dCkge1xuICBjb25zdCBjb250ZXh0ID0gVmlld0NvbnRleHRba2V5XTtcbiAgaWYgKCFWaWV3Q29udGV4dFNlcnZpY2VzLmlzQXV0b1JvdXRlKGNvbnRleHQpKSB7XG4gICAgY29udGludWU7XG4gIH1cbiAgdmlld0NvbnRleHRSb3V0ZXMucHVzaCh7XG4gICAgcGF0aDogVmlld0NvbnRleHRTZXJ2aWNlcy5nZXRQYXRoKGNvbnRleHQpLFxuICAgIHJvb3RDb250ZXh0OiBjb250ZXh0LFxuICAgIGNvbXBvbmVudDogQ29udGV4dFJvdXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgIGRhdGE6IHsgY29udGV4dCwgY29udGV4dERhdGE6IHt9IH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBBIEM4WSByb3V0ZXIgaW1wbGVtZW50YXRpb24uIEl0IGltcGxlbWVudHMgc29tZSBkZWZhdWx0IHJvdXRlcyBuZWVkZWRcbiAqIGFzIHdlbGwgYXMgY29udGV4dCByb3V0ZXMuIENvbnRleHQgcm91dGVzIGFyZSB1c2VmdWwsIGlmIHlvdSB3YW50IHRvXG4gKiB1c2UgY29udGV4dCBkYXRhIG9uIGEgY2VydGFpbiB2aWV3IChlLmcuIGEgZGV2aWNlKSwgdGhlbiB0aGlzIHJvdXRlc1xuICogYXV0b21hdGljYWxseSByZXNvbHZlIHRoZSBhc3NvY2lhdGVkIG1hbmFnZWQgb2JqZWN0LlxuICpcbiAqIFlvdSBjYW4gdXNlIHRoaXMgaW4gY29tYmluYXRpb24gb2YgdGhlIEFuZ3VsYXIgZGVmYXVsdCBSb3V0ZXJNb2R1bGVcbiAqIG9yIHVzZSBvbmx5IHRoaXMgbW9kdWxlLiBDb250ZXh0IHJvdXRlcyBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlXG4gKiBIT09LX1JPVVRFUyBob29rLlxuICovXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb250ZXh0Um91dGVDb21wb25lbnQsIEVtcHR5Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW05nUm91dGVyTW9kdWxlLCBIZWFkZXJNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1Njb3BlZENvbnRleHRSb3V0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlck1vZHVsZSB7XG4gIC8qKlxuICAgKiBTYW1lIGludGVyZmFjZSBhcyBAYW5ndWxhci9yb3V0ZXIgbW9kdWxlLlxuICAgKiBTZXRzIGBpbml0aWFsTmF2aWdhdGlvbmAgYWx3YXlzIHRvIGBkaXNhYmxlZGAgYW5kIGB1c2VIYXNoYCBhbHdheXMgdG8gYHRydWVgLlxuICAgKiBAcGFyYW0gcm91dGVzIFRoZSBjb25maWd1cmVkIHJvdXRlcy5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgcm91dGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMgVGhlIG1vZHVsZSBhbmQgcHJvdmlkZXJzLlxuICAgKi9cbiAgc3RhdGljIGZvclJvb3Qocm91dGVzOiBSb3V0ZXMgPSBbXSwgY29uZmlnPzogRXh0cmFPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSb3V0ZXJNb2R1bGU+IHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgY29uZmlnID0ge307XG4gICAgfVxuICAgIC8vIGluaXRpYWxOYXZpZ2F0aW9uIGRpc2FibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBNVE0tNDQwNDcgKHJvdXRlcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBhY3R1YWwgbG9naW4pXG4gICAgY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID0gY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID8/ICdkaXNhYmxlZCc7XG4gICAgY29uZmlnLnVzZUhhc2ggPSBjb25maWcudXNlSGFzaCA/PyB0cnVlO1xuXG4gICAgY29uc3QgbmdSb3V0ZXJNb2R1bGUgPSBOZ1JvdXRlck1vZHVsZS5mb3JSb290KFxuICAgICAgWy4uLnJvdXRlcywgLi4uZXh0cmFSb3V0ZXMsIC4uLnZpZXdDb250ZXh0Um91dGVzXSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogWy4uLm5nUm91dGVyTW9kdWxlLnByb3ZpZGVycywgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZV1cbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gRGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQgaXMgaW50ZW5kZWQ6IHRvIGFsd2F5cyBoYXZlIGEgaW5zdGFuY2Ugb2YgUm91dGVyU2VydmljZS5cbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcbiAgKSB7fVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3JvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFnQixZQUFZLElBQUksY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFTLFdBQVcsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUU3RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVk7SUFDbEM7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsY0FBYztLQUMxQjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBMkIsRUFBRSxDQUFDO0FBQzVELGtDQUFrQztBQUNsQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQzlCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDOUMsU0FBUztJQUNYLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDMUMsV0FBVyxFQUFFLE9BQU87UUFDcEIsU0FBUyxFQUFFLHFCQUFxQjtRQUNoQyxXQUFXLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNoQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtRQUNsQyxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsa0JBQWtCO1NBQ3pCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQU1ILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBaUIsRUFBRSxFQUFFLE1BQXFCO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0Qsd0dBQXdHO1FBQ3hHLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLElBQUksVUFBVSxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUM7UUFFeEMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FDM0MsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLFdBQVcsRUFBRSxHQUFHLGlCQUFpQixDQUFDLEVBQ2pELE1BQU0sQ0FDUCxDQUFDO1FBRUYsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFNBQVMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSx5QkFBeUIsQ0FBQztTQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUVEO0lBQ0UsbUZBQW1GO0lBQzNFLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ25DLENBQUM7K0dBOUJPLFlBQVk7Z0hBQVosWUFBWSxpQkFKUixxQkFBcUIsRUFBRSxjQUFjLGFBQzFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWTtnSEFHekMsWUFBWSxhQUZaLENBQUMseUJBQXlCLENBQUMsWUFENUIsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZOzs0RkFHekMsWUFBWTtrQkFMeEIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxjQUFjLENBQUM7b0JBQ3JELE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO29CQUNyRCxTQUFTLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXh0cmFPcHRpb25zLCBSb3V0ZXJNb2R1bGUgYXMgTmdSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVDb21wb25lbnQgfSBmcm9tICcuL2NvbnRleHQtcm91dGUuY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRleHRSb3V0ZUd1YXJkIH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLmd1YXJkJztcbmltcG9ydCB7IEVtcHR5Q29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUm91dGVyVGFic1Jlc29sdmVyIH0gZnJvbSAnLi9yb3V0ZXItdGFicy5yZXNvbHZlcic7XG5pbXBvcnQgeyBSb3V0ZSwgVmlld0NvbnRleHQsIFZpZXdDb250ZXh0Um9vdFJvdXRlIH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHsgUm91dGVyU2VydmljZSB9IGZyb20gJy4vcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vc2NvcGVkLWNvbnRleHQtcm91dGUuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3Q29udGV4dFNlcnZpY2VzIH0gZnJvbSAnLi92aWV3LWNvbnRleHQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBleHRyYVJvdXRlczogUm91dGVbXSA9IFtcbiAge1xuICAgIHBhdGg6ICd1c2Vycy9uZXcnLFxuICAgIGNvbXBvbmVudDogRW1wdHlDb21wb25lbnRcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IHZpZXdDb250ZXh0Um91dGVzOiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGZvcmluXG5mb3IgKGNvbnN0IGtleSBpbiBWaWV3Q29udGV4dCkge1xuICBjb25zdCBjb250ZXh0ID0gVmlld0NvbnRleHRba2V5XTtcbiAgaWYgKCFWaWV3Q29udGV4dFNlcnZpY2VzLmlzQXV0b1JvdXRlKGNvbnRleHQpKSB7XG4gICAgY29udGludWU7XG4gIH1cbiAgdmlld0NvbnRleHRSb3V0ZXMucHVzaCh7XG4gICAgcGF0aDogVmlld0NvbnRleHRTZXJ2aWNlcy5nZXRQYXRoKGNvbnRleHQpLFxuICAgIHJvb3RDb250ZXh0OiBjb250ZXh0LFxuICAgIGNvbXBvbmVudDogQ29udGV4dFJvdXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgIGRhdGE6IHsgY29udGV4dCwgY29udGV4dERhdGE6IHt9IH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBBIEM4WSByb3V0ZXIgaW1wbGVtZW50YXRpb24uIEl0IGltcGxlbWVudHMgc29tZSBkZWZhdWx0IHJvdXRlcyBuZWVkZWRcbiAqIGFzIHdlbGwgYXMgY29udGV4dCByb3V0ZXMuIENvbnRleHQgcm91dGVzIGFyZSB1c2VmdWwsIGlmIHlvdSB3YW50IHRvXG4gKiB1c2UgY29udGV4dCBkYXRhIG9uIGEgY2VydGFpbiB2aWV3IChlLmcuIGEgZGV2aWNlKSwgdGhlbiB0aGlzIHJvdXRlc1xuICogYXV0b21hdGljYWxseSByZXNvbHZlIHRoZSBhc3NvY2lhdGVkIG1hbmFnZWQgb2JqZWN0LlxuICpcbiAqIFlvdSBjYW4gdXNlIHRoaXMgaW4gY29tYmluYXRpb24gb2YgdGhlIEFuZ3VsYXIgZGVmYXVsdCBSb3V0ZXJNb2R1bGVcbiAqIG9yIHVzZSBvbmx5IHRoaXMgbW9kdWxlLiBDb250ZXh0IHJvdXRlcyBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlXG4gKiBIT09LX1JPVVRFUyBob29rLlxuICovXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb250ZXh0Um91dGVDb21wb25lbnQsIEVtcHR5Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW05nUm91dGVyTW9kdWxlLCBIZWFkZXJNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1Njb3BlZENvbnRleHRSb3V0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlck1vZHVsZSB7XG4gIC8qKlxuICAgKiBTYW1lIGludGVyZmFjZSBhcyBAYW5ndWxhci9yb3V0ZXIgbW9kdWxlLlxuICAgKiBTZXRzIGBpbml0aWFsTmF2aWdhdGlvbmAgYWx3YXlzIHRvIGBkaXNhYmxlZGAgYW5kIGB1c2VIYXNoYCBhbHdheXMgdG8gYHRydWVgLlxuICAgKiBAcGFyYW0gcm91dGVzIFRoZSBjb25maWd1cmVkIHJvdXRlcy5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgcm91dGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMgVGhlIG1vZHVsZSBhbmQgcHJvdmlkZXJzLlxuICAgKi9cbiAgc3RhdGljIGZvclJvb3Qocm91dGVzOiBSb3V0ZXMgPSBbXSwgY29uZmlnPzogRXh0cmFPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSb3V0ZXJNb2R1bGU+IHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgY29uZmlnID0ge307XG4gICAgfVxuICAgIC8vIGluaXRpYWxOYXZpZ2F0aW9uIGRpc2FibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBNVE0tNDQwNDcgKHJvdXRlcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBhY3R1YWwgbG9naW4pXG4gICAgY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID0gY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID8/ICdkaXNhYmxlZCc7XG4gICAgY29uZmlnLnVzZUhhc2ggPSBjb25maWcudXNlSGFzaCA/PyB0cnVlO1xuXG4gICAgY29uc3QgbmdSb3V0ZXJNb2R1bGUgPSBOZ1JvdXRlck1vZHVsZS5mb3JSb290KFxuICAgICAgWy4uLnJvdXRlcywgLi4uZXh0cmFSb3V0ZXMsIC4uLnZpZXdDb250ZXh0Um91dGVzXSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogWy4uLm5nUm91dGVyTW9kdWxlLnByb3ZpZGVycywgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZV1cbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gRGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQgaXMgaW50ZW5kZWQ6IHRvIGFsd2F5cyBoYXZlIGEgaW5zdGFuY2Ugb2YgUm91dGVyU2VydmljZS5cbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcbiAgKSB7fVxufVxuIl19
@@ -107,7 +107,7 @@ export class UserEditComponent {
107
107
  return loginOptions.some(({ tfaStrategy = '' }) => tfaStrategy.toLowerCase() === 'totp');
108
108
  }
109
109
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserEditComponent, deps: [{ token: i1.AppStateService }, { token: i2.TranslateService }, { token: i3.BsModalService }, { token: i4.AlertService }, { token: i5.UserService }, { token: i5.TenantLoginOptionsService }, { token: i5.TenantService }], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserEditComponent, selector: "c8y-user-edit", inputs: { loading: "loading", user: "user", showProductExperienceOptions: "showProductExperienceOptions", isUsageTrackingEnabled: "isUsageTrackingEnabled", isUserEngagementPreferenceEnabled: "isUserEngagementPreferenceEnabled" }, outputs: { onUser: "onUser", onUsageTrackingChange: "onUsageTrackingChange", onUserEngagementPreferenceChange: "onUserEngagementPreferenceChange", onCancel: "onCancel" }, ngImport: i0, template: "<form #userForm=\"ngForm\" (ngSubmit)=\"userForm.form.valid && save()\">\n <div class=\"d-block p-24 p-b-0\">\n <div class=\"alert alert-warning\" role=\"alert\" *ngIf=\"userIsExternal\" translate>\n Some of the user settings are not editable here because they are managed via your\n authorization server.\n </div>\n <c8y-form-group>\n <label translate for=\"userName\">Username</label>\n <input\n id=\"userName\"\n class=\"form-control\"\n [(ngModel)]=\"user.userName\"\n name=\"userName\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [disabled]=\"user.id\"\n c8yDefaultValidation=\"user\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"displayName\">Login alias</label>\n <input\n id=\"displayName\"\n class=\"form-control\"\n [(ngModel)]=\"user.displayName\"\n name=\"displayName\"\n autocomplete=\"off\"\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe`LOCALIZE`' | translate }}\"\n [disabled]=\"userIsExternal\"\n c8yDefaultValidation=\"loginAlias\"\n />\n </c8y-form-group>\n\n <c8y-form-group [hasWarning]=\"!user.email\">\n <label translate for=\"userEmail\">Email</label>\n <input\n id=\"userEmail\"\n class=\"form-control\"\n type=\"email\"\n name=\"email\"\n [maxlength]=\"254\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [(ngModel)]=\"user.email\"\n email\n [required]=\"true\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userFirstName\">First name</label>\n <input\n id=\"userFirstName\"\n class=\"form-control\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. Joe`LOCALIZE`' | translate }}\"\n maxlength=\"50\"\n name=\"firstName\"\n [(ngModel)]=\"user.firstName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userLastName\">Last name</label>\n <input\n id=\"userLastName\"\n class=\"form-control\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. Doe`LOCALIZE`' | translate }}\"\n maxlength=\"50\"\n name=\"lastName\"\n [(ngModel)]=\"user.lastName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <c8y-form-group>\n <label translate for=\"userTelephone\">Telephone</label>\n <input\n id=\"userTelephone\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"phone\"\n maxlength=\"254\"\n [(ngModel)]=\"user.phone\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n [required]=\"isPhoneRequired\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <c8y-form-group class=\"p-t-16 separator-top\" *ngIf=\"showProductExperienceOptions\">\n <label translate>Product experience</label>\n <label class=\"c8y-switch\" for=\"productUsageTracking\">\n <input\n id=\"productUsageTracking\"\n name=\"productUsageTracking\"\n type=\"checkbox\"\n [(ngModel)]=\"isUsageTrackingEnabled\"\n />\n <span></span>\n {{ 'Enable personalized product experience tracking' | translate }}\n </label>\n <ng-container *ngIf=\"isUsageTrackingEnabled\">\n <label class=\"c8y-switch m-l-0\" for=\"userEngagementPreference\">\n <input\n id=\"userEngagementPreference\"\n name=\"userEngagementPreference\"\n type=\"checkbox\"\n [(ngModel)]=\"isUserEngagementPreferenceEnabled\"\n />\n <span></span>\n {{ 'Enable in-product information & communication' | translate }}\n </label>\n </ng-container>\n </c8y-form-group>\n\n <div class=\"form-group p-t-16 separator-top\" *ngIf=\"!userIsExternal\">\n <label class=\"control-label\">{{ 'Login options' | translate }}</label>\n <c8y-new-password (password)=\"onNewPasswordChanged($event)\"></c8y-new-password>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Set up two-factor authentication' | translate }}\"\n (click)=\"setupTotp()\"\n *ngIf=\"userCanSetupTotp && !userHasActiveTotp && isTfaEnabled\"\n >\n {{ 'Set up two-factor authentication' | translate }}\n </button>\n </div>\n\n <c8y-form-group *ngIf=\"!!(state.state$ | async).newsletter\">\n <label translate>Newsletter</label>\n <label\n title=\"{{ 'Send me information about outages, maintenance or updates.' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n name=\"newsletter\"\n [(ngModel)]=\"user.newsletter\"\n [disabled]=\"userIsExternal\"\n />\n <span></span>\n <span>\n {{ 'Send me information about outages, maintenance or updates.' | translate }}\n </span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!userForm.form.valid || userForm.form.pristine || loading\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i6.PhoneValidationDirective, selector: "[c8yPhoneValidation]" }, { kind: "directive", type: i7.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i8.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i10.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i11.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i13.NewPasswordComponent, selector: "c8y-new-password", outputs: ["password"] }, { kind: "pipe", type: i14.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i12.AsyncPipe, name: "async" }] }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserEditComponent, selector: "c8y-user-edit", inputs: { loading: "loading", user: "user", showProductExperienceOptions: "showProductExperienceOptions", isUsageTrackingEnabled: "isUsageTrackingEnabled", isUserEngagementPreferenceEnabled: "isUserEngagementPreferenceEnabled" }, outputs: { onUser: "onUser", onUsageTrackingChange: "onUsageTrackingChange", onUserEngagementPreferenceChange: "onUserEngagementPreferenceChange", onCancel: "onCancel" }, ngImport: i0, template: "<form #userForm=\"ngForm\" (ngSubmit)=\"userForm.form.valid && save()\">\n <div class=\"d-block p-24 p-b-0\">\n <div class=\"alert alert-warning\" role=\"alert\" *ngIf=\"userIsExternal\" translate>\n Some of the user settings are not editable here because they are managed via your\n authorization server.\n </div>\n <c8y-form-group>\n <label translate for=\"userName\">Username</label>\n <input\n id=\"userName\"\n class=\"form-control\"\n [(ngModel)]=\"user.userName\"\n name=\"userName\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [disabled]=\"user.id\"\n c8yDefaultValidation=\"user\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"displayName\">Login alias</label>\n <input\n id=\"displayName\"\n class=\"form-control\"\n [(ngModel)]=\"user.displayName\"\n name=\"displayName\"\n autocomplete=\"off\"\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe`LOCALIZE`' | translate }}\"\n [disabled]=\"userIsExternal\"\n c8yDefaultValidation=\"loginAlias\"\n />\n </c8y-form-group>\n\n <c8y-form-group [hasWarning]=\"!user.email\">\n <label translate for=\"userEmail\">Email</label>\n <input\n id=\"userEmail\"\n class=\"form-control\"\n type=\"email\"\n name=\"email\"\n [maxlength]=\"254\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [(ngModel)]=\"user.email\"\n email\n [required]=\"true\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userFirstName\">First name</label>\n <input\n id=\"userFirstName\"\n class=\"form-control\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. Joe`LOCALIZE`' | translate }}\"\n maxlength=\"50\"\n name=\"firstName\"\n [(ngModel)]=\"user.firstName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userLastName\">Last name</label>\n <input\n id=\"userLastName\"\n class=\"form-control\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. Doe`LOCALIZE`' | translate }}\"\n maxlength=\"50\"\n name=\"lastName\"\n [(ngModel)]=\"user.lastName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <c8y-form-group>\n <label translate for=\"userTelephone\">Telephone</label>\n <input\n id=\"userTelephone\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"phone\"\n maxlength=\"254\"\n [(ngModel)]=\"user.phone\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n [required]=\"isPhoneRequired\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <c8y-form-group class=\"p-t-16 separator-top\" *ngIf=\"showProductExperienceOptions\">\n <label translate>Product experience</label>\n <label class=\"c8y-switch\" for=\"productUsageTracking\">\n <input\n id=\"productUsageTracking\"\n name=\"productUsageTracking\"\n type=\"checkbox\"\n [(ngModel)]=\"isUsageTrackingEnabled\"\n />\n <span></span>\n {{ 'Enable personalized product experience tracking' | translate }}\n </label>\n <ng-container *ngIf=\"isUsageTrackingEnabled\">\n <label class=\"c8y-switch m-l-0\" for=\"userEngagementPreference\">\n <input\n id=\"userEngagementPreference\"\n name=\"userEngagementPreference\"\n type=\"checkbox\"\n [(ngModel)]=\"isUserEngagementPreferenceEnabled\"\n />\n <span></span>\n {{ 'Enable in-product information & communication' | translate }}\n </label>\n </ng-container>\n </c8y-form-group>\n\n <div class=\"form-group p-t-16 separator-top\" *ngIf=\"!userIsExternal\">\n <label class=\"control-label\">{{ 'Login options' | translate }}</label>\n <c8y-new-password (password)=\"onNewPasswordChanged($event)\"></c8y-new-password>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Set up two-factor authentication' | translate }}\"\n (click)=\"setupTotp()\"\n *ngIf=\"userCanSetupTotp && !userHasActiveTotp && isTfaEnabled\"\n >\n {{ 'Set up two-factor authentication' | translate }}\n </button>\n </div>\n\n <c8y-form-group *ngIf=\"!!(state.state$ | async).newsletter\">\n <label translate>Newsletter</label>\n <label\n title=\"{{ 'Send me information about outages, maintenance or updates.' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n name=\"newsletter\"\n [(ngModel)]=\"user.newsletter\"\n [disabled]=\"userIsExternal\"\n />\n <span></span>\n <span>\n {{ 'Send me information about outages, maintenance or updates.' | translate }}\n </span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!userForm.form.valid || userForm.form.pristine || loading\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i6.PhoneValidationDirective, selector: "[c8yPhoneValidation]" }, { kind: "directive", type: i7.DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i8.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i10.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i11.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i13.NewPasswordComponent, selector: "c8y-new-password", inputs: ["showChangePasswordButton", "requireStrongPassword"], outputs: ["password"] }, { kind: "pipe", type: i14.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i12.AsyncPipe, name: "async" }] }); }
111
111
  }
112
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserEditComponent, decorators: [{
113
113
  type: Component,
@@ -8,8 +8,13 @@ export class DeviceProvisionedCertificatesService {
8
8
  this.client = client;
9
9
  }
10
10
  async getDeviceProvisionedCertificates(device) {
11
- const deviceId = await this.getDeviceUserName(device);
12
- const { data } = await this.userService.detail(deviceId, { withCertificates: true });
11
+ const deviceUserName = await this.getDeviceUserName(device);
12
+ // Avoid additional requests if the device does not have a user.
13
+ // This case does not really occur in real-life scenarios, but e.g. in cypress tests only
14
+ if (!deviceUserName) {
15
+ return undefined;
16
+ }
17
+ const { data } = await this.userService.detail(deviceUserName, { withCertificates: true });
13
18
  return data.provisionedCertificates;
14
19
  }
15
20
  async getDeviceUserName(device) {
@@ -28,4 +33,4 @@ export class DeviceProvisionedCertificatesService {
28
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceProvisionedCertificatesService, decorators: [{
29
34
  type: Injectable
30
35
  }], ctorParameters: () => [{ type: i1.UserService }, { type: i1.FetchClient }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy9kZXZpY2UtcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBa0IsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkzQyxNQUFNLE9BQU8sb0NBQW9DO0lBQy9DLFlBQ1UsV0FBd0IsRUFDeEIsTUFBbUI7UUFEbkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtJQUMxQixDQUFDO0lBRUosS0FBSyxDQUFDLGdDQUFnQyxDQUNwQyxNQUFzQjtRQUV0QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTTtRQUNwQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDckIsTUFBTSxHQUFHLEdBQUcsNkJBQTZCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUMxRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzsrR0F2QlUsb0NBQW9DO21IQUFwQyxvQ0FBb0M7OzRGQUFwQyxvQ0FBb0M7a0JBRGhELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZXRjaENsaWVudCwgSU1hbmFnZWRPYmplY3QsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZSB9IGZyb20gJy4vZGV2aWNlLXRhYi1wcm92aXNpb25lZC1jZXJ0aWZpY2F0ZXMuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudFxuICApIHt9XG5cbiAgYXN5bmMgZ2V0RGV2aWNlUHJvdmlzaW9uZWRDZXJ0aWZpY2F0ZXMoXG4gICAgZGV2aWNlOiBJTWFuYWdlZE9iamVjdFxuICApOiBQcm9taXNlPFByb3Zpc2lvbmVkQ2VydGlmaWNhdGVbXSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGRldmljZUlkID0gYXdhaXQgdGhpcy5nZXREZXZpY2VVc2VyTmFtZShkZXZpY2UpO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy51c2VyU2VydmljZS5kZXRhaWwoZGV2aWNlSWQsIHsgd2l0aENlcnRpZmljYXRlczogdHJ1ZSB9KTtcbiAgICByZXR1cm4gZGF0YS5wcm92aXNpb25lZENlcnRpZmljYXRlcztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGV2aWNlVXNlck5hbWUoZGV2aWNlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBtZXRob2QgPSAnR0VUJztcbiAgICBjb25zdCB1cmwgPSBgL2ludmVudG9yeS9tYW5hZ2VkT2JqZWN0cy8ke2RldmljZS5pZH0vdXNlcmA7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5jbGllbnQuZmV0Y2godXJsLCB7IG1ldGhvZCB9KTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcbiAgICBpZiAocmVzLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihkYXRhLm1lc3NhZ2UpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS51c2VyTmFtZTtcbiAgfVxufVxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb3Zpc2lvbmVkLWNlcnRpZmljYXRlcy9kZXZpY2UtcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBa0IsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUkzQyxNQUFNLE9BQU8sb0NBQW9DO0lBQy9DLFlBQ1UsV0FBd0IsRUFDeEIsTUFBbUI7UUFEbkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtJQUMxQixDQUFDO0lBRUosS0FBSyxDQUFDLGdDQUFnQyxDQUNwQyxNQUFzQjtRQUV0QixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1RCxnRUFBZ0U7UUFDaEUseUZBQXlGO1FBQ3pGLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU07UUFDcEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLDZCQUE2QixNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDMUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7K0dBOUJVLG9DQUFvQzttSEFBcEMsb0NBQW9DOzs0RkFBcEMsb0NBQW9DO2tCQURoRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2hDbGllbnQsIElNYW5hZ2VkT2JqZWN0LCBVc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3Zpc2lvbmVkQ2VydGlmaWNhdGUgfSBmcm9tICcuL2RldmljZS10YWItcHJvdmlzaW9uZWQtY2VydGlmaWNhdGVzLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEZXZpY2VQcm92aXNpb25lZENlcnRpZmljYXRlc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGNsaWVudDogRmV0Y2hDbGllbnRcbiAgKSB7fVxuXG4gIGFzeW5jIGdldERldmljZVByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzKFxuICAgIGRldmljZTogSU1hbmFnZWRPYmplY3RcbiAgKTogUHJvbWlzZTxQcm92aXNpb25lZENlcnRpZmljYXRlW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkZXZpY2VVc2VyTmFtZSA9IGF3YWl0IHRoaXMuZ2V0RGV2aWNlVXNlck5hbWUoZGV2aWNlKTtcblxuICAgIC8vIEF2b2lkIGFkZGl0aW9uYWwgcmVxdWVzdHMgaWYgdGhlIGRldmljZSBkb2VzIG5vdCBoYXZlIGEgdXNlci5cbiAgICAvLyBUaGlzIGNhc2UgZG9lcyBub3QgcmVhbGx5IG9jY3VyIGluIHJlYWwtbGlmZSBzY2VuYXJpb3MsIGJ1dCBlLmcuIGluIGN5cHJlc3MgdGVzdHMgb25seVxuICAgIGlmICghZGV2aWNlVXNlck5hbWUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmRldGFpbChkZXZpY2VVc2VyTmFtZSwgeyB3aXRoQ2VydGlmaWNhdGVzOiB0cnVlIH0pO1xuICAgIHJldHVybiBkYXRhLnByb3Zpc2lvbmVkQ2VydGlmaWNhdGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXREZXZpY2VVc2VyTmFtZShkZXZpY2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IG1ldGhvZCA9ICdHRVQnO1xuICAgIGNvbnN0IHVybCA9IGAvaW52ZW50b3J5L21hbmFnZWRPYmplY3RzLyR7ZGV2aWNlLmlkfS91c2VyYDtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNsaWVudC5mZXRjaCh1cmwsIHsgbWV0aG9kIH0pO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuICAgIGlmIChyZXMuc3RhdHVzID49IDQwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGRhdGEubWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhLnVzZXJOYW1lO1xuICB9XG59XG4iXX0=