@c8y/ngx-components 1019.5.6 → 1019.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/core/authentication/new-password.component.d.ts +9 -3
  2. package/core/authentication/new-password.component.d.ts.map +1 -1
  3. package/core/authentication/password-check-list.component.d.ts +16 -5
  4. package/core/authentication/password-check-list.component.d.ts.map +1 -1
  5. package/core/authentication/password-strength.component.d.ts +3 -0
  6. package/core/authentication/password-strength.component.d.ts.map +1 -1
  7. package/core/data-grid/column/filtering-form-renderer.component.d.ts.map +1 -1
  8. package/core/docs/docs.service.d.ts.map +1 -1
  9. package/core/forms/validation-pattern.d.ts +2 -1
  10. package/core/forms/validation-pattern.d.ts.map +1 -1
  11. package/core/login/change-password.component.d.ts +1 -3
  12. package/core/login/change-password.component.d.ts.map +1 -1
  13. package/core/login/login.service.d.ts +2 -2
  14. package/data-broker/data-broker-subscriptions.service.d.ts +1 -0
  15. package/data-broker/data-broker-subscriptions.service.d.ts.map +1 -1
  16. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  17. package/esm2022/auth-configuration/basic-settings/login-settings.component.mjs +3 -3
  18. package/esm2022/context-dashboard/context-dashboard.component.mjs +2 -2
  19. package/esm2022/core/authentication/new-password.component.mjs +32 -15
  20. package/esm2022/core/authentication/password-check-list.component.mjs +49 -21
  21. package/esm2022/core/authentication/password-strength.component.mjs +4 -1
  22. package/esm2022/core/data-grid/column/filtering-form-renderer.component.mjs +4 -1
  23. package/esm2022/core/docs/docs.service.mjs +1 -11
  24. package/esm2022/core/forms/validation-pattern.mjs +3 -2
  25. package/esm2022/core/list-group/list-item.component.mjs +3 -3
  26. package/esm2022/core/login/change-password.component.mjs +20 -26
  27. package/esm2022/core/login/login.service.mjs +3 -3
  28. package/esm2022/core/select-modal/select-modal.component.mjs +3 -3
  29. package/esm2022/data-broker/data-broker-subscriptions.service.mjs +3 -2
  30. package/esm2022/device-profile/device-profile-list.component.mjs +3 -3
  31. package/esm2022/device-profile/device-profile.component.mjs +3 -3
  32. package/esm2022/device-profile/device-tab-profile/device-tab-profile.component.mjs +3 -3
  33. package/esm2022/ecosystem/application-properties/application-properties.component.mjs +3 -3
  34. package/esm2022/ecosystem/shared/application-card.component.mjs +2 -3
  35. package/esm2022/ecosystem/shared/ecosystem.service.mjs +2 -2
  36. package/esm2022/repository/firmware/list/firmware-details.component.mjs +3 -3
  37. package/esm2022/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.mjs +17 -9
  38. package/esm2022/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.mjs +3 -3
  39. package/esm2022/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.mjs +3 -3
  40. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -2
  41. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +1 -1
  43. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-data-broker.mjs +2 -1
  45. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-device-profile.mjs +6 -6
  47. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  48. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -3
  49. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  50. package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -2
  51. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -2
  53. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +15 -8
  55. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs +2 -2
  57. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-box-model.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs +2 -2
  59. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-lazy-phone-model.mjs.map +1 -1
  60. package/fesm2022/c8y-ngx-components.mjs +117 -76
  61. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  62. package/locales/de.po +12 -15
  63. package/locales/es.po +12 -15
  64. package/locales/fr.po +12 -15
  65. package/locales/locales.pot +28 -11
  66. package/locales/nl.po +12 -15
  67. package/locales/pl.po +12 -15
  68. package/locales/pt_BR.po +12 -15
  69. package/package.json +1 -1
  70. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts +4 -2
  71. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
  72. package/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.d.ts +79 -1
  73. package/widgets/implementations/three-d-rotation/lazy-box-model/lazy-load-box-model.d.ts.map +1 -1
  74. package/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.d.ts +76 -1
  75. package/widgets/implementations/three-d-rotation/lazy-phone-model/lazy-load-phone-model.d.ts.map +1 -1
  76. package/esm2022/widgets/implementations/three-d-rotation/box-model/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -5
  77. package/esm2022/widgets/implementations/three-d-rotation/box-model/index.mjs +0 -4
  78. package/esm2022/widgets/implementations/three-d-rotation/phone-model/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -5
  79. package/esm2022/widgets/implementations/three-d-rotation/phone-model/index.mjs +0 -4
  80. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs +0 -10
  81. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.mjs.map +0 -1
  82. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs +0 -10
  83. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.mjs.map +0 -1
  84. package/widgets/implementations/three-d-rotation/box-model/c8y-ngx-components-widgets-implementations-three-d-rotation-box-model.d.ts.map +0 -1
  85. package/widgets/implementations/three-d-rotation/box-model/index.d.ts +0 -2
  86. package/widgets/implementations/three-d-rotation/box-model/index.d.ts.map +0 -1
  87. package/widgets/implementations/three-d-rotation/phone-model/c8y-ngx-components-widgets-implementations-three-d-rotation-phone-model.d.ts.map +0 -1
  88. package/widgets/implementations/three-d-rotation/phone-model/index.d.ts +0 -2
  89. package/widgets/implementations/three-d-rotation/phone-model/index.d.ts.map +0 -1
@@ -1,19 +1,25 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
1
+ import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
2
2
  import { NewPassword } from './password.model';
3
+ import { NgModel, ValidatorFn } from '@angular/forms';
3
4
  import { LoginService } from '../login/login.service';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class NewPasswordComponent implements OnInit {
6
7
  private loginService;
8
+ private cdRef;
7
9
  password: EventEmitter<object | NewPassword>;
8
10
  model: any;
9
11
  changePassword: boolean;
10
12
  passwordEnforced: boolean;
11
13
  minlength: number;
12
- constructor(loginService: LoginService);
14
+ requirementsFulfilled: boolean;
15
+ newPasswordModel: NgModel;
16
+ set _newPasswordModel(ngModel: NgModel);
17
+ constructor(loginService: LoginService, cdRef: ChangeDetectorRef);
18
+ passwordChecklistValidator: ValidatorFn;
13
19
  ngOnInit(): void;
14
20
  newPasswordChanged(): void;
21
+ updateValidity(requirementsFulfilled: boolean): void;
15
22
  loadPasswordStrengthSettings(): Promise<void>;
16
- showPasswordStrength(): boolean;
17
23
  toggleChangePassword(): void;
18
24
  static ɵfac: i0.ɵɵFactoryDeclaration<NewPasswordComponent, never>;
19
25
  static ɵcmp: i0.ɵɵComponentDeclaration<NewPasswordComponent, "c8y-new-password", never, {}, { "password": "password"; }, never, never, false, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"new-password.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/new-password.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,EAAU,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAEtD,qBAKa,oBAAqB,YAAW,MAAM;IAOrC,OAAO,CAAC,YAAY;IANtB,QAAQ,qCAA4C;IAC9D,KAAK,EAAE,GAAG,CAAM;IAChB,cAAc,UAAS;IACvB,gBAAgB,UAAS;IACzB,SAAS,EAAE,MAAM,CAAC;gBAEE,YAAY,EAAE,YAAY;IAE9C,QAAQ;IAOR,kBAAkB;IAOZ,4BAA4B;IAIlC,oBAAoB;IAIpB,oBAAoB;yCA/BT,oBAAoB;2CAApB,oBAAoB;CAsChC"}
1
+ {"version":3,"file":"new-password.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/new-password.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,YAAY,EACZ,MAAM,EAGP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAA4B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAEtD,qBAKa,oBAAqB,YAAW,MAAM;IAkB/C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,KAAK;IAlBL,QAAQ,qCAA4C;IAC9D,KAAK,EAAE,GAAG,CAAM;IAChB,cAAc,UAAS;IACvB,gBAAgB,UAAS;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAE1B,IACI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAKrC;gBAGS,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,iBAAiB;IAGlC,0BAA0B,EAAE,WAAW,CACmC;IAE1E,QAAQ;IAOR,kBAAkB;IAOlB,cAAc,CAAC,qBAAqB,EAAE,OAAO;IAWvC,4BAA4B;IAIlC,oBAAoB;yCAtDT,oBAAoB;2CAApB,oBAAoB;CA6DhC"}
@@ -1,4 +1,4 @@
1
- import { OnInit } from '@angular/core';
1
+ import { OnInit, EventEmitter } from '@angular/core';
2
2
  import { PasswordService } from './password.service';
3
3
  import { LoginService } from '../login/login.service';
4
4
  import * as i0 from "@angular/core";
@@ -6,41 +6,52 @@ export declare class PasswordCheckListComponent implements OnInit {
6
6
  loginService: LoginService;
7
7
  private passwordStrengthChecker;
8
8
  private passwordService;
9
+ strengthEnforced: boolean;
9
10
  set password(password: string);
11
+ onRequirementsFulfilled: EventEmitter<boolean>;
10
12
  minGreenLength: number;
11
- checklist: ({
13
+ enhancedStrengthCheckList: ({
12
14
  label: "Include lowercase characters (for example, abcdef)";
13
15
  check: (password: string) => boolean;
14
16
  icon: string;
15
17
  contextualColor: string;
18
+ textColor: string;
16
19
  } | {
17
20
  label: "Include uppercase characters (for example, ABCDEF)";
18
21
  check: (password: string) => boolean;
19
22
  icon: string;
20
23
  contextualColor: string;
24
+ textColor: string;
21
25
  } | {
22
26
  label: "Include numbers (for example, 123456)";
23
27
  check: (password: string) => boolean;
24
28
  icon: string;
25
29
  contextualColor: string;
30
+ textColor: string;
26
31
  } | {
27
32
  label: "Include symbols (for example, !@#$%^)";
28
33
  check: (password: string) => boolean;
29
34
  icon: string;
30
35
  contextualColor: string;
31
- } | {
36
+ textColor: string;
37
+ })[];
38
+ basicChecklist: {
32
39
  label: "Must have at least {{length}} characters";
33
40
  check: (password: any) => boolean;
34
41
  icon: string;
35
42
  contextualColor: string;
36
- })[];
43
+ textColor: string;
44
+ }[];
45
+ combinedChecklist: any[];
37
46
  constructor(loginService: LoginService, passwordStrengthChecker: PasswordService, passwordService: PasswordService);
38
47
  ngOnInit(): Promise<void>;
39
48
  get translateParams(): {
40
49
  length: number;
41
50
  };
51
+ checkRequirement(requirement: any, password: any): any;
42
52
  onPasswordChange(password: any): void;
53
+ isPasswordValid(): boolean;
43
54
  static ɵfac: i0.ɵɵFactoryDeclaration<PasswordCheckListComponent, never>;
44
- static ɵcmp: i0.ɵɵComponentDeclaration<PasswordCheckListComponent, "c8y-password-check-list", never, { "password": { "alias": "password"; "required": false; }; }, {}, never, never, false, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<PasswordCheckListComponent, "c8y-password-check-list", never, { "strengthEnforced": { "alias": "strengthEnforced"; "required": false; }; "password": { "alias": "password"; "required": false; }; }, { "onRequirementsFulfilled": "onRequirementsFulfilled"; }, never, never, false, never>;
45
56
  }
46
57
  //# sourceMappingURL=password-check-list.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-check-list.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/password-check-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAS,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAItD,qBAKa,0BAA2B,YAAW,MAAM;IA4C9C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,eAAe;IA7CzB,IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAI5B;IAED,cAAc,SAAK;IAEnB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;SA+BP;gBAGO,YAAY,EAAE,YAAY,EACzB,uBAAuB,EAAE,eAAe,EACxC,eAAe,EAAE,eAAe;IAGpC,QAAQ;IAOd,IAAI,eAAe;;MAIlB;IAED,gBAAgB,CAAC,QAAQ,KAAA;yCA9Dd,0BAA0B;2CAA1B,0BAA0B;CAwEtC"}
1
+ {"version":3,"file":"password-check-list.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/password-check-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAiB,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAItD,qBAKa,0BAA2B,YAAW,MAAM;IA0D9C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,eAAe;IA1DzB,gBAAgB,UAAS;IAEzB,IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAI5B;IAED,uBAAuB,wBAA+B;IAEtD,cAAc,SAAK;IAEnB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;SA6BvB;IAEF,cAAc;;;;;;QAQZ;IACF,iBAAiB,QAAM;gBAGd,YAAY,EAAE,YAAY,EACzB,uBAAuB,EAAE,eAAe,EACxC,eAAe,EAAE,eAAe;IAGpC,QAAQ;IAQd,IAAI,eAAe;;MAIlB;IAED,gBAAgB,CAAC,WAAW,KAAA,EAAE,QAAQ,KAAA;IAUtC,gBAAgB,CAAC,QAAQ,KAAA;IAWzB,eAAe;yCAlGJ,0BAA0B;2CAA1B,0BAA0B;CAsGtC"}
@@ -1,6 +1,9 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { PasswordService } from './password.service';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * @deprecated: [MTM-56403] Password strength indicator removed from UI in favor of the enhanced password strength check list.
6
+ */
4
7
  export declare class PasswordStrengthComponent {
5
8
  private passwordStrengthCheckerService;
6
9
  set password(password: string);
@@ -1 +1 @@
1
- {"version":3,"file":"password-strength.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/password-strength.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;;AAErD,qBAIa,yBAAyB;IAaxB,OAAO,CAAC,8BAA8B;IAZlD,IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAK5B;IAED,QAAQ,oBAAsB;IAE9B,KAAK,MAAC;gBAEc,8BAA8B,EAAE,eAAe;yCAbxD,yBAAyB;2CAAzB,yBAAyB;CAgBrC"}
1
+ {"version":3,"file":"password-strength.component.d.ts","sourceRoot":"","sources":["../../../core/authentication/password-strength.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;;AAErD;;GAEG;AACH,qBAIa,yBAAyB;IAaxB,OAAO,CAAC,8BAA8B;IAZlD,IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAK5B;IAED,QAAQ,oBAAsB;IAE9B,KAAK,MAAC;gBAEc,8BAA8B,EAAE,eAAe;yCAbxD,yBAAyB;2CAAzB,yBAAyB;CAgBrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"filtering-form-renderer.component.d.ts","sourceRoot":"","sources":["../../../../core/data-grid/column/filtering-form-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,QAAQ,EAER,SAAS,EAGV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAgC,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;;AAEpG,qBAKa,8BAA+B,YAAW,SAAS;IAWlD,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,EAAE;IAVlD,IAAI,EAAE,yBAAyB,CAAC;IAChC,IACI,KAAK,CAAC,IAAI,EAAE,yBAAyB,EAExC;IAED,YAAY,EAAE,UAAU,GAAG,WAAW,CAAC;IACvC,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,yBAAyB,SAAM;gBAEX,QAAQ,EAAE,QAAQ,EAAU,EAAE,EAAE,iBAAiB;IAErE,WAAW;yCAbA,8BAA8B;2CAA9B,8BAA8B;CAgC1C"}
1
+ {"version":3,"file":"filtering-form-renderer.component.d.ts","sourceRoot":"","sources":["../../../../core/data-grid/column/filtering-form-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAEjB,QAAQ,EAER,SAAS,EAGV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAgC,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;;AAEpG,qBAKa,8BAA+B,YAAW,SAAS;IAY5D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,EAAE;IAZZ,IAAI,EAAE,yBAAyB,CAAC;IAChC,IACI,KAAK,CAAC,IAAI,EAAE,yBAAyB,EAExC;IAED,YAAY,EAAE,UAAU,GAAG,WAAW,CAAC;IACvC,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,yBAAyB,SAAM;gBAGrB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,iBAAiB;IAG/B,WAAW;yCAhBA,8BAA8B;2CAA9B,8BAA8B;CAsC1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"docs.service.d.ts","sourceRoot":"","sources":["../../../core/docs/docs.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,OAAO,EAA+B,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,oCAAoC,EAGrC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;;AAEnD,qBAGa,WAAY,SAAQ,oCAAoC,CAAC,OAAO,CAAC;IAM1E,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;IAEX,OAAO,CAAC,MAAM;IARhB;;OAEG;IACH,QAAQ,CAAC,qBAAqB,gCAAgC;gBAEpD,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,eAAe,EAC5B,YAAY,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACtB,OAAO,EAAE,qBAAqB;IAMhC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAKxD;;;;;;OAMG;IACH,qBAAqB,CACnB,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAuB,GACvD,MAAM;IAST,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,gBAAgB,CAAC,IAAI,KAAA;IAUrB,IAAI;IASJ,GAAG;IAuCH,SAAS,CAAC,oBAAoB,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IASvD,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,eAAe;IAMvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;yCAtIvB,WAAW;6CAAX,WAAW;CA8IvB"}
1
+ {"version":3,"file":"docs.service.d.ts","sourceRoot":"","sources":["../../../core/docs/docs.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAA+B,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,oCAAoC,EAGrC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;;AAEnD,qBAGa,WAAY,SAAQ,oCAAoC,CAAC,OAAO,CAAC;IAM1E,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,GAAG;IAEX,OAAO,CAAC,MAAM;IARhB;;OAEG;IACH,QAAQ,CAAC,qBAAqB,gCAAgC;gBAEpD,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,eAAe,EAC5B,YAAY,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACtB,OAAO,EAAE,qBAAqB;IAMhC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAKxD;;;;;;OAMG;IACH,qBAAqB,CACnB,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAuB,GACvD,MAAM;IAST,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,gBAAgB,CAAC,IAAI,KAAA;IAUrB,IAAI;IASJ,GAAG;IA8BH,SAAS,CAAC,oBAAoB,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IASvD,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,eAAe;IAMvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;yCA7HvB,WAAW;6CAAX,WAAW;CAqIvB"}
@@ -34,7 +34,8 @@ export declare class ValidationPattern {
34
34
  readonly opcuaBrowsePath: "Invalid OPC UA URI.";
35
35
  readonly password: "Password must have at least 8 characters and no more than 32 and can only contain letters, numbers and following symbols: `~!@#$%^&*()_|+-=?;:'\",.<>{}[]\\/";
36
36
  readonly passwordConfirm: "Passwords do not match.";
37
- readonly passwordStrength: "Password not good enough, password must be stronger (green).";
37
+ readonly passwordStrength: "Password is not strong enough, use a stronger password.";
38
+ readonly passwordStrengthChecklist: "Password is not strong enough, use a stronger password. Check the requirements listed on the right.";
38
39
  readonly required: "This field is required.";
39
40
  readonly tenantId: string;
40
41
  readonly urlSegment: "Slash, single or double dots and white space not allowed.";
@@ -1 +1 @@
1
- {"version":3,"file":"validation-pattern.d.ts","sourceRoot":"","sources":["../../../core/forms/validation-pattern.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oBAAY,gCAAgC;IAC1C,WAAW,aAAa;IACxB,OAAO,YAAY;IACnB,qBAAqB,WAAW;IAChC,iBAAiB,sBAAsB;IACvC,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,gBAAgB,mBAAmB;IACnC,gBAAgB,mBAAmB;CACpC;AAGD,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0Db;IAEX,MAAM,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6CnB;IAEF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM;CAIvB"}
1
+ {"version":3,"file":"validation-pattern.d.ts","sourceRoot":"","sources":["../../../core/forms/validation-pattern.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oBAAY,gCAAgC;IAC1C,WAAW,aAAa;IACxB,OAAO,YAAY;IACnB,qBAAqB,WAAW;IAChC,iBAAiB,sBAAsB;IACvC,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,mBAAmB,wBAAwB;IAC3C,gBAAgB,mBAAmB;IACnC,gBAAgB,mBAAmB;CACpC;AAGD,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6Db;IAEX,MAAM,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6CnB;IAEF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM;CAIvB"}
@@ -1,6 +1,5 @@
1
1
  import { OnInit, EventEmitter } from '@angular/core';
2
2
  import { LoginService } from './login.service';
3
- import { PasswordService } from '../authentication/password.service';
4
3
  import { ICredentials, UserService } from '@c8y/client';
5
4
  import { OptionsService } from '../common/options.service';
6
5
  import { AlertService } from '../alert/alert.service';
@@ -8,7 +7,6 @@ import * as i0 from "@angular/core";
8
7
  export declare class ChangePasswordComponent implements OnInit {
9
8
  loginService: LoginService;
10
9
  private users;
11
- private passwordStrengthCheckerService;
12
10
  private options;
13
11
  private alert;
14
12
  credentials: ICredentials;
@@ -25,7 +23,7 @@ export declare class ChangePasswordComponent implements OnInit {
25
23
  passwordStrengthEnforced: boolean;
26
24
  private TOKEN_PARAM;
27
25
  private EMAIL_PARAM;
28
- constructor(loginService: LoginService, users: UserService, passwordStrengthCheckerService: PasswordService, options: OptionsService, alert: AlertService);
26
+ constructor(loginService: LoginService, users: UserService, options: OptionsService, alert: AlertService);
29
27
  ngOnInit(): Promise<void>;
30
28
  changePassword(): Promise<void>;
31
29
  static ɵfac: i0.ɵɵFactoryDeclaration<ChangePasswordComponent, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"change-password.component.d.ts","sourceRoot":"","sources":["../../../core/login/change-password.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAiB,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAkB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAGtD,qBAKa,uBAAwB,YAAW,MAAM;IAmB3C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,8BAA8B;IACtC,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IAtBN,WAAW,EAAE,YAAY,CAAC;IACzB,YAAY,oBAAsB;IAE5C,eAAe,SAA4D;IAC3E,SAAS,UAAS;IAClB,KAAK;;;;;MAKH;IACF,aAAa,UAAS;IACtB,wBAAwB,UAAS;IAEjC,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,WAAW,CAAW;gBAGrB,YAAY,EAAE,YAAY,EACzB,KAAK,EAAE,WAAW,EAClB,8BAA8B,EAAE,eAAe,EAC/C,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY;IAGvB,QAAQ;IAOR,cAAc;yCAjCT,uBAAuB;2CAAvB,uBAAuB;CA+DnC"}
1
+ {"version":3,"file":"change-password.component.d.ts","sourceRoot":"","sources":["../../../core/login/change-password.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAiB,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAkB,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;AAGtD,qBAKa,uBAAwB,YAAW,MAAM;IAmB3C,YAAY,EAAE,YAAY;IACjC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IArBN,WAAW,EAAE,YAAY,CAAC;IACzB,YAAY,oBAAsB;IAE5C,eAAe,SAA4D;IAC3E,SAAS,UAAS;IAClB,KAAK;;;;;MAKH;IACF,aAAa,UAAS;IACtB,wBAAwB,UAAS;IAEjC,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,WAAW,CAAW;gBAGrB,YAAY,EAAE,YAAY,EACzB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY;IAGvB,QAAQ;IAOR,cAAc;yCAhCT,uBAAuB;2CAAvB,uBAAuB;CA0DnC"}
@@ -37,7 +37,7 @@ export declare class LoginService {
37
37
  automaticLoginInProgress$: BehaviorSubject<boolean>;
38
38
  ERROR_MESSAGES: {
39
39
  minlength: "Password must have at least 8 characters and no more than 32.";
40
- password_missmatch: "Password confirmation does not match.";
40
+ password_missmatch: "Passwords do not match.";
41
41
  maxlength: "Password must have at least 8 characters and no more than 32.";
42
42
  password_strength: "Your password is not strong enough. Please include numbers, lower and upper case characters";
43
43
  remote_error: "Server error occurred.";
@@ -49,7 +49,7 @@ export declare class LoginService {
49
49
  internationalPhoneNumber: "Must be a valid phone number (only digits, spaces, slashes (\"/\"), dashes (\"-\"), and plus (\"+\") allowed, for example: +49 9 876 543 210).";
50
50
  phone_number_error: "Could not update phone number.";
51
51
  pinAlreadySent: "The verification code was already sent. For a new verification code, please click on the link above.";
52
- passwordConfirm: "Password confirmation does not match.";
52
+ passwordConfirm: "Passwords do not match.";
53
53
  tfaExpired: "Two-factor authentication token expired.";
54
54
  };
55
55
  private SUCCESS_MESSAGES;
@@ -28,6 +28,7 @@ export declare class DataBrokerSubscriptionsService {
28
28
  private refreshPendingTrigger$;
29
29
  filters: {
30
30
  fragmentType: string;
31
+ pageSize: number;
31
32
  };
32
33
  /**
33
34
  * legacy enum values
@@ -1 +1 @@
1
- {"version":3,"file":"data-broker-subscriptions.service.d.ts","sourceRoot":"","sources":["../../data-broker/data-broker-subscriptions.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,WAAW,EACX,gBAAgB,EAChB,yBAAyB,EAE1B,MAAM,aAAa,CAAC;AAIrB,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,wCAAwC,CAAC;;AAOhD,qBACa,8BAA8B;IAgCvC,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,8BAA8B;IACtC,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,eAAe;IApCzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA4B;IACpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAS;IACzD;;OAEG;IACH,OAAO,CAAC,kCAAkC,CAAqC;IAC/E;;OAEG;IACH,OAAO,CAAC,sCAAsC,CAAgC;IAE9E,OAAO,CAAC,0BAA0B,CAAmC;IAErE,OAAO,CAAC,kBAAkB,CAAC;IAE3B,OAAO,CAAC,sBAAsB,CAAmC;IAEjE,OAAO;;MAEL;IAEF;;OAEG;IACH,yBAAyB,MAAC;gBAGhB,iBAAiB,EAAE,4BAA4B,EAC/C,8BAA8B,EAAE,8BAA8B,EAC9D,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,yBAAyB,EAAE,yBAAyB,EACpD,eAAe,EAAE,eAAe;IAWpC,0BAA0B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAI7D;;OAEG;IACH,wBAAwB,CAAC,IAAI,KAAA,GAAG,MAAM;IAIhC,MAAM,CAAC,YAAY,EAAE,qBAAqB;IAe1C,SAAS,CACb,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,qBAAqB,CAAC;IAYjC;;OAEG;IACG,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAStE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIxD;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM;IAI1B;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IASxD,SAAS,CAAC,EACR,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACX;;;;;KAAA,GAAG,yBAAyB;IA2E7B,OAAO,CAAC,kDAAkD;IAe1D,OAAO,CAAC,+BAA+B;YAczB,kBAAkB;IAkBhC,OAAO,CAAC,kBAAkB;yCA9Pf,8BAA8B;6CAA9B,8BAA8B;CAiQ1C"}
1
+ {"version":3,"file":"data-broker-subscriptions.service.d.ts","sourceRoot":"","sources":["../../data-broker/data-broker-subscriptions.service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,WAAW,EACX,gBAAgB,EAChB,yBAAyB,EAE1B,MAAM,aAAa,CAAC;AAIrB,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,wCAAwC,CAAC;;AAOhD,qBACa,8BAA8B;IAiCvC,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,8BAA8B;IACtC,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,eAAe;IArCzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA4B;IACpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAS;IACzD;;OAEG;IACH,OAAO,CAAC,kCAAkC,CAAqC;IAC/E;;OAEG;IACH,OAAO,CAAC,sCAAsC,CAAgC;IAE9E,OAAO,CAAC,0BAA0B,CAAmC;IAErE,OAAO,CAAC,kBAAkB,CAAC;IAE3B,OAAO,CAAC,sBAAsB,CAAmC;IAEjE,OAAO;;;MAGL;IAEF;;OAEG;IACH,yBAAyB,MAAC;gBAGhB,iBAAiB,EAAE,4BAA4B,EAC/C,8BAA8B,EAAE,8BAA8B,EAC9D,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,yBAAyB,EAAE,yBAAyB,EACpD,eAAe,EAAE,eAAe;IAWpC,0BAA0B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAI7D;;OAEG;IACH,wBAAwB,CAAC,IAAI,KAAA,GAAG,MAAM;IAIhC,MAAM,CAAC,YAAY,EAAE,qBAAqB;IAe1C,SAAS,CACb,YAAY,EAAE,qBAAqB,EACnC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,qBAAqB,CAAC;IAYjC;;OAEG;IACG,8BAA8B,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAStE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIxD;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM;IAI1B;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IASxD,SAAS,CAAC,EACR,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACX;;;;;KAAA,GAAG,yBAAyB;IA2E7B,OAAO,CAAC,kDAAkD;IAe1D,OAAO,CAAC,+BAA+B;YAczB,kBAAkB;IAkBhC,OAAO,CAAC,kBAAkB;yCA/Pf,8BAA8B;6CAA9B,8BAA8B;CAkQ1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"application-card.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/application-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAU,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EACL,YAAY,EACZ,gBAAgB,EAEhB,WAAW,EACX,cAAc,EAId,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAa,gBAAgB,EAAuB,MAAM,uBAAuB,CAAC;;AAEzF,qBAIa,wBAAyB,YAAW,MAAM;IA0CnD,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IAhD1B,gBAAgB,SAAiB;IAExB,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,UAAQ;IACd,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAsB;IACtD,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAsB;IAC/D,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mBAAmB,EAAE,gBAAgB,CAAC;IACtC,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,2BAA2B,EAAE,mBAAmB,EAAE,CAAC;IACnD,wBAAwB,EAAE,mBAAmB,CAAC;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yBAAyB,EAAE,OAAO,CAAC;IACnC,IAAI,eAAe,+CAIlB;IAED,QAAQ,CAAC,iBAAiB;;;;;;;;;;;;;MAAuB;IACjD,QAAQ,CAAC,YAAY,qBAAe;IACpC,QAAQ,CAAC,cAAc,0BAA4B;IACnD,QAAQ,CAAC,kBAAkB,yIAEzB;IACF,QAAQ,CAAC,kCAAkC,8CAEzC;gBAGQ,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,gBAAgB;IAGtC,QAAQ;IAmBd,iBAAiB;IAOjB,MAAM;IA4BN,OAAO;IAID,MAAM;IA2BN,KAAK;YA+BG,sBAAsB;yCAxKzB,wBAAwB;2CAAxB,wBAAwB;CA+LpC"}
1
+ {"version":3,"file":"application-card.component.d.ts","sourceRoot":"","sources":["../../../ecosystem/shared/application-card.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAS,MAAM,EAAU,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EACL,YAAY,EACZ,gBAAgB,EAEhB,WAAW,EACX,cAAc,EAId,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAa,gBAAgB,EAAuB,MAAM,uBAAuB,CAAC;;AAEzF,qBAIa,wBAAyB,YAAW,MAAM;IA0CnD,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IAhD1B,gBAAgB,SAAiB;IAExB,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,UAAQ;IACd,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAAsB;IACtD,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,CAAsB;IAC/D,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mBAAmB,EAAE,gBAAgB,CAAC;IACtC,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,2BAA2B,EAAE,mBAAmB,EAAE,CAAC;IACnD,wBAAwB,EAAE,mBAAmB,CAAC;IAC9C,aAAa,EAAE,OAAO,CAAC;IACvB,yBAAyB,EAAE,OAAO,CAAC;IACnC,IAAI,eAAe,+CAIlB;IAED,QAAQ,CAAC,iBAAiB;;;;;;;;;;;;;MAAuB;IACjD,QAAQ,CAAC,YAAY,qBAAe;IACpC,QAAQ,CAAC,cAAc,0BAA4B;IACnD,QAAQ,CAAC,kBAAkB,yIAEzB;IACF,QAAQ,CAAC,kCAAkC,8CAEzC;gBAGQ,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,gBAAgB;IAGtC,QAAQ;IAmBd,iBAAiB;IAIjB,MAAM;IA4BN,OAAO;IAID,MAAM;IA2BN,KAAK;YA+BG,sBAAsB;yCArKzB,wBAAwB;2CAAxB,wBAAwB;CA4LpC"}
@@ -51,12 +51,12 @@ export class LoginSettingsComponent {
51
51
  }
52
52
  }
53
53
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginSettingsComponent, deps: [{ token: i1.TenantUiService }], target: i0.ɵɵFactoryTarget.Component }); }
54
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoginSettingsComponent, selector: "c8y-login-settings", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong (green)' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoginSettingsComponent, selector: "c8y-login-settings", inputs: { authConfiguration: "authConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidationDirective, selector: "[max]", inputs: ["max"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
55
55
  }
56
56
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginSettingsComponent, decorators: [{
57
57
  type: Component,
58
- args: [{ selector: 'c8y-login-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong (green)' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n" }]
58
+ args: [{ selector: 'c8y-login-settings', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"card-block separator-top overflow-auto\" *ngIf=\"authConfiguration\">\n <div class=\"col-sm-2\">\n <div class=\"h4 text-normal text-right text-left-xs\">{{ 'Login settings' | translate }}</div>\n </div>\n\n <div class=\"col-sm-9\">\n <div class=\"row m-b-8\">\n <c8y-form-group class=\"col-sm-6\">\n <label>\n {{ 'Preferred login mode' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ PREFERRED_LOGIN_MODE_POPOVER | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n [attr.aria-label]=\"'Auth type' | translate\"\n class=\"form-control\"\n id=\"preferredLoginOptionType\"\n name=\"preferredLoginOptionType\"\n [(ngModel)]=\"authConfiguration.preferredLoginOptionType\"\n >\n <option value=\"{{ tenantLoginOptionTypeEnum.BASIC }}\" translate>Basic Auth</option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2_INTERNAL }}\" translate>\n OAI-Secure\n </option>\n <option value=\"{{ tenantLoginOptionTypeEnum.OAUTH2 }}\" [disabled]=\"!isOauth2\" translate>\n Single sign-on redirect\n </option>\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password validity limit' | translate }}\">\n {{ 'Password validity limit' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordLimitValidity\"\n ></button>\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n name=\"passwordLimitValidity\"\n class=\"form-control text-right\"\n [(ngModel)]=\"passwordLimitValidity\"\n min=\"0\"\n max=\"999999\"\n step=\"1\"\n required\n [disabled]=\"systemPasswordLimitValidity\"\n />\n <span class=\"input-group-addon\" translate>days</span>\n </div>\n <p class=\"help-block\">\n {{ 'Default: 0 (unlimited validity)' | translate }}\n </p>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label title=\"{{ 'Password strength' | translate }}\">\n {{ 'Password strength' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ ENFORCED_BY_PLATFORM_POPOVER | translate }}\"\n placement=\"bottom\"\n triggers=\"focus\"\n *ngIf=\"systemPasswordEnforceStrength\"\n ></button>\n </label>\n <div>\n <label\n title=\"{{ 'Enforce that all passwords are strong' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n type=\"checkbox\"\n name=\"passwordEnforceStrength\"\n data-cy=\"c8y-form-group--password-enforce-toggle-btn\"\n [(ngModel)]=\"passwordEnforceStrength\"\n [disabled]=\"systemPasswordEnforceStrength\"\n />\n <span></span>\n <span>{{ 'Enforce strong passwords (green)' | translate }}</span>\n </label>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n</div>\n" }]
59
59
  }], ctorParameters: function () { return [{ type: i1.TenantUiService }]; }, propDecorators: { authConfiguration: [{
60
60
  type: Input
61
61
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2Jhc2ljLXNldHRpbmdzL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9iYXNpYy1zZXR0aW5ncy9sb2dpbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFPcEQsTUFBTSxPQUFPLHNCQUFzQjtJQWlCakMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBaEJwRCxpQ0FBNEIsR0FBRyxPQUFPLENBQ3BDLDBYQUEwWCxDQUMzWCxDQUFDO1FBQ0YsaUNBQTRCLEdBQUcsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFNekYsOEJBQXlCLEdBQUcscUJBQXFCLENBQUM7UUFFMUMsc0JBQWlCLEdBQUcsVUFBVSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBQ3RDLGlDQUE0QixHQUFHLG1CQUFtQixDQUFDO1FBQ25ELGlDQUE0QixHQUFHLGtCQUFrQixDQUFDO0lBRUgsQ0FBQztJQUV4RCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtZQUN2RSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3hFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUM5QixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsSUFBSSwyQkFBMkI7UUFDN0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQywyQkFBMkIsS0FBSyxJQUFJO1lBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCO1lBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxJQUFJLHFCQUFxQixDQUFDLEtBQUs7UUFDN0IsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEtBQUssSUFBSSxFQUFFO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQy9GO0lBQ0gsQ0FBQztJQUVELElBQUksNkJBQTZCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDakUsSUFBSSxDQUFDLDRCQUE0QixDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLDZCQUE2QjtZQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QjtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDMUQsSUFBSSxDQUFDLDRCQUE0QixDQUNsQyxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksdUJBQXVCLENBQUMsS0FBSztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQzFELElBQUksQ0FBQyw0QkFBNEIsQ0FDbEMsR0FBRyxLQUFLLENBQUM7U0FDWDtJQUNILENBQUM7K0dBL0RVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG1JQ1puQyxraUlBNEdBLGs4RkRsR2lCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzs0RkFFeEQsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQixpQkFFZixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztzR0FTbkUsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0aENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2F1dGgtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRlbmFudExvZ2luT3B0aW9uVHlwZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpblNldHRpbmdzQ29tcG9uZW50IHtcbiAgUFJFRkVSUkVEX0xPR0lOX01PREVfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ01haW4gZGlmZmVyZW5jZSBpcyB0aGUgc3RvcmFnZSBvZiB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uIFdpdGggQmFzaWMgQXV0aCwgaXQgaXMgc2F2ZWQgaW4gYSBzZXNzaW9uIHN0b3JhZ2UgYW5kIHdpdGggT0FJLVNlY3VyZSBpbiBhIEh0dHBPbmx5IGNvb2tpZS4gT0FJLVNlY3VyZSBncmFudCBpcyByZWNvbW1lbmRlZCBhcyB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gaXMgbm90IGFjY2Vzc2libGUgdmlhIEphdmFTY3JpcHQuIFNpbmdsZSBzaWduLW9uIHJlZGlyZWN0IGFsbG93cyBhIHVzZXIgdG8gbG9naW4gd2l0aCBhIHNpbmdsZSAzcmQtcGFydHkgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgdXNpbmcgdGhlIE9BdXRoMiBwcm90b2NvbC4nXG4gICk7XG4gIEVORk9SQ0VEX0JZX1BMQVRGT1JNX1BPUE9WRVIgPSBnZXR0ZXh0KCdUaGUgc2V0dGluZyBpcyBlbmZvcmNlZCBvbiB0aGUgcGxhdGZvcm0gbGV2ZWwuJyk7XG5cbiAgQElucHV0KClcbiAgYXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uO1xuXG4gIGlzT2F1dGgyOiBib29sZWFuO1xuICB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtID0gVGVuYW50TG9naW5PcHRpb25UeXBlO1xuXG4gIHByaXZhdGUgUEFTU1dPUkRfQ0FURUdPUlkgPSAncGFzc3dvcmQnO1xuICBwcml2YXRlIExJTUlUX1ZBTElESVRZX0tFWSA9ICdsaW1pdC52YWxpZGl0eSc7XG4gIHByaXZhdGUgVEVOQU5UX1NUUkVOR1RIX1ZBTElESVRZX0tFWSA9ICdzdHJlbmd0aC52YWxpZGl0eSc7XG4gIHByaXZhdGUgU1lTVEVNX1NUUkVOR1RIX1ZBTElESVRZX0tFWSA9ICdlbmZvcmNlLnN0cmVuZ3RoJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbmFudFVpU2VydmljZTogVGVuYW50VWlTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hdXRoQ29uZmlndXJhdGlvbiAmJiBjaGFuZ2VzLmF1dGhDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pc09hdXRoMiA9ICEhY2hhbmdlcy5hdXRoQ29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWUubG9naW5PcHRpb25zLmZpbmQoXG4gICAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmlzT2F1dGgyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzeXN0ZW1QYXNzd29yZExpbWl0VmFsaWRpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aENvbmZpZ3VyYXRpb24uc3lzdGVtT3B0aW9uc1t0aGlzLlBBU1NXT1JEX0NBVEVHT1JZXVt0aGlzLkxJTUlUX1ZBTElESVRZX0tFWV07XG4gIH1cblxuICBnZXQgcGFzc3dvcmRMaW1pdFZhbGlkaXR5KCkge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eSAhPT0gbnVsbFxuICAgICAgPyB0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eVxuICAgICAgOiB0aGlzLmF1dGhDb25maWd1cmF0aW9uLnRlbmFudE9wdGlvbnNbdGhpcy5QQVNTV09SRF9DQVRFR09SWV1bdGhpcy5MSU1JVF9WQUxJRElUWV9LRVldO1xuICB9XG5cbiAgc2V0IHBhc3N3b3JkTGltaXRWYWxpZGl0eSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5hdXRoQ29uZmlndXJhdGlvbi50ZW5hbnRPcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW3RoaXMuTElNSVRfVkFMSURJVFlfS0VZXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlndXJhdGlvbi5zeXN0ZW1PcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW1xuICAgICAgdGhpcy5TWVNURU1fU1RSRU5HVEhfVkFMSURJVFlfS0VZXG4gICAgXTtcbiAgfVxuXG4gIGdldCBwYXNzd29yZEVuZm9yY2VTdHJlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFxuICAgICAgPyB0aGlzLnN5c3RlbVBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoXG4gICAgICA6IHRoaXMuYXV0aENvbmZpZ3VyYXRpb24udGVuYW50T3B0aW9uc1t0aGlzLlBBU1NXT1JEX0NBVEVHT1JZXVtcbiAgICAgICAgICB0aGlzLlRFTkFOVF9TVFJFTkdUSF9WQUxJRElUWV9LRVlcbiAgICAgICAgXTtcbiAgfVxuXG4gIHNldCBwYXNzd29yZEVuZm9yY2VTdHJlbmd0aCh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5zeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aCkge1xuICAgICAgdGhpcy5hdXRoQ29uZmlndXJhdGlvbi50ZW5hbnRPcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW1xuICAgICAgICB0aGlzLlRFTkFOVF9TVFJFTkdUSF9WQUxJRElUWV9LRVlcbiAgICAgIF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHNlcGFyYXRvci10b3Agb3ZlcmZsb3ctYXV0b1wiICpuZ0lmPVwiYXV0aENvbmZpZ3VyYXRpb25cIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbm9ybWFsIHRleHQtcmlnaHQgdGV4dC1sZWZ0LXhzXCI+e3sgJ0xvZ2luIHNldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG0tYi04XCI+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICA8bGFiZWw+XG4gICAgICAgICAge3sgJ1ByZWZlcnJlZCBsb2dpbiBtb2RlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcG9wb3Zlcj1cInt7IFBSRUZFUlJFRF9MT0dJTl9NT0RFX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBdXRoIHR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGlkPVwicHJlZmVycmVkTG9naW5PcHRpb25UeXBlXCJcbiAgICAgICAgICAgIG5hbWU9XCJwcmVmZXJyZWRMb2dpbk9wdGlvblR5cGVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdXRoQ29uZmlndXJhdGlvbi5wcmVmZXJyZWRMb2dpbk9wdGlvblR5cGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ7eyB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtLkJBU0lDIH19XCIgdHJhbnNsYXRlPkJhc2ljIEF1dGg8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ7eyB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtLk9BVVRIMl9JTlRFUk5BTCB9fVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgT0FJLVNlY3VyZVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwie3sgdGVuYW50TG9naW5PcHRpb25UeXBlRW51bS5PQVVUSDIgfX1cIiBbZGlzYWJsZWRdPVwiIWlzT2F1dGgyXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBTaW5nbGUgc2lnbi1vbiByZWRpcmVjdFxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbCB0aXRsZT1cInt7ICdQYXNzd29yZCB2YWxpZGl0eSBsaW1pdCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgIHt7ICdQYXNzd29yZCB2YWxpZGl0eSBsaW1pdCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgRU5GT1JDRURfQllfUExBVEZPUk1fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAqbmdJZj1cInN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtcmlnaHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBtYXg9XCI5OTk5OTlcIlxuICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzeXN0ZW1QYXNzd29yZExpbWl0VmFsaWRpdHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIiB0cmFuc2xhdGU+ZGF5czwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgIHt7ICdEZWZhdWx0OiAwICh1bmxpbWl0ZWQgdmFsaWRpdHkpJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnUGFzc3dvcmQgc3RyZW5ndGgnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICB7eyAnUGFzc3dvcmQgc3RyZW5ndGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IEVORk9SQ0VEX0JZX1BMQVRGT1JNX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0VuZm9yY2UgdGhhdCBhbGwgcGFzc3dvcmRzIGFyZSBzdHJvbmcgKGdyZWVuKScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2hcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZEVuZm9yY2VTdHJlbmd0aFwiXG4gICAgICAgICAgICAgICAgZGF0YS1jeT1cImM4eS1mb3JtLWdyb3VwLS1wYXNzd29yZC1lbmZvcmNlLXRvZ2dsZS1idG5cIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicGFzc3dvcmRFbmZvcmNlU3RyZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ0VuZm9yY2Ugc3Ryb25nIHBhc3N3b3JkcyAoZ3JlZW4pJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL2Jhc2ljLXNldHRpbmdzL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9iYXNpYy1zZXR0aW5ncy9sb2dpbi1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFPcEQsTUFBTSxPQUFPLHNCQUFzQjtJQWlCakMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBaEJwRCxpQ0FBNEIsR0FBRyxPQUFPLENBQ3BDLDBYQUEwWCxDQUMzWCxDQUFDO1FBQ0YsaUNBQTRCLEdBQUcsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7UUFNekYsOEJBQXlCLEdBQUcscUJBQXFCLENBQUM7UUFFMUMsc0JBQWlCLEdBQUcsVUFBVSxDQUFDO1FBQy9CLHVCQUFrQixHQUFHLGdCQUFnQixDQUFDO1FBQ3RDLGlDQUE0QixHQUFHLG1CQUFtQixDQUFDO1FBQ25ELGlDQUE0QixHQUFHLGtCQUFrQixDQUFDO0lBRUgsQ0FBQztJQUV4RCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtZQUN2RSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3hFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUM5QixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsSUFBSSwyQkFBMkI7UUFDN0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLElBQUksQ0FBQywyQkFBMkIsS0FBSyxJQUFJO1lBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCO1lBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxJQUFJLHFCQUFxQixDQUFDLEtBQUs7UUFDN0IsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEtBQUssSUFBSSxFQUFFO1lBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQy9GO0lBQ0gsQ0FBQztJQUVELElBQUksNkJBQTZCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDakUsSUFBSSxDQUFDLDRCQUE0QixDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLDZCQUE2QjtZQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLDZCQUE2QjtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FDMUQsSUFBSSxDQUFDLDRCQUE0QixDQUNsQyxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksdUJBQXVCLENBQUMsS0FBSztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQzFELElBQUksQ0FBQyw0QkFBNEIsQ0FDbEMsR0FBRyxLQUFLLENBQUM7U0FDWDtJQUNILENBQUM7K0dBL0RVLHNCQUFzQjttR0FBdEIsc0JBQXNCLG1JQ1puQywwaElBNEdBLGs4RkRsR2lCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzs0RkFFeEQsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG9CQUFvQixpQkFFZixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztzR0FTbkUsaUJBQWlCO3NCQURoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0aENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2F1dGgtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBUZW5hbnRVaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRlbmFudExvZ2luT3B0aW9uVHlwZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxvZ2luLXNldHRpbmdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBMb2dpblNldHRpbmdzQ29tcG9uZW50IHtcbiAgUFJFRkVSUkVEX0xPR0lOX01PREVfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ01haW4gZGlmZmVyZW5jZSBpcyB0aGUgc3RvcmFnZSBvZiB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uIFdpdGggQmFzaWMgQXV0aCwgaXQgaXMgc2F2ZWQgaW4gYSBzZXNzaW9uIHN0b3JhZ2UgYW5kIHdpdGggT0FJLVNlY3VyZSBpbiBhIEh0dHBPbmx5IGNvb2tpZS4gT0FJLVNlY3VyZSBncmFudCBpcyByZWNvbW1lbmRlZCBhcyB0aGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gaXMgbm90IGFjY2Vzc2libGUgdmlhIEphdmFTY3JpcHQuIFNpbmdsZSBzaWduLW9uIHJlZGlyZWN0IGFsbG93cyBhIHVzZXIgdG8gbG9naW4gd2l0aCBhIHNpbmdsZSAzcmQtcGFydHkgYXV0aG9yaXphdGlvbiBzZXJ2ZXIgdXNpbmcgdGhlIE9BdXRoMiBwcm90b2NvbC4nXG4gICk7XG4gIEVORk9SQ0VEX0JZX1BMQVRGT1JNX1BPUE9WRVIgPSBnZXR0ZXh0KCdUaGUgc2V0dGluZyBpcyBlbmZvcmNlZCBvbiB0aGUgcGxhdGZvcm0gbGV2ZWwuJyk7XG5cbiAgQElucHV0KClcbiAgYXV0aENvbmZpZ3VyYXRpb246IEF1dGhDb25maWd1cmF0aW9uO1xuXG4gIGlzT2F1dGgyOiBib29sZWFuO1xuICB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtID0gVGVuYW50TG9naW5PcHRpb25UeXBlO1xuXG4gIHByaXZhdGUgUEFTU1dPUkRfQ0FURUdPUlkgPSAncGFzc3dvcmQnO1xuICBwcml2YXRlIExJTUlUX1ZBTElESVRZX0tFWSA9ICdsaW1pdC52YWxpZGl0eSc7XG4gIHByaXZhdGUgVEVOQU5UX1NUUkVOR1RIX1ZBTElESVRZX0tFWSA9ICdzdHJlbmd0aC52YWxpZGl0eSc7XG4gIHByaXZhdGUgU1lTVEVNX1NUUkVOR1RIX1ZBTElESVRZX0tFWSA9ICdlbmZvcmNlLnN0cmVuZ3RoJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbmFudFVpU2VydmljZTogVGVuYW50VWlTZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hdXRoQ29uZmlndXJhdGlvbiAmJiBjaGFuZ2VzLmF1dGhDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pc09hdXRoMiA9ICEhY2hhbmdlcy5hdXRoQ29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWUubG9naW5PcHRpb25zLmZpbmQoXG4gICAgICAgIHRoaXMudGVuYW50VWlTZXJ2aWNlLmlzT2F1dGgyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzeXN0ZW1QYXNzd29yZExpbWl0VmFsaWRpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aENvbmZpZ3VyYXRpb24uc3lzdGVtT3B0aW9uc1t0aGlzLlBBU1NXT1JEX0NBVEVHT1JZXVt0aGlzLkxJTUlUX1ZBTElESVRZX0tFWV07XG4gIH1cblxuICBnZXQgcGFzc3dvcmRMaW1pdFZhbGlkaXR5KCkge1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eSAhPT0gbnVsbFxuICAgICAgPyB0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eVxuICAgICAgOiB0aGlzLmF1dGhDb25maWd1cmF0aW9uLnRlbmFudE9wdGlvbnNbdGhpcy5QQVNTV09SRF9DQVRFR09SWV1bdGhpcy5MSU1JVF9WQUxJRElUWV9LRVldO1xuICB9XG5cbiAgc2V0IHBhc3N3b3JkTGltaXRWYWxpZGl0eSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLnN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5hdXRoQ29uZmlndXJhdGlvbi50ZW5hbnRPcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW3RoaXMuTElNSVRfVkFMSURJVFlfS0VZXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoQ29uZmlndXJhdGlvbi5zeXN0ZW1PcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW1xuICAgICAgdGhpcy5TWVNURU1fU1RSRU5HVEhfVkFMSURJVFlfS0VZXG4gICAgXTtcbiAgfVxuXG4gIGdldCBwYXNzd29yZEVuZm9yY2VTdHJlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFxuICAgICAgPyB0aGlzLnN5c3RlbVBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoXG4gICAgICA6IHRoaXMuYXV0aENvbmZpZ3VyYXRpb24udGVuYW50T3B0aW9uc1t0aGlzLlBBU1NXT1JEX0NBVEVHT1JZXVtcbiAgICAgICAgICB0aGlzLlRFTkFOVF9TVFJFTkdUSF9WQUxJRElUWV9LRVlcbiAgICAgICAgXTtcbiAgfVxuXG4gIHNldCBwYXNzd29yZEVuZm9yY2VTdHJlbmd0aCh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5zeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aCkge1xuICAgICAgdGhpcy5hdXRoQ29uZmlndXJhdGlvbi50ZW5hbnRPcHRpb25zW3RoaXMuUEFTU1dPUkRfQ0FURUdPUlldW1xuICAgICAgICB0aGlzLlRFTkFOVF9TVFJFTkdUSF9WQUxJRElUWV9LRVlcbiAgICAgIF0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHNlcGFyYXRvci10b3Agb3ZlcmZsb3ctYXV0b1wiICpuZ0lmPVwiYXV0aENvbmZpZ3VyYXRpb25cIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1zbS0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbm9ybWFsIHRleHQtcmlnaHQgdGV4dC1sZWZ0LXhzXCI+e3sgJ0xvZ2luIHNldHRpbmdzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG0tYi04XCI+XG4gICAgICA8Yzh5LWZvcm0tZ3JvdXAgY2xhc3M9XCJjb2wtc20tNlwiPlxuICAgICAgICA8bGFiZWw+XG4gICAgICAgICAge3sgJ1ByZWZlcnJlZCBsb2dpbiBtb2RlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgcG9wb3Zlcj1cInt7IFBSRUZFUlJFRF9MT0dJTl9NT0RFX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjOHktc2VsZWN0LXdyYXBwZXJcIj5cbiAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBdXRoIHR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGlkPVwicHJlZmVycmVkTG9naW5PcHRpb25UeXBlXCJcbiAgICAgICAgICAgIG5hbWU9XCJwcmVmZXJyZWRMb2dpbk9wdGlvblR5cGVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJhdXRoQ29uZmlndXJhdGlvbi5wcmVmZXJyZWRMb2dpbk9wdGlvblR5cGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ7eyB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtLkJBU0lDIH19XCIgdHJhbnNsYXRlPkJhc2ljIEF1dGg8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ7eyB0ZW5hbnRMb2dpbk9wdGlvblR5cGVFbnVtLk9BVVRIMl9JTlRFUk5BTCB9fVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgT0FJLVNlY3VyZVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwie3sgdGVuYW50TG9naW5PcHRpb25UeXBlRW51bS5PQVVUSDIgfX1cIiBbZGlzYWJsZWRdPVwiIWlzT2F1dGgyXCIgdHJhbnNsYXRlPlxuICAgICAgICAgICAgICBTaW5nbGUgc2lnbi1vbiByZWRpcmVjdFxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgIDxsYWJlbCB0aXRsZT1cInt7ICdQYXNzd29yZCB2YWxpZGl0eSBsaW1pdCcgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgIHt7ICdQYXNzd29yZCB2YWxpZGl0eSBsaW1pdCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBwb3BvdmVyPVwie3sgRU5GT1JDRURfQllfUExBVEZPUk1fUE9QT1ZFUiB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAqbmdJZj1cInN5c3RlbVBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtcmlnaHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkTGltaXRWYWxpZGl0eVwiXG4gICAgICAgICAgICAgIG1pbj1cIjBcIlxuICAgICAgICAgICAgICBtYXg9XCI5OTk5OTlcIlxuICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzeXN0ZW1QYXNzd29yZExpbWl0VmFsaWRpdHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb25cIiB0cmFuc2xhdGU+ZGF5czwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cImhlbHAtYmxvY2tcIj5cbiAgICAgICAgICAgIHt7ICdEZWZhdWx0OiAwICh1bmxpbWl0ZWQgdmFsaWRpdHkpJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICA8bGFiZWwgdGl0bGU9XCJ7eyAnUGFzc3dvcmQgc3RyZW5ndGgnIHwgdHJhbnNsYXRlIH19XCI+XG4gICAgICAgICAgICB7eyAnUGFzc3dvcmQgc3RyZW5ndGgnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7IEVORk9SQ0VEX0JZX1BMQVRGT1JNX1BPUE9WRVIgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzeXN0ZW1QYXNzd29yZEVuZm9yY2VTdHJlbmd0aFwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0VuZm9yY2UgdGhhdCBhbGwgcGFzc3dvcmRzIGFyZSBzdHJvbmcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRFbmZvcmNlU3RyZW5ndGhcIlxuICAgICAgICAgICAgICAgIGRhdGEtY3k9XCJjOHktZm9ybS1ncm91cC0tcGFzc3dvcmQtZW5mb3JjZS10b2dnbGUtYnRuXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkRW5mb3JjZVN0cmVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3lzdGVtUGFzc3dvcmRFbmZvcmNlU3RyZW5ndGhcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7ICdFbmZvcmNlIHN0cm9uZyBwYXNzd29yZHMgKGdyZWVuKScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=