ng-easycommerce-v18 0.6.39 → 0.6.40

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.
@@ -28,7 +28,7 @@ export class UserPortalEcComponent {
28
28
  ];
29
29
  constructor() {
30
30
  this._profileService.getProfile().subscribe(profile => {
31
- this.dataProfile = profile.generalData;
31
+ this.dataProfile = profile?.generalData ?? {};
32
32
  });
33
33
  }
34
34
  // <-- Añadir el OnInit para leer la URL
@@ -57,10 +57,10 @@ export class UserPortalEcComponent {
57
57
  : this._authService.resolveHomeNavigation(() => this._router.navigateByUrl(path));
58
58
  }
59
59
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPortalEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UserPortalEcComponent, isStandalone: true, selector: "app-user-portal-ec", ngImport: i0, template: "<section class=\"user-portal\" id=\"userPortalEcComponent\">\n <div class=\"container py-4\">\n <div class=\"row g-4\">\n\n <!-- Sidebar -->\n <div class=\"col-12 col-md-3\">\n <div class=\"user-portal__sidebar\">\n <div class=\"user-portal__user-info\">\n <h4 class=\"user-name\">{{ dataProfile?.firstName }} {{ dataProfile?.lastName }}</h4>\n <p class=\"user-email\">{{ dataProfile?.email }}</p>\n </div>\n <nav class=\"user-portal__nav\">\n @for(item of menuItems; track item.key) {\n @if(item.key !== 'documents' || orderDocumentsVisibility.showOrderDocuments()) {\n <button type=\"button\"\n class=\"user-portal__nav-item\"\n [class.active]=\"activeSection === item.key\"\n (click)=\"setSection(item.key)\">\n <i class=\"bi {{ item.icon }} user-portal__nav-icon\"></i>\n <span>{{ item.labelKey | translate }}</span>\n </button>\n }\n }\n </nav>\n <button type=\"button\" class=\"user-portal__logout\" (click)=\"logout()\">\n <i class=\"bi bi-box-arrow-right me-2\"></i>\n {{ 'user-portal.logout' | translate }}\n </button>\n </div>\n </div>\n\n <!-- Content -->\n <div class=\"col-12 col-md-9\">\n <div class=\"user-portal__content\">\n @switch (activeSection) {\n @case ('orders') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.orders' | translate }}</h4>\n <app-orders-ec></app-orders-ec>\n }\n @case ('profile') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.profile' | translate }}</h4>\n <app-user-profile-ec></app-user-profile-ec>\n }\n @case ('addresses') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.addresses' | translate }}</h4>\n <app-user-addresses-ec></app-user-addresses-ec>\n }\n @case ('documents') {\n @if(orderDocumentsVisibility.showOrderDocuments()) {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.documents' | translate }}</h4>\n <app-user-documents-ec></app-user-documents-ec>\n }\n }\n @case ('security') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.security' | translate }}</h4>\n <app-user-security-ec></app-user-security-ec>\n }\n }\n </div>\n </div>\n\n </div>\n </div>\n</section>\n", styles: ["@charset \"UTF-8\";:host{display:block}.user-portal__sidebar{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column}.user-portal__nav{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.user-portal__nav-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem 1rem;border:none;background:transparent;border-radius:.5rem;color:var(--ec-text, #374151);font-size:.9rem;font-weight:500;text-align:left;cursor:pointer;transition:background .15s,color .15s}.user-portal__nav-item:hover{background:var(--ec-primary-light, #eef2ff);color:var(--ec-primary, #577af3)}.user-portal__nav-item.active{background:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}.user-portal__nav-icon{font-size:1.1rem;flex-shrink:0}.user-portal__logout{display:flex;align-items:center;width:100%;padding:.75rem 1.5rem;border:none;border-top:1px solid var(--ec-border, #e5e7eb);background:transparent;color:var(--ec-danger, #dc2626);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s}.user-portal__logout:hover{background:var(--ec-danger-bg, #fee2e2)}.user-portal__content{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;padding:1.5rem;min-height:400px}.user-portal__section-title{font-size:1.1rem;font-weight:600;color:var(--ec-text, #111827);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--ec-border, #e5e7eb)}:host ::ng-deep .portal-spinner{color:var(--ec-primary, #577af3)!important}:host ::ng-deep .portal-btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;border:1px solid transparent;border-radius:var(--ec-button-radius, .5rem);font-size:.95rem;line-height:1.5;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}:host ::ng-deep .portal-btn:disabled{opacity:.65;cursor:not-allowed}:host ::ng-deep .portal-btn-sm{padding:.25rem .75rem;font-size:.875rem}:host ::ng-deep .portal-btn-primary{background-color:var(--ec-primary, #577af3);border-color:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}:host ::ng-deep .portal-btn-primary:hover:not(:disabled){background-color:var(--ec-primary-dark, #475dcc);border-color:var(--ec-primary-dark, #475dcc)}:host ::ng-deep .portal-btn-primary:disabled{background-color:var(--ec-primary-muted, #adb5bd);border-color:var(--ec-primary-muted, #adb5bd)}:host ::ng-deep .portal-btn-secondary{background-color:transparent;border-color:var(--ec-border-strong, #6c757d);color:var(--ec-text, #374151)}:host ::ng-deep .portal-btn-secondary:hover:not(:disabled){background-color:var(--ec-bg-subtle, #f8f9fa);border-color:var(--ec-text-muted, #495057)}@media (max-width: 767px){.user-portal__nav{flex-direction:row;overflow-x:auto;padding:.5rem;gap:.5rem;scrollbar-width:none}.user-portal__nav::-webkit-scrollbar{display:none}.user-portal__nav-item{flex-shrink:0;white-space:nowrap}.user-portal__logout{border-top:none;border-left:1px solid var(--ec-border, #e5e7eb);flex-shrink:0;white-space:nowrap}.user-portal__sidebar{flex-direction:row;overflow-x:auto}}.user-portal__user-info{display:flex;flex-direction:column;gap:4px;padding:20px 20px 24px}.user-name{margin:0;font-size:20px;font-weight:400;color:var(--ec-text, #1a1a1a);line-height:1.2}.user-email{margin:0;font-size:16px;color:var(--ec-text-muted, #4a4a4a);line-height:1.5}\n"], dependencies: [{ kind: "component", type: OrdersListEcComponent, selector: "app-orders-ec" }, { kind: "component", type: UserProfileEcComponent, selector: "app-user-profile-ec" }, { kind: "component", type: UserAddressesEcComponent, selector: "app-user-addresses-ec" }, { kind: "component", type: UserDocumentsEcComponent, selector: "app-user-documents-ec" }, { kind: "component", type: UserSecurityEcComponent, selector: "app-user-security-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
60
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UserPortalEcComponent, isStandalone: true, selector: "app-user-portal-ec", ngImport: i0, template: "<section class=\"user-portal\" id=\"userPortalEcComponent\">\n <div class=\"container py-4\">\n <div class=\"row g-4\">\n\n <!-- Sidebar -->\n <div class=\"col-12 col-md-3\">\n <div class=\"user-portal__sidebar\">\n <div class=\"user-portal__user-info\">\n <h4 class=\"user-name\">{{ dataProfile?.firstName }} {{ dataProfile?.lastName }}</h4>\n <p class=\"user-email\">{{ dataProfile?.email }}</p>\n </div>\n <nav class=\"user-portal__nav\">\n @for(item of menuItems; track item.key) {\n @if(item.key !== 'documents' || orderDocumentsVisibility.showOrderDocuments()) {\n <button type=\"button\"\n class=\"user-portal__nav-item\"\n [class.active]=\"activeSection === item.key\"\n (click)=\"setSection(item.key)\">\n <i class=\"bi {{ item.icon }} user-portal__nav-icon\"></i>\n <span>{{ item.labelKey | translate }}</span>\n </button>\n }\n }\n </nav>\n <button type=\"button\" class=\"user-portal__logout\" (click)=\"logout()\">\n <i class=\"bi bi-box-arrow-right me-2\"></i>\n {{ 'user-portal.logout' | translate }}\n </button>\n </div>\n </div>\n\n <!-- Content -->\n <div class=\"col-12 col-md-9\">\n <div class=\"user-portal__content\">\n @switch (activeSection) {\n @case ('orders') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.orders' | translate }}</h4>\n <app-orders-ec></app-orders-ec>\n }\n @case ('profile') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.profile' | translate }}</h4>\n <app-user-profile-ec></app-user-profile-ec>\n }\n @case ('addresses') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.addresses' | translate }}</h4>\n <app-user-addresses-ec></app-user-addresses-ec>\n }\n @case ('documents') {\n @if(orderDocumentsVisibility.showOrderDocuments()) {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.documents' | translate }}</h4>\n <app-user-documents-ec></app-user-documents-ec>\n }\n }\n @case ('security') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.security' | translate }}</h4>\n <app-user-security-ec></app-user-security-ec>\n }\n }\n </div>\n </div>\n\n </div>\n </div>\n</section>\n", styles: ["@charset \"UTF-8\";:host{display:block}.user-portal__sidebar{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column}.user-portal__nav{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.user-portal__nav-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem 1rem;border:none;background:transparent;border-radius:.5rem;color:var(--ec-text, #374151);font-size:.9rem;font-weight:500;text-align:left;cursor:pointer;transition:background .15s,color .15s}.user-portal__nav-item:hover{background:var(--ec-primary-light, #eef2ff);color:var(--ec-primary, #577af3)}.user-portal__nav-item.active{background:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}.user-portal__nav-icon{font-size:1.1rem;flex-shrink:0}.user-portal__logout{display:flex;align-items:center;width:100%;padding:.75rem 1.5rem;border:none;border-top:1px solid var(--ec-border, #e5e7eb);background:transparent;color:var(--ec-danger, #dc2626);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s}.user-portal__logout:hover{background:var(--ec-danger-bg, #fee2e2)}.user-portal__content{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;padding:1.5rem;min-height:400px}.user-portal__section-title{font-size:1.1rem;font-weight:600;color:var(--ec-text, #111827);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--ec-border, #e5e7eb)}:host ::ng-deep .portal-spinner{color:var(--ec-primary, #577af3)!important}:host ::ng-deep .portal-btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;border:1px solid transparent;border-radius:var(--ec-button-radius, .5rem);font-size:.95rem;line-height:1.5;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}:host ::ng-deep .portal-btn:disabled{opacity:.65;cursor:not-allowed}:host ::ng-deep .portal-btn-sm{padding:.25rem .75rem;font-size:.875rem}:host ::ng-deep .portal-btn-primary{background-color:var(--ec-primary, #577af3);border-color:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}:host ::ng-deep .portal-btn-primary:hover:not(:disabled){background-color:var(--ec-primary-dark, #475dcc);border-color:var(--ec-primary-dark, #475dcc)}:host ::ng-deep .portal-btn-primary:disabled{background-color:var(--ec-primary-muted, #adb5bd);border-color:var(--ec-primary-muted, #adb5bd)}:host ::ng-deep .portal-btn-secondary{background-color:transparent;border-color:var(--ec-border-strong, #6c757d);color:var(--ec-text, #374151)}:host ::ng-deep .portal-btn-secondary:hover:not(:disabled){background-color:var(--ec-bg-subtle, #f8f9fa);border-color:var(--ec-text-muted, #495057)}@media (max-width: 767px){.user-portal__nav{flex-direction:column;overflow-x:visible;padding:0;gap:0}.user-portal__nav-item{flex-shrink:1;white-space:normal}.user-portal__logout{border-top:1px solid var(--ec-border, #e5e7eb);border-left:none;flex-shrink:1;white-space:normal}.user-portal__sidebar{flex-direction:column;overflow-x:hidden}}.user-portal__user-info{display:flex;flex-direction:column;gap:4px;padding:20px 20px 24px}.user-name{margin:0;font-size:20px;font-weight:400;color:var(--ec-text, #1a1a1a);line-height:1.2}.user-email{margin:0;font-size:16px;color:var(--ec-text-muted, #4a4a4a);line-height:1.5}\n"], dependencies: [{ kind: "component", type: OrdersListEcComponent, selector: "app-orders-ec" }, { kind: "component", type: UserProfileEcComponent, selector: "app-user-profile-ec" }, { kind: "component", type: UserAddressesEcComponent, selector: "app-user-addresses-ec" }, { kind: "component", type: UserDocumentsEcComponent, selector: "app-user-documents-ec" }, { kind: "component", type: UserSecurityEcComponent, selector: "app-user-security-ec" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
61
61
  }
62
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPortalEcComponent, decorators: [{
63
63
  type: Component,
64
- args: [{ selector: 'app-user-portal-ec', standalone: true, imports: [OrdersListEcComponent, UserProfileEcComponent, UserAddressesEcComponent, UserDocumentsEcComponent, UserSecurityEcComponent, TranslateModule], template: "<section class=\"user-portal\" id=\"userPortalEcComponent\">\n <div class=\"container py-4\">\n <div class=\"row g-4\">\n\n <!-- Sidebar -->\n <div class=\"col-12 col-md-3\">\n <div class=\"user-portal__sidebar\">\n <div class=\"user-portal__user-info\">\n <h4 class=\"user-name\">{{ dataProfile?.firstName }} {{ dataProfile?.lastName }}</h4>\n <p class=\"user-email\">{{ dataProfile?.email }}</p>\n </div>\n <nav class=\"user-portal__nav\">\n @for(item of menuItems; track item.key) {\n @if(item.key !== 'documents' || orderDocumentsVisibility.showOrderDocuments()) {\n <button type=\"button\"\n class=\"user-portal__nav-item\"\n [class.active]=\"activeSection === item.key\"\n (click)=\"setSection(item.key)\">\n <i class=\"bi {{ item.icon }} user-portal__nav-icon\"></i>\n <span>{{ item.labelKey | translate }}</span>\n </button>\n }\n }\n </nav>\n <button type=\"button\" class=\"user-portal__logout\" (click)=\"logout()\">\n <i class=\"bi bi-box-arrow-right me-2\"></i>\n {{ 'user-portal.logout' | translate }}\n </button>\n </div>\n </div>\n\n <!-- Content -->\n <div class=\"col-12 col-md-9\">\n <div class=\"user-portal__content\">\n @switch (activeSection) {\n @case ('orders') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.orders' | translate }}</h4>\n <app-orders-ec></app-orders-ec>\n }\n @case ('profile') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.profile' | translate }}</h4>\n <app-user-profile-ec></app-user-profile-ec>\n }\n @case ('addresses') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.addresses' | translate }}</h4>\n <app-user-addresses-ec></app-user-addresses-ec>\n }\n @case ('documents') {\n @if(orderDocumentsVisibility.showOrderDocuments()) {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.documents' | translate }}</h4>\n <app-user-documents-ec></app-user-documents-ec>\n }\n }\n @case ('security') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.security' | translate }}</h4>\n <app-user-security-ec></app-user-security-ec>\n }\n }\n </div>\n </div>\n\n </div>\n </div>\n</section>\n", styles: ["@charset \"UTF-8\";:host{display:block}.user-portal__sidebar{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column}.user-portal__nav{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.user-portal__nav-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem 1rem;border:none;background:transparent;border-radius:.5rem;color:var(--ec-text, #374151);font-size:.9rem;font-weight:500;text-align:left;cursor:pointer;transition:background .15s,color .15s}.user-portal__nav-item:hover{background:var(--ec-primary-light, #eef2ff);color:var(--ec-primary, #577af3)}.user-portal__nav-item.active{background:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}.user-portal__nav-icon{font-size:1.1rem;flex-shrink:0}.user-portal__logout{display:flex;align-items:center;width:100%;padding:.75rem 1.5rem;border:none;border-top:1px solid var(--ec-border, #e5e7eb);background:transparent;color:var(--ec-danger, #dc2626);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s}.user-portal__logout:hover{background:var(--ec-danger-bg, #fee2e2)}.user-portal__content{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;padding:1.5rem;min-height:400px}.user-portal__section-title{font-size:1.1rem;font-weight:600;color:var(--ec-text, #111827);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--ec-border, #e5e7eb)}:host ::ng-deep .portal-spinner{color:var(--ec-primary, #577af3)!important}:host ::ng-deep .portal-btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;border:1px solid transparent;border-radius:var(--ec-button-radius, .5rem);font-size:.95rem;line-height:1.5;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}:host ::ng-deep .portal-btn:disabled{opacity:.65;cursor:not-allowed}:host ::ng-deep .portal-btn-sm{padding:.25rem .75rem;font-size:.875rem}:host ::ng-deep .portal-btn-primary{background-color:var(--ec-primary, #577af3);border-color:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}:host ::ng-deep .portal-btn-primary:hover:not(:disabled){background-color:var(--ec-primary-dark, #475dcc);border-color:var(--ec-primary-dark, #475dcc)}:host ::ng-deep .portal-btn-primary:disabled{background-color:var(--ec-primary-muted, #adb5bd);border-color:var(--ec-primary-muted, #adb5bd)}:host ::ng-deep .portal-btn-secondary{background-color:transparent;border-color:var(--ec-border-strong, #6c757d);color:var(--ec-text, #374151)}:host ::ng-deep .portal-btn-secondary:hover:not(:disabled){background-color:var(--ec-bg-subtle, #f8f9fa);border-color:var(--ec-text-muted, #495057)}@media (max-width: 767px){.user-portal__nav{flex-direction:row;overflow-x:auto;padding:.5rem;gap:.5rem;scrollbar-width:none}.user-portal__nav::-webkit-scrollbar{display:none}.user-portal__nav-item{flex-shrink:0;white-space:nowrap}.user-portal__logout{border-top:none;border-left:1px solid var(--ec-border, #e5e7eb);flex-shrink:0;white-space:nowrap}.user-portal__sidebar{flex-direction:row;overflow-x:auto}}.user-portal__user-info{display:flex;flex-direction:column;gap:4px;padding:20px 20px 24px}.user-name{margin:0;font-size:20px;font-weight:400;color:var(--ec-text, #1a1a1a);line-height:1.2}.user-email{margin:0;font-size:16px;color:var(--ec-text-muted, #4a4a4a);line-height:1.5}\n"] }]
64
+ args: [{ selector: 'app-user-portal-ec', standalone: true, imports: [OrdersListEcComponent, UserProfileEcComponent, UserAddressesEcComponent, UserDocumentsEcComponent, UserSecurityEcComponent, TranslateModule], template: "<section class=\"user-portal\" id=\"userPortalEcComponent\">\n <div class=\"container py-4\">\n <div class=\"row g-4\">\n\n <!-- Sidebar -->\n <div class=\"col-12 col-md-3\">\n <div class=\"user-portal__sidebar\">\n <div class=\"user-portal__user-info\">\n <h4 class=\"user-name\">{{ dataProfile?.firstName }} {{ dataProfile?.lastName }}</h4>\n <p class=\"user-email\">{{ dataProfile?.email }}</p>\n </div>\n <nav class=\"user-portal__nav\">\n @for(item of menuItems; track item.key) {\n @if(item.key !== 'documents' || orderDocumentsVisibility.showOrderDocuments()) {\n <button type=\"button\"\n class=\"user-portal__nav-item\"\n [class.active]=\"activeSection === item.key\"\n (click)=\"setSection(item.key)\">\n <i class=\"bi {{ item.icon }} user-portal__nav-icon\"></i>\n <span>{{ item.labelKey | translate }}</span>\n </button>\n }\n }\n </nav>\n <button type=\"button\" class=\"user-portal__logout\" (click)=\"logout()\">\n <i class=\"bi bi-box-arrow-right me-2\"></i>\n {{ 'user-portal.logout' | translate }}\n </button>\n </div>\n </div>\n\n <!-- Content -->\n <div class=\"col-12 col-md-9\">\n <div class=\"user-portal__content\">\n @switch (activeSection) {\n @case ('orders') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.orders' | translate }}</h4>\n <app-orders-ec></app-orders-ec>\n }\n @case ('profile') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.profile' | translate }}</h4>\n <app-user-profile-ec></app-user-profile-ec>\n }\n @case ('addresses') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.addresses' | translate }}</h4>\n <app-user-addresses-ec></app-user-addresses-ec>\n }\n @case ('documents') {\n @if(orderDocumentsVisibility.showOrderDocuments()) {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.documents' | translate }}</h4>\n <app-user-documents-ec></app-user-documents-ec>\n }\n }\n @case ('security') {\n <h4 class=\"user-portal__section-title\">{{ 'user-portal.menu.security' | translate }}</h4>\n <app-user-security-ec></app-user-security-ec>\n }\n }\n </div>\n </div>\n\n </div>\n </div>\n</section>\n", styles: ["@charset \"UTF-8\";:host{display:block}.user-portal__sidebar{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;overflow:hidden;display:flex;flex-direction:column}.user-portal__nav{display:flex;flex-direction:column;padding:.5rem;gap:.25rem}.user-portal__nav-item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem 1rem;border:none;background:transparent;border-radius:.5rem;color:var(--ec-text, #374151);font-size:.9rem;font-weight:500;text-align:left;cursor:pointer;transition:background .15s,color .15s}.user-portal__nav-item:hover{background:var(--ec-primary-light, #eef2ff);color:var(--ec-primary, #577af3)}.user-portal__nav-item.active{background:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}.user-portal__nav-icon{font-size:1.1rem;flex-shrink:0}.user-portal__logout{display:flex;align-items:center;width:100%;padding:.75rem 1.5rem;border:none;border-top:1px solid var(--ec-border, #e5e7eb);background:transparent;color:var(--ec-danger, #dc2626);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s}.user-portal__logout:hover{background:var(--ec-danger-bg, #fee2e2)}.user-portal__content{background:var(--ec-surface, #fff);border:1px solid var(--ec-border, #e5e7eb);border-radius:.75rem;padding:1.5rem;min-height:400px}.user-portal__section-title{font-size:1.1rem;font-weight:600;color:var(--ec-text, #111827);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--ec-border, #e5e7eb)}:host ::ng-deep .portal-spinner{color:var(--ec-primary, #577af3)!important}:host ::ng-deep .portal-btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;border:1px solid transparent;border-radius:var(--ec-button-radius, .5rem);font-size:.95rem;line-height:1.5;cursor:pointer;transition:background-color .2s,border-color .2s,color .2s}:host ::ng-deep .portal-btn:disabled{opacity:.65;cursor:not-allowed}:host ::ng-deep .portal-btn-sm{padding:.25rem .75rem;font-size:.875rem}:host ::ng-deep .portal-btn-primary{background-color:var(--ec-primary, #577af3);border-color:var(--ec-primary, #577af3);color:var(--ec-primary-contrast, #fff)}:host ::ng-deep .portal-btn-primary:hover:not(:disabled){background-color:var(--ec-primary-dark, #475dcc);border-color:var(--ec-primary-dark, #475dcc)}:host ::ng-deep .portal-btn-primary:disabled{background-color:var(--ec-primary-muted, #adb5bd);border-color:var(--ec-primary-muted, #adb5bd)}:host ::ng-deep .portal-btn-secondary{background-color:transparent;border-color:var(--ec-border-strong, #6c757d);color:var(--ec-text, #374151)}:host ::ng-deep .portal-btn-secondary:hover:not(:disabled){background-color:var(--ec-bg-subtle, #f8f9fa);border-color:var(--ec-text-muted, #495057)}@media (max-width: 767px){.user-portal__nav{flex-direction:column;overflow-x:visible;padding:0;gap:0}.user-portal__nav-item{flex-shrink:1;white-space:normal}.user-portal__logout{border-top:1px solid var(--ec-border, #e5e7eb);border-left:none;flex-shrink:1;white-space:normal}.user-portal__sidebar{flex-direction:column;overflow-x:hidden}}.user-portal__user-info{display:flex;flex-direction:column;gap:4px;padding:20px 20px 24px}.user-name{margin:0;font-size:20px;font-weight:400;color:var(--ec-text, #1a1a1a);line-height:1.2}.user-email{margin:0;font-size:16px;color:var(--ec-text-muted, #4a4a4a);line-height:1.5}\n"] }]
65
65
  }], ctorParameters: () => [] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wb3J0YWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdXNlci1wb3J0YWwtZWMvdXNlci1wb3J0YWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdXNlci1wb3J0YWwtZWMvdXNlci1wb3J0YWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUMsQ0FBQyxzQkFBc0I7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyxDQUFDLDhCQUE4QjtBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBV3hGLE1BQU0sT0FBTyxxQkFBcUI7SUFDdEIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuQyxPQUFP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c0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnOyAvLyA8LS0gSW1wb3J0YXIgT25Jbml0XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJzsgLy8gPC0tIEltcG9ydGFyIEFjdGl2YXRlZFJvdXRlXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgUHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPcmRlckRvY3VtZW50c1Zpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMvb3JkZXItZG9jdW1lbnRzLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlcnNMaXN0RWNDb21wb25lbnQgfSBmcm9tICcuLi9hY2NvdW50LWVjL29yZGVycy1saXN0LWVjL29yZGVycy1saXN0LWVjLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyUHJvZmlsZUVjQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXByb2ZpbGUtZWMvdXNlci1wcm9maWxlLWVjLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyQWRkcmVzc2VzRWNDb21wb25lbnQgfSBmcm9tICcuL3VzZXItYWRkcmVzc2VzLWVjL3VzZXItYWRkcmVzc2VzLWVjLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyRG9jdW1lbnRzRWNDb21wb25lbnQgfSBmcm9tICcuL3VzZXItZG9jdW1lbnRzLWVjL3VzZXItZG9jdW1lbnRzLWVjLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFVzZXJTZWN1cml0eUVjQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNlY3VyaXR5LWVjL3VzZXItc2VjdXJpdHktZWMuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVXNlclBvcnRhbFNlY3Rpb24gPSAncHJvZmlsZScgfCAnYWRkcmVzc2VzJyB8ICdvcmRlcnMnIHwgJ2RvY3VtZW50cycgfCAnc2VjdXJpdHknO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC11c2VyLXBvcnRhbC1lYycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbT3JkZXJzTGlzdEVjQ29tcG9uZW50LCBVc2VyUHJvZmlsZUVjQ29tcG9uZW50LCBVc2VyQWRkcmVzc2VzRWNDb21wb25lbnQsIFVzZXJEb2N1bWVudHNFY0NvbXBvbmVudCwgVXNlclNlY3VyaXR5RWNDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VzZXItcG9ydGFsLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vdXNlci1wb3J0YWwtZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJQb3J0YWxFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7IC8vIDwtLSBJbXBsZW1lbnRhciBPbkluaXRcbiAgICBwcml2YXRlIF9hdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgcHJpdmF0ZSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSBfcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpOyAvLyA8LS0gSW55ZWN0YXIgQWN0aXZhdGVkUm91dGVcbiAgICBwcml2YXRlIF9wcm9maWxlU2VydmljZSA9IGluamVjdChQcm9maWxlU2VydmljZSk7XG4gICAgcHVibGljIHJlYWRvbmx5IG9yZGVyRG9jdW1lbnRzVmlzaWJpbGl0eSA9IGluamVjdChPcmRlckRvY3VtZW50c1Zpc2liaWxpdHlTZXJ2aWNlKTtcbiAgICBwdWJsaWMgZGF0YVByb2ZpbGU6IGFueTtcbiAgICBcbiAgICAvLyBQb3IgZGVmZWN0byBzaWd1ZSBzaWVuZG8gcHJvZmlsZSBzaSBlbnRyYXMgbm9ybWFsXG4gICAgYWN0aXZlU2VjdGlvbjogVXNlclBvcnRhbFNlY3Rpb24gPSAncHJvZmlsZSc7IFxuXG4gICAgcmVhZG9ubHkgbWVudUl0ZW1zOiB7IGtleTogVXNlclBvcnRhbFNlY3Rpb247IGxhYmVsS2V5OiBzdHJpbmc7IGljb246IHN0cmluZyB9W10gPSBbXG4gICAgICAgIHsga2V5OiAncHJvZmlsZScsIGxhYmVsS2V5OiAndXNlci1wb3J0YWwubWVudS5wcm9maWxlJywgaWNvbjogJ2JpLXBlcnNvbicgfSxcbiAgICAgICAgeyBrZXk6ICdhZGRyZXNzZXMnLCBsYWJlbEtleTogJ3VzZXItcG9ydGFsLm1lbnUuYWRkcmVzc2VzJywgaWNvbjogJ2JpLWdlby1hbHQnIH0sXG4gICAgICAgIHsga2V5OiAnb3JkZXJzJywgbGFiZWxLZXk6ICd1c2VyLXBvcnRhbC5tZW51Lm9yZGVycycsIGljb246ICdiaS1ib3gtc2VhbScgfSxcbiAgICAgICAgeyBrZXk6ICdkb2N1bWVudHMnLCBsYWJlbEtleTogJ3VzZXItcG9ydGFsLm1lbnUuZG9jdW1lbnRzJywgaWNvbjogJ2JpLWZpbGUtZWFybWFyaycgfSxcbiAgICAgICAgeyBrZXk6ICdzZWN1cml0eScsIGxhYmVsS2V5OiAndXNlci1wb3J0YWwubWVudS5zZWN1cml0eScsIGljb246ICdiaS1zaGllbGQtbG9jaycgfSxcbiAgICBdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX3Byb2ZpbGVTZXJ2aWNlLmdldFByb2ZpbGUoKS5zdWJzY3JpYmUocHJvZmlsZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRhdGFQcm9maWxlID0gcHJvZmlsZS5nZW5lcmFsRGF0YTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gPC0tIEHDsWFkaXIgZWwgT25Jbml0IHBhcmEgbGVlciBsYSBVUkxcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gcGFyYW1zWydzZWN0aW9uJ107XG4gICAgICAgICAgICAvLyBWZXJpZmljYW1vcyBxdWUgbGEgc2VjY2nDs24gZXhpc3RhIGVuIG51ZXN0cm8gbWVuw7ogYW50ZXMgZGUgYXNpZ25hcmxhXG4gICAgICAgICAgICBpZiAoc2VjdGlvbiAmJiB0aGlzLm1lbnVJdGVtcy5zb21lKGl0ZW0gPT4gaXRlbS5rZXkgPT09IHNlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVTZWN0aW9uID0gc2VjdGlvbiBhcyBVc2VyUG9ydGFsU2VjdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0U2VjdGlvbihzZWN0aW9uOiBVc2VyUG9ydGFsU2VjdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZVNlY3Rpb24gPSBzZWN0aW9uO1xuICAgICAgICAvLyBPcGNpb25hbDogQWN0dWFsaXphciBsYSBVUkwgY3VhbmRvIGhhY2VzIGNsaWMgZW4gdW5hIHBlc3Rhw7FhIHBhcmEgbWFudGVuZXIgY29uZ3J1ZW5jaWFcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLl9yb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHNlY3Rpb246IHNlY3Rpb24gfSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9nb3V0KHBhdGg6IHN0cmluZyA9ICcvaG9tZScpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYXV0aFNlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgIHBhdGggIT09ICcvaG9tZSdcbiAgICAgICAgICAgID8gdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwocGF0aClcbiAgICAgICAgICAgIDogdGhpcy5fYXV0aFNlcnZpY2UucmVzb2x2ZUhvbWVOYXZpZ2F0aW9uKCgpID0+IHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHBhdGgpKTtcbiAgICB9XG59IiwiPHNlY3Rpb24gY2xhc3M9XCJ1c2VyLXBvcnRhbFwiIGlkPVwidXNlclBvcnRhbEVjQ29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBweS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy00XCI+XG5cbiAgICAgICAgICAgIDwhLS0gU2lkZWJhciAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1wb3J0YWxfX3NpZGViYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItcG9ydGFsX191c2VyLWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInVzZXItbmFtZVwiPnt7IGRhdGFQcm9maWxlPy5maXJzdE5hbWUgfX0ge3sgZGF0YVByb2ZpbGU/Lmxhc3ROYW1lIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidXNlci1lbWFpbFwiPnt7IGRhdGFQcm9maWxlPy5lbWFpbCB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuYXYgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fbmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yKGl0ZW0gb2YgbWVudUl0ZW1zOyB0cmFjayBpdGVtLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKGl0ZW0ua2V5ICE9PSAnZG9jdW1lbnRzJyB8fCBvcmRlckRvY3VtZW50c1Zpc2liaWxpdHkuc2hvd09yZGVyRG9jdW1lbnRzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fbmF2LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VjdGlvbiA9PT0gaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRTZWN0aW9uKGl0ZW0ua2V5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkge3sgaXRlbS5pY29uIH19IHVzZXItcG9ydGFsX19uYXYtaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInVzZXItcG9ydGFsX19sb2dvdXRcIiAoY2xpY2spPVwibG9nb3V0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktYm94LWFycm93LXJpZ2h0IG1lLTJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAndXNlci1wb3J0YWwubG9nb3V0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC05XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItcG9ydGFsX19jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGFjdGl2ZVNlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdvcmRlcnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fc2VjdGlvbi10aXRsZVwiPnt7ICd1c2VyLXBvcnRhbC5tZW51Lm9yZGVycycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1vcmRlcnMtZWM+PC9hcHAtb3JkZXJzLWVjPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgncHJvZmlsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInVzZXItcG9ydGFsX19zZWN0aW9uLXRpdGxlXCI+e3sgJ3VzZXItcG9ydGFsLm1lbnUucHJvZmlsZScgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC11c2VyLXByb2ZpbGUtZWM+PC9hcHAtdXNlci1wcm9maWxlLWVjPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYWRkcmVzc2VzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidXNlci1wb3J0YWxfX3NlY3Rpb24tdGl0bGVcIj57eyAndXNlci1wb3J0YWwubWVudS5hZGRyZXNzZXMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdXNlci1hZGRyZXNzZXMtZWM+PC9hcHAtdXNlci1hZGRyZXNzZXMtZWM+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdkb2N1bWVudHMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYob3JkZXJEb2N1bWVudHNWaXNpYmlsaXR5LnNob3dPcmRlckRvY3VtZW50cygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fc2VjdGlvbi10aXRsZVwiPnt7ICd1c2VyLXBvcnRhbC5tZW51LmRvY3VtZW50cycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC11c2VyLWRvY3VtZW50cy1lYz48L2FwcC11c2VyLWRvY3VtZW50cy1lYz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3NlY3VyaXR5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidXNlci1wb3J0YWxfX3NlY3Rpb24tdGl0bGVcIj57eyAndXNlci1wb3J0YWwubWVudS5zZWN1cml0eScgfCB0cmFuc2xhdGUgfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC11c2VyLXNlY3VyaXR5LWVjPjwvYXBwLXVzZXItc2VjdXJpdHktZWM+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wb3J0YWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdXNlci1wb3J0YWwtZWMvdXNlci1wb3J0YWwtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvdXNlci1wb3J0YWwtZWMvdXNlci1wb3J0YWwtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUMsQ0FBQyxzQkFBc0I7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyxDQUFDLDhCQUE4QjtBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBV3hGLE1BQU0sT0FBTyxxQkFBcUI7SUFDdEIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuQyxPQUFP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QUFxQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsgLy8gPC0tIEltcG9ydGFyIE9uSW5pdFxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7IC8vIDwtLSBJbXBvcnRhciBBY3RpdmF0ZWRSb3V0ZVxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgT3JkZXJEb2N1bWVudHNWaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzL29yZGVyLWRvY3VtZW50cy12aXNpYmlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJzTGlzdEVjQ29tcG9uZW50IH0gZnJvbSAnLi4vYWNjb3VudC1lYy9vcmRlcnMtbGlzdC1lYy9vcmRlcnMtbGlzdC1lYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlclByb2ZpbGVFY0NvbXBvbmVudCB9IGZyb20gJy4vdXNlci1wcm9maWxlLWVjL3VzZXItcHJvZmlsZS1lYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckFkZHJlc3Nlc0VjQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLWFkZHJlc3Nlcy1lYy91c2VyLWFkZHJlc3Nlcy1lYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckRvY3VtZW50c0VjQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLWRvY3VtZW50cy1lYy91c2VyLWRvY3VtZW50cy1lYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBVc2VyU2VjdXJpdHlFY0NvbXBvbmVudCB9IGZyb20gJy4vdXNlci1zZWN1cml0eS1lYy91c2VyLXNlY3VyaXR5LWVjLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIFVzZXJQb3J0YWxTZWN0aW9uID0gJ3Byb2ZpbGUnIHwgJ2FkZHJlc3NlcycgfCAnb3JkZXJzJyB8ICdkb2N1bWVudHMnIHwgJ3NlY3VyaXR5JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtdXNlci1wb3J0YWwtZWMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW09yZGVyc0xpc3RFY0NvbXBvbmVudCwgVXNlclByb2ZpbGVFY0NvbXBvbmVudCwgVXNlckFkZHJlc3Nlc0VjQ29tcG9uZW50LCBVc2VyRG9jdW1lbnRzRWNDb21wb25lbnQsIFVzZXJTZWN1cml0eUVjQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91c2VyLXBvcnRhbC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3VzZXItcG9ydGFsLWVjLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyUG9ydGFsRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQgeyAvLyA8LS0gSW1wbGVtZW50YXIgT25Jbml0XG4gICAgcHJpdmF0ZSBfYXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICAgIHByaXZhdGUgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgX3JvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTsgLy8gPC0tIElueWVjdGFyIEFjdGl2YXRlZFJvdXRlXG4gICAgcHJpdmF0ZSBfcHJvZmlsZVNlcnZpY2UgPSBpbmplY3QoUHJvZmlsZVNlcnZpY2UpO1xuICAgIHB1YmxpYyByZWFkb25seSBvcmRlckRvY3VtZW50c1Zpc2liaWxpdHkgPSBpbmplY3QoT3JkZXJEb2N1bWVudHNWaXNpYmlsaXR5U2VydmljZSk7XG4gICAgcHVibGljIGRhdGFQcm9maWxlOiBhbnk7XG4gICAgXG4gICAgLy8gUG9yIGRlZmVjdG8gc2lndWUgc2llbmRvIHByb2ZpbGUgc2kgZW50cmFzIG5vcm1hbFxuICAgIGFjdGl2ZVNlY3Rpb246IFVzZXJQb3J0YWxTZWN0aW9uID0gJ3Byb2ZpbGUnOyBcblxuICAgIHJlYWRvbmx5IG1lbnVJdGVtczogeyBrZXk6IFVzZXJQb3J0YWxTZWN0aW9uOyBsYWJlbEtleTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfVtdID0gW1xuICAgICAgICB7IGtleTogJ3Byb2ZpbGUnLCBsYWJlbEtleTogJ3VzZXItcG9ydGFsLm1lbnUucHJvZmlsZScsIGljb246ICdiaS1wZXJzb24nIH0sXG4gICAgICAgIHsga2V5OiAnYWRkcmVzc2VzJywgbGFiZWxLZXk6ICd1c2VyLXBvcnRhbC5tZW51LmFkZHJlc3NlcycsIGljb246ICdiaS1nZW8tYWx0JyB9LFxuICAgICAgICB7IGtleTogJ29yZGVycycsIGxhYmVsS2V5OiAndXNlci1wb3J0YWwubWVudS5vcmRlcnMnLCBpY29uOiAnYmktYm94LXNlYW0nIH0sXG4gICAgICAgIHsga2V5OiAnZG9jdW1lbnRzJywgbGFiZWxLZXk6ICd1c2VyLXBvcnRhbC5tZW51LmRvY3VtZW50cycsIGljb246ICdiaS1maWxlLWVhcm1hcmsnIH0sXG4gICAgICAgIHsga2V5OiAnc2VjdXJpdHknLCBsYWJlbEtleTogJ3VzZXItcG9ydGFsLm1lbnUuc2VjdXJpdHknLCBpY29uOiAnYmktc2hpZWxkLWxvY2snIH0sXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9wcm9maWxlU2VydmljZS5nZXRQcm9maWxlKCkuc3Vic2NyaWJlKHByb2ZpbGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhUHJvZmlsZSA9IHByb2ZpbGU/LmdlbmVyYWxEYXRhID8/IHt9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyA8LS0gQcOxYWRpciBlbCBPbkluaXQgcGFyYSBsZWVyIGxhIFVSTFxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb24gPSBwYXJhbXNbJ3NlY3Rpb24nXTtcbiAgICAgICAgICAgIC8vIFZlcmlmaWNhbW9zIHF1ZSBsYSBzZWNjacOzbiBleGlzdGEgZW4gbnVlc3RybyBtZW7DuiBhbnRlcyBkZSBhc2lnbmFybGFcbiAgICAgICAgICAgIGlmIChzZWN0aW9uICYmIHRoaXMubWVudUl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLmtleSA9PT0gc2VjdGlvbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVNlY3Rpb24gPSBzZWN0aW9uIGFzIFVzZXJQb3J0YWxTZWN0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRTZWN0aW9uKHNlY3Rpb246IFVzZXJQb3J0YWxTZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlU2VjdGlvbiA9IHNlY3Rpb247XG4gICAgICAgIC8vIE9wY2lvbmFsOiBBY3R1YWxpemFyIGxhIFVSTCBjdWFuZG8gaGFjZXMgY2xpYyBlbiB1bmEgcGVzdGHDsWEgcGFyYSBtYW50ZW5lciBjb25ncnVlbmNpYVxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMuX3JvdXRlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgc2VjdGlvbjogc2VjdGlvbiB9LFxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBsb2dvdXQocGF0aDogc3RyaW5nID0gJy9ob21lJyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hdXRoU2VydmljZS5sb2dvdXQoKTtcbiAgICAgICAgcGF0aCAhPT0gJy9ob21lJ1xuICAgICAgICAgICAgPyB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybChwYXRoKVxuICAgICAgICAgICAgOiB0aGlzLl9hdXRoU2VydmljZS5yZXNvbHZlSG9tZU5hdmlnYXRpb24oKCkgPT4gdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwocGF0aCkpO1xuICAgIH1cbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwidXNlci1wb3J0YWxcIiBpZD1cInVzZXJQb3J0YWxFY0NvbXBvbmVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgcHktNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctNFwiPlxuXG4gICAgICAgICAgICA8IS0tIFNpZGViYXIgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItcG9ydGFsX19zaWRlYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fdXNlci1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ1c2VyLW5hbWVcIj57eyBkYXRhUHJvZmlsZT8uZmlyc3ROYW1lIH19IHt7IGRhdGFQcm9maWxlPy5sYXN0TmFtZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVzZXItZW1haWxcIj57eyBkYXRhUHJvZmlsZT8uZW1haWwgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwidXNlci1wb3J0YWxfX25hdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvcihpdGVtIG9mIG1lbnVJdGVtczsgdHJhY2sgaXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihpdGVtLmtleSAhPT0gJ2RvY3VtZW50cycgfHwgb3JkZXJEb2N1bWVudHNWaXNpYmlsaXR5LnNob3dPcmRlckRvY3VtZW50cygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlci1wb3J0YWxfX25hdi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlY3Rpb24gPT09IGl0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0U2VjdGlvbihpdGVtLmtleSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIHt7IGl0ZW0uaWNvbiB9fSB1c2VyLXBvcnRhbF9fbmF2LWljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5sYWJlbEtleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fbG9nb3V0XCIgKGNsaWNrKT1cImxvZ291dCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWJveC1hcnJvdy1yaWdodCBtZS0yXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3VzZXItcG9ydGFsLmxvZ291dCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBDb250ZW50IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtOVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChhY3RpdmVTZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnb3JkZXJzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidXNlci1wb3J0YWxfX3NlY3Rpb24tdGl0bGVcIj57eyAndXNlci1wb3J0YWwubWVudS5vcmRlcnMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtb3JkZXJzLWVjPjwvYXBwLW9yZGVycy1lYz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3Byb2ZpbGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ1c2VyLXBvcnRhbF9fc2VjdGlvbi10aXRsZVwiPnt7ICd1c2VyLXBvcnRhbC5tZW51LnByb2ZpbGUnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdXNlci1wcm9maWxlLWVjPjwvYXBwLXVzZXItcHJvZmlsZS1lYz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2FkZHJlc3NlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInVzZXItcG9ydGFsX19zZWN0aW9uLXRpdGxlXCI+e3sgJ3VzZXItcG9ydGFsLm1lbnUuYWRkcmVzc2VzJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXVzZXItYWRkcmVzc2VzLWVjPjwvYXBwLXVzZXItYWRkcmVzc2VzLWVjPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZG9jdW1lbnRzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmKG9yZGVyRG9jdW1lbnRzVmlzaWJpbGl0eS5zaG93T3JkZXJEb2N1bWVudHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidXNlci1wb3J0YWxfX3NlY3Rpb24tdGl0bGVcIj57eyAndXNlci1wb3J0YWwubWVudS5kb2N1bWVudHMnIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdXNlci1kb2N1bWVudHMtZWM+PC9hcHAtdXNlci1kb2N1bWVudHMtZWM+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdzZWN1cml0eScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInVzZXItcG9ydGFsX19zZWN0aW9uLXRpdGxlXCI+e3sgJ3VzZXItcG9ydGFsLm1lbnUuc2VjdXJpdHknIHwgdHJhbnNsYXRlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtdXNlci1zZWN1cml0eS1lYz48L2FwcC11c2VyLXNlY3VyaXR5LWVjPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19