{"version":3,"file":"volo-abp.ng.account-admin.mjs","sources":["../../../../packages/account/admin/src/account-admin.module.ts","../../../../packages/account/admin/src/abstracts/abstract-account-config.service.ts","../../../../packages/account/admin/src/abstracts/abstract-account-settings.component.ts","../../../../packages/account/admin/src/services/account-settings.service.ts","../../../../packages/account/admin/src/components/account-settings-general/account-settings-general.component.ts","../../../../packages/account/admin/src/components/account-settings-general/account-settings-general.component.html","../../../../packages/account/admin/src/services/account-two-factor-settings.service.ts","../../../../packages/account/admin/src/enums/two-factor-behaviour.ts","../../../../packages/account/admin/src/components/account-settings-two-factor/account-settings-two-factor.component.ts","../../../../packages/account/admin/src/components/account-settings-two-factor/account-settings-two-factor.component.html","../../../../packages/account/admin/src/services/account-captcha.service.ts","../../../../packages/account/admin/src/services/account-external-provider.service.ts","../../../../packages/account/admin/src/components/account-settings-captcha/recaptcha-asset.ts","../../../../packages/account/admin/src/components/account-settings-captcha/account-settings-captcha.component.ts","../../../../packages/account/admin/src/components/account-settings-captcha/account-settings-captcha.component.html","../../../../packages/account/admin/src/components/account-settings-external-provider/account-settings-external-provider.component.ts","../../../../packages/account/admin/src/components/account-settings-external-provider/account-settings-external-provider.component.html","../../../../packages/account/admin/src/services/account-idle-session.service.ts","../../../../packages/account/admin/src/services/account-passkey-settings.service.ts","../../../../packages/account/admin/src/services/idle-session.service.ts","../../../../packages/account/admin/src/enums/idle-session-timeout.ts","../../../../packages/account/admin/src/components/account-settings-idle-session/account-settings-idle-session.component.ts","../../../../packages/account/admin/src/components/account-settings-idle-session/account-settings-idle-session.component.html","../../../../packages/account/admin/src/components/account-settings-passkey/account-settings-passkey.component.ts","../../../../packages/account/admin/src/components/account-settings-passkey/account-settings-passkey.component.html","../../../../packages/account/admin/src/components/account-settings.component.ts","../../../../packages/account/admin/src/components/account-settings.component.html","../../../../packages/account/admin/src/components/time-zone-setting/time-zone-setting.component.ts","../../../../packages/account/admin/src/components/time-zone-setting/time-zone-setting.component.html","../../../../packages/account/admin/src/components/idle-session-modal/idle-session-modal.component.ts","../../../../packages/account/admin/src/components/idle-session-modal/idle-session-modal.component.html","../../../../packages/account/admin/src/account-settings.module.ts","../../../../packages/account/admin/src/volo-abp.ng.account-admin.ts"],"sourcesContent":["import { CoreModule } from '@abp/ng.core';\r\nimport { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n  imports: [CoreModule],\r\n})\r\nexport class AccountAdminModule {}\r\n","import { Observable } from 'rxjs';\r\nimport { RestService } from '@abp/ng.core';\r\n\r\nexport abstract class AbstractAccountSettingsService<Type, SubmitType = Type> {\r\n  apiName = 'AbpAccountAdmin';\r\n  protected abstract url: string;\r\n\r\n  constructor(protected restService: RestService) {}\r\n\r\n  getSettings(): Observable<Type> {\r\n    return this.restService.request(\r\n      {\r\n        method: 'GET',\r\n        url: this.url,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n  }\r\n\r\n  updateSettings(body: Partial<SubmitType>): Observable<SubmitType> {\r\n    return this.restService.request(\r\n      {\r\n        method: 'PUT',\r\n        url: this.url,\r\n        body,\r\n      },\r\n      { apiName: this.apiName },\r\n    );\r\n  }\r\n}\r\n","import { ChangeDetectorRef, Component, inject, OnInit, input } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { ConfigStateService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { AbstractAccountSettingsService } from './abstract-account-config.service';\r\n\r\n@Component({ template: '' })\r\nexport class AbstractAccountSettingsComponent<Type, SubmitType = Type> implements OnInit {\r\n  protected readonly service: AbstractAccountSettingsService<Type, SubmitType> = inject(\r\n    AbstractAccountSettingsService,\r\n  );\r\n  protected readonly toasterService: ToasterService = inject(ToasterService);\r\n  protected readonly cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n  protected readonly configState: ConfigStateService = inject(ConfigStateService);\r\n\r\n  readonly isTenant = input<boolean>(undefined);\r\n\r\n  settings$: Observable<Type>;\r\n\r\n  private _loading: boolean;\r\n  set loading(value: boolean) {\r\n    this._loading = value;\r\n    this.cdr.markForCheck();\r\n  }\r\n\r\n  get loading() {\r\n    return this._loading;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.settings$ = this.service.getSettings();\r\n  }\r\n\r\n  submit(newSettings: Partial<SubmitType>) {\r\n    this.loading = true;\r\n    this.service\r\n      .updateSettings(this.isTenant() ? this.mapTenantSettingsForSubmit(newSettings) : newSettings)\r\n      .pipe(finalize(() => (this.loading = false)))\r\n      .subscribe(() => {\r\n        this.toasterService.success('AbpUi::SavedSuccessfully', null);\r\n        this.configState.refreshAppState().subscribe();\r\n      });\r\n  }\r\n\r\n  /**\r\n   * should be overriden by children components\r\n   * if it is not overridden,\r\n   * it means that there is no difference between host and tenant for the particular child\r\n   */\r\n  mapTenantSettingsForSubmit(newSettings: Partial<SubmitType>) {\r\n    return newSettings;\r\n  }\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { AbstractAccountSettingsService } from '../abstracts/abstract-account-config.service';\r\nimport { AccountSettings } from '../models/account-settings';\r\n\r\n@Injectable()\r\nexport class AccountSettingsService extends AbstractAccountSettingsService<AccountSettings> {\r\n  protected url = '/api/account-admin/settings';\r\n\r\n  constructor() {\r\n    const restService = inject(RestService);\r\n\r\n    super(restService);\r\n  }\r\n}\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AutofocusDirective, LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { AccountSettings } from '../../models/account-settings';\r\nimport { AccountSettingsService } from '../../services/account-settings.service';\r\nimport { AbstractAccountSettingsService } from '../../abstracts/abstract-account-config.service';\r\nimport { AbstractAccountSettingsComponent } from '../../abstracts/abstract-account-settings.component';\r\n\r\n@Component({\r\n  selector: 'abp-account-settings-general',\r\n  templateUrl: './account-settings-general.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: AbstractAccountSettingsService,\r\n      useClass: AccountSettingsService,\r\n    },\r\n  ],\r\n  imports: [FormsModule, AutofocusDirective, AsyncPipe, LocalizationPipe, ButtonComponent],\r\n})\r\nexport class AccountSettingsGeneralComponent extends AbstractAccountSettingsComponent<AccountSettings> {}\r\n","@if (settings$ | async; as settings) {\r\n  <div (keyup.enter)=\"submit(settings)\">\r\n    <h4>{{ 'AbpAccount::AccountSettingsGeneral' | abpLocalization }}</h4>\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        type=\"checkbox\"\r\n        id=\"IsSelfRegistrationEnabled\"\r\n        name=\"IsSelfRegistrationEnabled\"\r\n        class=\"form-check-input\"\r\n        [(ngModel)]=\"settings.isSelfRegistrationEnabled\"\r\n        autofocus\r\n      /><label class=\"form-check-label\" for=\"IsSelfRegistrationEnabled\">{{\r\n        'AbpAccount::DisplayName:IsSelfRegistrationEnabled' | abpLocalization\r\n      }}</label>\r\n    </div>\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        type=\"checkbox\"\r\n        id=\"EnableLocalLogin\"\r\n        name=\"EnableLocalLogin\"\r\n        class=\"form-check-input\"\r\n        [(ngModel)]=\"settings.enableLocalLogin\"\r\n      /><label class=\"form-check-label\" for=\"EnableLocalLogin\">{{\r\n        'AbpAccount::DisplayName:EnableLocalLogin' | abpLocalization\r\n      }}</label>\r\n    </div>\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        type=\"checkbox\"\r\n        id=\"PreventEmailEnumeration\"\r\n        name=\"PreventEmailEnumeration\"\r\n        class=\"form-check-input\"\r\n        [(ngModel)]=\"settings.preventEmailEnumeration\"\r\n      /><label class=\"form-check-label\" for=\"PreventEmailEnumeration\">{{\r\n        'AbpAccount::DisplayName:PreventEmailEnumeration' | abpLocalization\r\n      }}</label>\r\n      <div>\r\n        <small class=\"form-text\">\r\n          {{ 'AbpAccount::Description:PreventEmailEnumeration' | abpLocalization }}\r\n        </small>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <hr class=\"my-3\" />\r\n\r\n  <div>\r\n    <abp-button (click)=\"submit(settings)\" iconClass=\"fa fa-save\" [loading]=\"loading\">{{\r\n      'AbpAccount::Save' | abpLocalization\r\n    }}</abp-button>\r\n  </div>\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { AbstractAccountSettingsService } from '../abstracts/abstract-account-config.service';\r\nimport { AccountTwoFactorSettingsDto } from '../models/account-settings';\r\n\r\n@Injectable()\r\nexport class AccountTwoFactorSettingService extends AbstractAccountSettingsService<\r\n  AccountTwoFactorSettingsDto\r\n> {\r\n  protected url = '/api/account-admin/settings/two-factor';\r\n\r\n  constructor() {\r\n    const restService = inject(RestService);\r\n\r\n    super(restService);\r\n  }\r\n}\r\n","import { mapEnumToOptions } from '@abp/ng.core';\r\n\r\nexport enum eTwoFactorBehaviour {\r\n  Optional = 0,\r\n  Disabled = 1,\r\n  Forced = 2,\r\n}\r\n\r\nexport const twoFactorBehaviourOptions = mapEnumToOptions(eTwoFactorBehaviour);\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { AccountTwoFactorSettingsDto } from '../../models/account-settings';\r\nimport { AccountTwoFactorSettingService } from '../../services/account-two-factor-settings.service';\r\nimport { AbstractAccountSettingsService } from '../../abstracts/abstract-account-config.service';\r\nimport { AbstractAccountSettingsComponent } from '../../abstracts/abstract-account-settings.component';\r\nimport { eTwoFactorBehaviour, twoFactorBehaviourOptions } from '../../enums/two-factor-behaviour';\r\n\r\n@Component({\r\n  selector: 'abp-account-settings-two-factor',\r\n  templateUrl: './account-settings-two-factor.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: AbstractAccountSettingsService,\r\n      useClass: AccountTwoFactorSettingService,\r\n    },\r\n  ],\r\n  imports: [FormsModule, AsyncPipe, LocalizationPipe, ButtonComponent],\r\n})\r\nexport class AccountSettingsTwoFactorComponent extends AbstractAccountSettingsComponent<AccountTwoFactorSettingsDto> {\r\n  eTwoFactorBehaviour = eTwoFactorBehaviour;\r\n  twoFactorBehaviourOptions = twoFactorBehaviourOptions;\r\n}\r\n","@if (settings$ | async; as settings) {\r\n  <div (keyup.enter)=\"submit(settings)\">\r\n    <h4>{{ 'AbpAccount::TwoFactorAuthentication' | abpLocalization }}</h4>\r\n    <div>\r\n      <div class=\"mb-3\">\r\n        <label class=\"form-label\" for=\"AccountTwoFactorSettings_TwoFactorBehaviour\">{{\r\n          'AbpIdentity::DisplayName:Abp.Identity.TwoFactorBehaviour' | abpLocalization\r\n        }}</label>\r\n        <select\r\n          name=\"TwoFactorBehaviour\"\r\n          class=\"form-select form-control\"\r\n          [(ngModel)]=\"settings.twoFactorBehaviour\"\r\n        >\r\n          @for (option of twoFactorBehaviourOptions; track $index) {\r\n            <option [ngValue]=\"option.value\">\r\n              {{ option.key }}\r\n            </option>\r\n          }\r\n        </select>\r\n      </div>\r\n      @if (settings.twoFactorBehaviour === eTwoFactorBehaviour.Optional) {\r\n        <div class=\"form-check mb-2\">\r\n          <input\r\n            name=\"UsersCanChange\"\r\n            type=\"checkbox\"\r\n            checked=\"checked\"\r\n            id=\"AccountTwoFactorSettings_UsersCanChange\"\r\n            [(ngModel)]=\"settings.usersCanChange\"\r\n            class=\"form-check-input\"\r\n          /><label class=\"form-check-label\" for=\"AccountTwoFactorSettings_UsersCanChange\">{{\r\n            'AbpIdentity::DisplayName:Abp.Identity.UsersCanChange' | abpLocalization\r\n          }}</label>\r\n        </div>\r\n      }\r\n      <div class=\"form-check mb-2\">\r\n        <input\r\n          name=\"IsRememberBrowserEnabled\"\r\n          type=\"checkbox\"\r\n          checked=\"checked\"\r\n          id=\"AccountTwoFactorSettings_IsRememberBrowserEnabled\"\r\n          [(ngModel)]=\"settings.isRememberBrowserEnabled\"\r\n          class=\"form-check-input\"\r\n        /><label class=\"form-check-label\" for=\"AccountTwoFactorSettings_IsRememberBrowserEnabled\">{{\r\n          'AbpAccount::RememberBrowser' | abpLocalization\r\n        }}</label>\r\n      </div>\r\n    </div>\r\n    <hr class=\"my-3\" />\r\n    <div>\r\n      <abp-button (click)=\"submit(settings)\" iconClass=\"fa fa-save\" [loading]=\"loading\">{{\r\n        'AbpAccount::Save' | abpLocalization\r\n      }}</abp-button>\r\n    </div>\r\n  </div>\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { AbstractAccountSettingsService } from '../abstracts/abstract-account-config.service';\r\nimport { AccountCaptchaSettings } from '../models/account-settings';\r\n\r\n@Injectable()\r\nexport class AccountCaptchaService extends AbstractAccountSettingsService<AccountCaptchaSettings> {\r\n  protected url = '/api/account-admin/settings/recaptcha';\r\n\r\n  constructor() {\r\n    const restService = inject(RestService);\r\n\r\n    super(restService);\r\n  }\r\n}\r\n","import { RestService } from '@abp/ng.core';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { AbstractAccountSettingsService } from '../abstracts/abstract-account-config.service';\r\nimport { AccountExternalProviderSettings } from '../models/account-settings';\r\n\r\n@Injectable()\r\nexport class AccountExternalProviderService extends AbstractAccountSettingsService<\r\n  AccountExternalProviderSettings\r\n> {\r\n  protected url = '/api/account-admin/settings/external-provider';\r\n\r\n  constructor() {\r\n    const restService = inject(RestService);\r\n\r\n    super(restService);\r\n  }\r\n}\r\n","export const recaptchaImg =\r\n  'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZgAAAHQCAYAAACcMHxUAABGt0lEQVR42uydW2xcRxnHR3FbAWrLAy2o2ZmzvqS1iVGqYonkzMw63j2bS5s2QCNLUN4AVQghKEImIeXBabwXl6ugimoQQr0kPmf27NolFCgNdQIPSAhUpJKq5KGUklA1cRPbu2d3vYm9zNnYhEiuYjveYu/5/6S/Zr2W/GSdn+b7vjNDAAAAALBC9PdX11nfzW+Mp7yHY+nSPmug8E0keIkOTOzf+uh4IvKtf/9A9p0+xPtO/1zHFn1vPif6zvxa7D3zYmTvW2OR/WePd+w5fpTy4QwT6rAhnacM4TxFuRqiwv6xIewU4+pRQ2QeCYsjX6QRdw+NqK3UcjeFPpG7q1Uqo40//eHOHnWz/udbRwAAjc2OhHdHNOkdiKcr/7TSlalYqoQELclSPpYsejrFWKJYig0UpmOJQiU2MHUpmshfig7kZ/Q6Gx2Ymv3ont9folvsCuVOhZrOdC3cKVOhSpRnPL3m9TqpM8FEdtwQ2bepyLwV4vYbVKiTev0j5ep5X1BM2ocMoQ4Y3H6Ybnbua4m4m1qsIx/ZsPlHt5Je1UQAAGub3t5qU+zxibZt6eL3rFRp3EqVq7GEhwQqhcVlIF/VgqlqoSwzaoYK9yLj7jST2RITI54hc1NaQBf0789SU/1Lr68xoX7LhP1ks3T2UmF/zt8FrZfK6OxUNxEAwNqTTPfBUks0XR60BsvntGj8BwqCXJWoFkyHLxjT9oVRh9j6b6tZLZwKEzmPRUb9XdA7Ia5OU9M5qWUzxoTzpCHdrzLT3dESVe3UVO8nAIDV34/xJWP5kklDMsi7CObBE1cEU/eoq3Y/7L/iyU1QkXtbf/c3JuwXtHSeCAv1hXDE/viGiLqdAABW405GNfWkSs26Fv8dKzU9biW9wD9Ukbkkly6Y+otHS4e7FSazBS2e8/q7MzonKLeHGLe/3BLN3X2b+NktBACwenYysYMTbbFU4ftWqlKEZJBakt4KCKb+4mF+j0eOeHq9EOLqTf39S1S4B5hQu5u3DDcTAMDq6MlY6eJoPH3Rg2SQmmAOTlU7Pn18XjBrIyJTMeTIlF7PadG8wrgzTP1ymjl8T3PP2PsIAOD/Uy6LPla5O/54eTSegmQCn7UqmFrUfGaYcEtMjpynpvM6FfavmMjsD5vuPeu7jn6AAADeO3r6x26wEoVNsUQxF09NQzIQTLXjU2MLCWbtCUeoWcaz00zmJv3xaCbUaFjYfW3c/lhX19CNBABQf3pVtakmmZT3C/RkIJj2K4JpqGjRlHUmQqbzD8rdp8Ny+KEWng0TAECd0Y1//XBptxJFN56ueFayiAduEAXz2GS1/ZMvzQumQaN82VzUKTJTvU6l+xNjixNHCQ2AukvmXLuVnM5AMhAM5U7jR2RmDZmtUOEUmHBOGFLt0z+3EgBAfSSz7WD5zlgyr6x0pQDJBEswPVowdwVAMAuPP2cv+WU0/fkNxtUhI+IInJcGQN0k42Wxk4FgApfariZXoVy9w2RGGdJ9YH3XEMpnAKykZHbO92QGL2InEyTB7P5dQAWzcK9GC8cLCfUHJp3Ph6xjHyIAgJWSzLn2eLLo72QwwhwEwRyY0II5BsEsUD7TKTKu/uQfxOlfOUAAACtTLoujJxMcwTwAwbxbmHBnLl9D4L5iSGdvOPLMHQQAcP2SsVJljDAHQDB3QjDXjnBna6LhvmjU10JWDqUzAK6vXFbGezIQDLKQaEz7L0w4X2rtUh8kAIDlN/5jyTJ6Mo0qmH4tmPtfhGCWLpqZyz0a5wSV6qHOXtzMCcAyy2WTuifjoScDwSBXpzYM4E+dUal+6Z8OQAAAy3vjP5Ys4j2ZRhTMrhcgmOvL3Hizc55y+4eMj7QRAMDSJLO9f6oDjf/GE8wGCGaFoqqGHJmmpjoVFuorGzY/eysByz32/QYCAtqTSZRz+tIySKZBBNN232+qkMMKDwIIt0SlOsa4vZ2AxdOpbgqbw5x1D+8mIKDlssHay5joyTSEYC5AMPUrm/n9Gf+a50OtUhkEXFMurRG1K8QzL4dk5hsEBH0nU8yhXAbBINcqm+Uq+vNfGbc/Q0j/OgIWlot04tTMnDIiuQkmnK8TEPCeTFL3ZBJlFyPMKJEhizgRwJ82E9mfhrtVCwFXyaWl295Oufo7k9kZKtzJkLAfIYAEXjK16bKENxJP447/NSuYeyGY93I3w4Q62Ww6n8VuZk4u4sg2fzCCydzM3OnWEAy4Ipl7k/mNVsIbtdK4fhmCQRYzBEC58qhwnmBieD0JKl1DNxpbDscZV68ycVkuEAxYuCczWG6PpXRPZhA9GZTIkMWONDOh/kyl2hnInctWf+eSOUVFtiYXCAZcsycTw1H/aPIjSzkJYIYJd5zJzLdvE8/dEqyeS+a1+bIYBAMWf8c/ejJrSTAoka2Ki85GylQ4rmGNbiQNjWoypBP/354LBAOWJJkd6XynlSiiJwPBIEtIbZxZqJfDXO1q0IfDOv8lylrPZa4sBsGA5ZfLBtCTgWCQJY4zz1KhzjZLe9/tPermRtq5hLu1XEz3VSovywWCAdctGRz1vwYEsxOCWX0ls1ye8swzrfGjRkOUxaLPCmpmTs6XxSAYsIKnMJcOW4lSPvAPdAjmP+ydT2gcVRzH66EFtVAvIiQzu8n2ZhHBHtqd2W2z702jqYhiDWgRcyvqrQhK8ZAl7LyXWE+VHoonLWj2zSYign/qQRSkKPFPY9PSehBbKDaRmOzuvJ3Nphlnd7NhtQiteUl2d74f+F7n+D68+f7ee8hdJGJOlnUjez56UMTb+rdYsHPpjovLDblAMECpZGgmP0R56TeCXUyLCuaz0C/mLZvkxLJm5K5EjeyRdpRLV/ysoRnOdKNzgWCAMgbTMzv6MsUhYpd+IUxWQr+gt6hgYhBMa8d0qr3MXE/SOaHFxb1t07mQ2s7lkra6c4FggEK5+DupXTxhce93yt2V0C/mEAyynpii+sssrxvZ0zFrald7dC5irXOBYIAyDqXnuojtnrJGK7OEScgFgkHUjTJLzcxO6mR8d6v+FusOOiOt2rmsTotBMEAZ/SdLvZS77wXjyX+hc4FgkI0q/8XXMUs80ornXDRDrHUuEAxQBkkvPEZs+bE1Wi4QG3KBYJCNip6crGj7xc+xvk8SLdO5BHLR42LtnAsEA5SRYtKkTH5ljXoe5ALBIJvzxoxmOFejZvZwKxT6zZ0LBAOUQezFgUAq3xHuLYV+0caYMrKZMZ1bwY7hWiSZfXHLfosd/CDoXJzLjd9iEAxQhmUvPkkz7o+Uy+XQL9gQDLI1kqnmZiQx/tKmy8UQ8ebOBYIByrBY4VnKvAsW9yAXCAbZcsnkbvYmxLHNHEXW485Mo3OBYIAyrLFALrw0TVnpVugXanQwSOtI5s9ownl1My6ubO5cIBigDJJZfIHY7iXKJOTSEYL5FItzx0T4minme5LZ4xt2zqXWuYi1zgWCAcqgrPAc5aUZyAWCQVo1opp5PSleUS2XHnN8f3PnAsEAZViZ/NOUyQuQS4cJ5nEIpvPi+EE3MhfsZF5WOopsOBcbnQsEA5RBefEJyrwfKCuh0IdgkHYq/tc9wjxYfyysqXOBYIAy+qvnXJicoszDjcidJphhCKajY+ZWdNO5EU2Io+vvXOpygWCAMiiTcWLLbykvQS4QDNK21/3nrkVNZ+DuD1GKQC61zmWl+i0IBigjNVJ8lNruOcpkmeL6l44Lrf0im4dgwpD6W/9XIn0icaedS9e/RpEhGKAMi3sxyguTFi+7uFsMgkHaP3piYlmLZ3+KpHJ77uRW5Ga5QDBAGQOn/AeJnX+X8vICrtzvcMEMQzDhksxkRTc/PBfsTvT/HEVO5PbVR5HrcoFggML3XPz7yUj+pDW6PAu5QDBI5yWS+MiLmNlcbO+Xu257Q//A2fqV+6vnXCAYoIxjZ/ztqZH864fGKtcpx0uUEAzSwZKRWnz8nW17z2zfVsOv/RbTDedi47cYBAOU0pfJD1nc+xXPHEMwSBgkM5GPHMi+0RhFbu5cIBigFPpWPklZ6Xtcuw/BIOE5iNltjM9GE+JNzRBTjetfIBiglIG3yw8T5n5hMVnGxBgEg4QpovoyZkkzRU0uEAxQCrX9hwiT71NezkMuOGiJIBAMUMJg2t+Rst0Ra6zyB8XEGO4iQxAIBqjCsotHCUOpD8FAMAgEAxTSz+S+FHfPE4ZSP/SCwYuWCAQDVNGfkTplnkO5J3GYEoLBm/wIBAOU8FT6xn2pjByjo0tzkEsRgsEOBoFggCqoXXjeGlu6SpiL3iXsgWAQCAaou2dsoZfy0jeUSbztgkAwCAQD1DB42t9J7eJrlHsFjCQj6GAQCAYowff9e1KZwhHKvWnKJBZW5J+CGfgcixoCwYD/R2qksIcwmcV5FwSCQSAYoIxn0v4DhLvDFi/PE+xekNsEs+DvPgzBIBAM+Ju9c4uNozrj+MaEAOVOoajxGSdcUqkxBEQEzs6sw845k0BEQAgRUVS1vCCoKvoAAir1ASaxz5lJgoBSLgKpBXFJdmfXAQQIaEGoIEhpEPCCQFCJovBARMGO57qO7emZQ1aqKiO89to7dv4/6a9dyW9e7/n5+75zzrRK1hob8K/Z4DY+ZG6CBRWZSjCoYBAIBrQOE/5q6sS7mIgnqAiwoCJTtchQwSAQDGiNsp2eQHnwe8qjr6VksJgiaJEhEAxoD0yEm6mTvMcctMYQCAaBYECboIPxCkuEj1ERHcJ1MAgEg0AwoC1seuCzY8qD/m+Yk3zB0BpDIBgEggHtgjnhxVQkL2HugkAwCAQD2jjYHz6FiXArE8lBnHlBpiuYc694NSXFChY2BIIB3w/l4SbLGfsHzrwgrQnmr1Iw2Zfbw+KGQDBgqsF+1M1E+CDjYQODfWTagtk6Mrnqir8FWrEyQvRqKDMuRTNJjHqqlfakmjGUfeEhHwSCOVKx7bSLivhX1Ek+w2AfmW6yvxXGg5HibV9sJkWvWzN2Lyfr66tIqVYmxcotRK/ukmL5QL7uJ0Y1yGSjpKPSlE9dpoZFEYFgFivWgP9zKqLd1MFllkirgvFHNoqor2CnXYUp6Cm9eOpZ+jMrpIDO7+mvGt26d63Wv/sPy/Xa08So7NOK3ufyNdBKz6YqmXB0DxUPAsEsBrbY6TJzMPytlMuXqF6QVsJELBOM0MFIV4KZAarqKdX7etZVb+gu1h5RFY9RHSZGTQmHGENYMBEIZqFiusEFzIn2UBGnuG8Maa9gWmft2veOPru052fEqNwohfMEKVY+JXp1QisNZS01VDYIBLNQKNufH2vx4FbmxAeog23JyMwEY26LDCWYOYAUXzlNWz+0nvRVdpCS9262iSCb3xCjjoUUgWByf6jSSV5CawyZjWDKg6MlJZg55ty+p09aoXu0u1R5WNOr/5IVzaRWQlWDQDC5Y8u96XEmD+5gIvwPDlUiMxdMOGINxqXCFu+owjxyjr7nJyvWVX7ZbXivS8FEcl4D0SAQTF5gYrTI3OQVtMaQHAmmdcpvLF1ZqpW7i5UniV79VrbPsO35SA8E01mutNMfmSK4k4noGwgGma1g5Gu/EkyH6TF29RKj8qceo3ZAKz03CdFAMKAzp/YvsbY3cKElMnvB8ODgFILpsGjqvVqxeh8xvK9lRYPWGQQD5ovy4+mxZrZzTMRfQTDI7CuYpmBSKZh8Qfrraw7fJjCu4TwNBAPmHssNzrdEMkQF5IK0pUV2kA7665VgcondJauZq4le24f5DAQD5pCy/cZSi4c3SbnsR/WS84gQgmkjpxvPn6gZtduJUUPbDIIBc8GGHckq6kRPURFN4tR+fsOcRAmGOfGCEIy5bfhSJZgFgDxDcwHRay9ouGQTggHtw7btLsb9X1An+RjPe8nv5ZGW20ipE71u8vjXlPtvM2dsLK/VDBORTDBaHhguK8EsFNY+ejTRvZs03ftKVjNYkCEYMFsu4+FPTRE+SHl4CM97yV8sd0ym8Q0TPu8X6RnyI1si369mInxH/iz7zCCYNrN8XeUiolf//p1kUM1AMGCGpHKxCjczt7EP1UvOIiIplkMpc+O9G3jAeu2PlhX+h43cP4+JKI+SUYKRkYLxF6JgFGeuefJ4Yng7NGMo0XC/GQQDWsdyvz3Z5P42JmIf1UuuWmIyyQTj4Z/LdryykKZLClOgJONEey2noSSTK8E40Sjjw6YSzAJGM7zriO4dQMsMggEtkj0QionkZVxqmZ9IWWRyOUC5/7uNO9PjCz9A1i6jInrTctVMJkcVTOgz7i90wSiW92ctM++f8l4zLNIQDJgOZTtdykR4MxXRfggmH7G2j0u5RJ+YPLis106XTf/+uMZqxsO9zXZZXgRDB0aoEswiIHv0c7bLDFuZIRgwDS534pVZC4aJcAJbkzscER6WS/Im5eFFW7yWF2XVLqNO/HZTMjmYwUjB+ItFME3JHEf06mN4wBkEA34AU4xeZTnJ+xjud14uaubCo7plJ2cXbLurMCOaM5m4OZPpdAUTmFtHmBLMImJttpXZqO2UmYRkIBgwBeWH0hMo9+9mPMJwv5MRkYopgj+W7dHTC7NHtctMHr5luYfUTKajguGBEsxi3H1JipU7iFEbxzZmCAb8H4wHaywRDVEHz9vv5H/5stKYkO/vL9vDp7T1871HSaY5k4Fg5ghNr9ymGfUxnPyHYMBh0jRdQgeD6y238TFz0B7rlFyY2xhnIth+oZJL+9m4s3Ee7cw5meYMJrAGAksJZhFD9OqdxKijkoFgQMYm4Z9BeXCvyYMxtMc6kO8W3wkpeafPTk8qzCHNmUxTMvMumJ2LXjAKUqzcRXTMZCAYUMgeY0tF/BpuTe6QXOTv3eTRA6otNi8XmQYXmjx813LV4B+CmauZjF51NaOO3WUQjOQIvpaf8tEbmZP8G2df5juhOkRJRfiXS8TojwvziOk2eufznIwSDA9Dtj3YoARzRJD+l70zfZGjCOPwJOCJCqJGcWdVRFEIiYmrm8xsdKeresYYzUU+eX31Qr8ED/xgmOx2V/UmKh4giIhgwGRnVTyCkA9iQBKSiOIRPLKJEBIMntmZ6aqe2cmmra44AYluDrsn2a7fA/Uv9NNv/d73reld+cqbGMaEYEwO9y8nTL4cLbbEB7/TQ5St0HLq7/SVxZWn60G5zmQybcFIQfhYSQvGEC4rVC5Qwf8mSAaCMZLoCVviNT5B9dL5CX0l9S02H7s2uk45bRVsNIzJxLa2ZJIXjG+SYDRZEk38D3/TvQBPMUMwBhFNhxej6zGvsReC6dyh+lpMjt5WHu+NrihPewbHxVydyfDkJEOZjIQqDRSMRn3E5qss5vcstjBDMKZA3V8uj7rHKAsCdI91cCuyG1Qtp7b0usdHz8mcGehKxnJlO5NJTDC259+hBWMg2XnD9yvBtBD6QzBGUHTELXSo9RFWw3RwBYzXbFkDtZWz9VbkM4uF7p+zrYRamNuCoby6UAvGULL5DS9izT8EYwTU8e+jPNiF9uSOHP1YGHH8t3qfUR1jZyilo5mMbmGOWTDSeMFc2vfGherDthmSgWBSzZKh3y60HLGaMunjeqwzzxwTV3xnPXtgZqYcTs+cwdgDB+cSPSejK5k4K5iAuNU79WZog7lqQaVHfdgOYp0MBJNaSqx2I3XlesLkYeweSz53IY5fVYOUy+LMXZKvZGS7uwyCiZnu3PAT3X3oKoNg0jv/Uix641uo1zReAMkeEVUvh/vLY+688h8XTbUFqIQFW9vdZfEIRkAwipkzK2ersP99SAaCSR0PvhaeRXj1McqCnwmXISSQbO5SGKhtK5QPXJPMvEvyE/9RJRM1J8QhGGuwugiCObp5eamSzAS6yiCYVFFaW59BnPorhIlDuB5Leno9qN+26uBS/dzx1ETPyRCmMpmh1sT/DPkhmL/p6l13U3dfZWc3Ni5DMGmDDMleyoOPCUP1knSw31/+89Vkllh2fq2M5YpvtWROvYJpWKurd5kumK7eDTepqmU0i04yCCaN2I5cYfPmt5h/SXZa3xqo7s09vW9Wcl1jna9kKAu+UeKcOGXBuMJowXTdWpmT7av8iDZlCCaV5F7Ydx51/JWUyV+QvyR0mDq8cbj/2d+fKjz66wWZFLFwbVMF//5OlS1NnMJT0A1bCUavxzFykv/t2eqjthtygWBSvj1ZqPxFtpC/JDhQ6dY3z3tqfzaTQiiv3kocf+dJXZcdqWCaRgpGy+UdJZfKD919kAsEk170EB31mu9juWWCwT4PatGHVAf7KcV+Pgr+A53JnIxgKBN3myaYrgU6c9mFzAWCST3EEYup1/gCgknujRfK5AaqHxBLN3c+385kWhMQzCRy6RtG5gLBmLGev8DEQ5QF+yGYJKqXILRZUCWDrVKPmjXKGACNMhlHfHlcyUSVnRZMwxjBZHOVWchcIBhjuIuHFxO37hAua2hRTiZ7oUyOUBZeYliupyRT15nM5IKRTeKJxVowBgT63fnKd8hcIBhjuH2wej1x5TrsH4v9tP/Qq9RtFHX1YhgL1yrJuGI79cZbk1yRjR8RTJhiwZSnX5kbyavqZTSLFywhGJMgXi1fXHNoE/aPJfMEMuXiw3y5PsPYDd3RdZnrb6e82fovwVhMLNGCSatcbldyyQ+P4loMgjEO4sjllDe/Rv4Sd/Yi9BBhkVUfUB/Pc42+hl2rtjC7YouqZMaPnYOJBNPQgkmjXPSzyLnhnyAXCMY8wnAaGaw/QnhwAAOW8R47mtrnYptdDq7KACWZppKM1NdlxwjGEUu1YNIml3wl15Uf+aEb12IQjKkPjFFeH7CZFHhgLPadYxOWI1eWomeQgWbJi81/ZjJHmkpattfUgklb5oLdYhCM0RAnuJq49deJK1sQTMyPibli76I143NUH7jxW4KPkQwTO6JMpi0YysQyLZgUVS4q0EfmAsEYjZ5XoFy+R1gQooMsvkO98ZCy5no9WAmOocTHeixXfE69VitVgtGVy/q56iOF9S8QDLBYvd/2Wp+igyzOI6IK5hBxEO5PxiLPn0WY3KH33zm15VowUz7Qf3e+yly+R+YCwQBFkR/pIMOK/vgO5Y2QMrmn9FzzRr2SH/y3ZNYcnKOEvNVyxlZowUxlufS/p67FkLlAMEDT82B4FhkUjxAm9xO0KMd6PWZ7wfACHl6cAcelpLrL7vDqM7WMp2zm8nYum0fmAsGAo/SUw/MpE6solz4C/viO5fqHiVN7AtdjJqAyl/nrbu7Cyn0IBvyTQrl2KXX8l4grJkyXQpyLLaOKsMDHbFyPpZt25pLNIXOBYMC/CKZ6HXH9daZLIc5D1WoYmzU+sAZrN2RAquVydT7KXEZ24VoMggH/QtEZu8Xm/kZcj8V0mFAniKqY1Xr3GEgl7cwFK/chGDAJlutTyoPPEPDH92olcUW96Mh7ci+E52VAeq/F8iPIXCAYMBmFQbGM8PGv0KIc3/Q+ZcGewpCcn8mE0zIgXbQn9POV3WhFhmDAcbBd/17ba+yCYGJsT+aNjchf0ioXPeeCzAWCAScyA1MYqD9MmNyHNf3xHHvNISWZ5lCh7F+RAenLXHLIXCAYcEIsfi083+L+k4TL37Cm/y/2zi02iiqM4xNFffPy4INhd9s+mCBCaAKl3UtLd7YUGoJcFFFRLsHEEEXjLbyZBruzpQXaguiD0UK3dOdyti23JgahJsqLqUbQGERLpWC5WdqyN0pCx2+2gbRbCuzZsbDd/y/5ZTdNd6czk5x/z/edmTHB4f7LYEllZEN+ee/jApg04WKdJ+dZ7LjOBQEDkliirD9ZvDnyqeiNhrCKzLT+y3m3dPWFso36YwKYJOESpHBRTqDngoABSVAmhZ6mHsz2EvqvGwGTuvGbhfqiJz1bI3lo8E+OcLEUtsy1FCi/UFnsRsYPuAgYkAwLaiLPiL7IF24pMpTp4WDe7fmjRz1SaLoAJkVZzFqgnEC4IGAAV4kslu3xXa9Hg9+sEtkgGfvKeICbACZDz+VnqxPhgoABXBR7QzOorKMhYMwLmPlbYptLcQV/mpfFVCqLqcctmLkgYBAw/JRKA/meylgbVpCZ+IjkymsbZ2+68oQA0HOBCJhMhko5RaJ07YgoIWDMuQdZdNBT0bfGeASCANKwLNaYZ0HPBSJgzEH0hUtFX+wYAsakW/RXhHvFiuiysh1YopyeS5E16rkEES4wrtXJBqwO9oEAeGcwkcUULh1YomzOI5IprDtFX0iMP/YXpFe4xHsuCBc4agZzlV43CYA3YPpXiFL4NwSMOUuURSn2XUlleKYA0ipc0HOB4wRMyOZUPxEAb8CEXxW90ZMIGJMa/FJ0J5XIpgogPcKlODDHUiD/inCB4wRMOMupeQXABw2Kq8hTCJhUjegeb/gG+aHL1/+UANIgXNicqXb2E3ou8A4BE7E6lWoBcN+qf7VHinYaAeP2hofN+LDg0Dh+UuS6e/PA6tnlPVhB9qAvRRbpOhe7etzqaqFwUfVJqVPjNP7ZoQlUN8H/6xjGLE5lhwD4oMFxrVuKdrm9Ud1dEbmD4XvXm4EaM8CKyKBHiiw1VpCVl5c/ZLaqqj58v6TtT2lvb59i/B1CmmMrbJ1udSjfD68QUu5mv8Uh95FX+FQu0yuXtO0LVjunDuUf2vY5PtWzFrsycdI2zZD2+3zicaCfXxp7bJXehPPUN+a8O5UBCtoQHQv6XaVOAHysq+nasL6268Kbdaf19XWdcdfVdupra7v0NSN8o/Zv/fWaM/qqmu5bvrb9rP7KtnNkzy1Xbj2vv0yuqL4wxpeqL+ovVl3Ul1VdmnCXVl3Wl2whq/7l/o7l1ZdoH2hfbutF/eVtPdfe/fyPt+v3qrmyLM9IlAbq3GAwmMdjS0vLXPq8S9O0Qh7pO9yKoiyg96XJanyOMbaYtr8sEAjM6ejoeERIY7KL2bRsu3+hzRUssbmUElvBOOY3zc9yqKK1SCmyztMKk9VWrLosrkC+cVcAHrOL1dypLnkWjzYnez7bzqYla1aB/JyliD2bVaTmTIz7c7LtTca2U9ZSpM4cdRwcaq5RBk08rjaX6hp5nnLo/Nrsmmfkubc65NIsR2AR9efKctzyLAHw8Zn/8Mf1gYNhWQ3qI21SmhNsibs3wcZE5WH949ggt94398j79IZAat/hJ8fbt0aldUjR2FXGWC8NzGOkAbqPXvvotZ9H+uxACobIMI+MMcMYvf+T/o6F5KMCAADcjV3+wx81yPtDjKk602CqBhnTabbwwMkY45ZmT0PNzc3dxgymra0NF5ACAO6NnQ1H398tH+xnTNM1DcJR3gyXTsbYUoQLACAp6vzt71HAXEHAwNuFC81+ziiKgnABACRP7Z4j7+wOHLiMgIGJ4cIYQ7gAAPjZ9nX7W/VNh3oYYxk/qMLR4YKyGAAgJWoa2tfulg91IWCgIfVbhsi/6P0ShAsAICV2+L9dtUc+cAoBA2/2XBAuAABT2NX4zUq/sv93BAzChTHWjZ4LAMA0vtx7cHlAbT0eRMBkdFmMZi7ouQAAzMUf2LdIZc0/BoMImAwui53GzAUAYDrGvaZogDlGZvxgi+tcAADARKg8Mp/8AQGTkeHSjbIYAAABA80MF/RcAAAIGIieCwAAAQPTI1ywFBkAgICB6LkAABAwEOECAAAImAwMly6UxQAACBiIngsAAAEDURYDAAAETAYuRUa4APAfe+fuGlUQh9EbjSI+CkELX6BYWKiFKIqIFpKAxAdKFEzpn2BhHyxELFQCiimSkOeNl69ISBqxiIWCYmuCEQXfYApBG59h/SYYScxeVJwVd/cc+NiFNEtm5p4785s7FxAMKcU79BuyLFuYAAAgGBLpyP0X1FwAAMEQai4AgGDI/19zybLsGHIBAARDosRtNylpdGBgoI6aCwAgGBJNLm63cYvlYEtLCzMXAEAwJMqy2NcgF7fdIeQCAAiGxJy5jPk7cgEABEPixO006YwPDg6yLAYACIbErbk4yAUAEAyJJhdqLgCAYEj0ZTFqLgCAYEj0mQs1FwBAMKQ0cmHmAgAIhkSvuUg6jFwgkGXZ/AQAwZAYz7mwWwymCWfMWTDbOzo6FiUACIawFRli0dfXV+/TG8b9KoYmJAMIhlBzgSi0tbUtk3RzeHg47CiccP84yanZgGDIH9VcJD3yqcjUXOAHzc3N89w3ToWt6t/PoCtImnAamckAgiG/TPjfU3OBYqRput7jczSIJfSVGZJ54+8nmMkAgiG5kTQVF3DPOEsTgO+Emw33kYsz5DJLMh6zr3mDKSAYkpNZd6Q3+vv7N4YlkQSqnkKhUCOpwX3jfd7Y9N9CXvEmU0AwJDeSpl57LOmCdwutSKDq6enpWSvpvvvF79ycvLZkjrO8CgiG5NZh3A5vfcE4SvG2ugnt7z5xJUcueZKZsGSO8NpsQDAk90LhzzteKtvCU9tVu2usVlKTx+MHSX/UdzyOn/s5mQYkAwiGhOQVb9t9uOVqN09NAlWFpG0ej09mzF6QDCAYEnXL8idJZ3p7e5cnUDW0t7evdB+44Weh/vYG5bmkw0gGEAwp9tDl9Jr68dbW1sUJVDxdXV1LJF22IGLNgl+6/xxw/1mQACAYUuQi8cDZw0Wi8g+ylHTabf1ZUrT+E5baLJl6+g8gGJJ3kbjlUPSvUMLF3zWTRknv3M5R+4+X2kIfeuyxXYdkAMGQvJ1l1y2YDX74jqJ/hb3fxW2712Pvmdu5lDcpjy0xJAMIhsyOpOl38l9N03Qdkqkcubg9d0gatQT+xXLrU4/z/UgGEAwptrPsi3Ops7NzDZIp/xOSLZitku7myKVUM5nwnqF9IyMjtQkAgiE/Pen/yZ/n0zRdjWTKVy5+xmmT2/H2b21Hjl+Teej+s5eZDCAYMmf7stvpo3O2u7t7FZIpP7lI2ux2HMmRy7+ayYwFyfj3MJMBBEOKSuZcOBARyZTPETDhCKCwKzCCXGJIZnRoaGgny2WAYMic5TJJX/15Lewu44j//76gv1DSLo+zexFqLlEl49+2m5kMIBjyjb2zCY2zisLwaFRMbW2t1Iq2qdamNYaGFjX+bESoPxTFggRUlLpwIUVaRHBREBe6Mhs3XZmYxtpE0rcUY5pEx19EBBsC6k4tKBX7YwiIWtJOIr5HZqRihk7TO53JzHPg4ZvJfEy+ud+d+845595zZ0v8z0ja4/vXQky9asWl0YP5/bFjaQJxSZ6T8XV96+tqR2QwBAb+g6TCFNSswx13xWCWwapJXBZK2mqOphWX9CJj7mQxL4bAQLF1DuN+/Eg2m11MFebK70bpwXqp78cLvi+/+/7Mhx1Vv3Zx1VsRGQyBgWIx9Z8lbY8ZZuRlKlf6RVKz70W3ibVL86b/mHFEBkNgwBQVmZO+l12Dg4Ot7NN+4Ssie43LvW7/LyL0lKBwZSXWyYxL2ojIYAgMzJb8LwjN554W+5CnoS4hZFb+kFjs3SPpObf/Mbf/fA+3jllgNiAyGAIDpqg3c8THFz34rXLIjM2nymBjY2OXeiBeE16jpJlkFZErn/j/jCreGAIDZ1uUOW2ROejHD0bimYWZ6czhsEWuUvyA2/bLfKK8ln6gTEfFgVgcSj4PQ2DAFJ/KLOmEedUDRounNC8gbHZ+iXx/X1a4fV/28Vf/4q/VfhOLeT8eGhpqwZPBEBg4mzcTHLLIPOMB43r2bD/3XIvL81wZu0S6TT/KhyFrPdQ6LelD04ongyEwUEoSd0rSAYd3NvveX0N+piSvZYGkZrffK26/iSKJ/Fr2ZLKSbkZkMAQGSq0AMGF6HeLZ5Cm2CE2R/fKda1nu9no6vL98u9VjfwmR+cBjxVpEBkNgoOQpzT4edx/o9UB6X19f3/Kenp7LMxmExSyzl7fF7XNQ0im3Vb3/KAmRGXE/WYPIYAgMlJyfyecTJiTtd47hCXs1K/OTAeppIIkSL40hLBbaRyW9Z/7MT5Ko+35SEBlJwyMjI+sQGQyBgbl4NFM+fiJpu2kdHR1dmvdqLqrVvVpiyrHruDXZY3nSn31Q0h8IS9F1Mjkfh8OTYdo7hsDAXKc2B4fdN95wH3nMrI0V6zH7LAaWGtgXv9Gf6WpJd/hz74wV7JJy8dn5PpQkMkPuD6vxZDAEBuYsNIGk0+4n35jXJW2JBXgeoJdF/a2Ojo6GeVI+vyGuNzyy2ENH0lb3+wETFQ/+wmM55xmJObfju5KaERkMgYFUYhNVgn8wA5J2eOBuj5xN1D3r7Oy8IhYihodTDV5KhPYi/BXTsSVt9DVv8+M9kr4zM/ncU93f3/Nc8T/sxZirCZdhCAwkW09jUSls3Tzpvx3ycZf70rM+bopwmoXnWg88V3V3dy+KgT7qdkW+w1xchv1XGsxl4aH42pbEbDjT5uvq8PW8JOl9c9zPZ/JVg+v+Hqb0ZNzGB2w3IDIYAgPJkPTv5IAzBu5JczgqOkva7dd3evuAxx2v3+xz7jbru7q6VkWoKgQhPJ4QiBCe2YjX7B1dEgJiGs1CszjEK9bvRB7AtDtBH++/zdewy//zU/Ojr+NUXFfg54TAyhsuixmITYgMhsBAuQXnf0ia8jknzPfuc1/5vL0ekHbEnvX9/f23OZTV5ue3WAyC9ZLa/NoGn3e7z7/HAvKwHz/lx8/7vNd87I3Ff5LGzRG/b+7M/+fXEZQLhKSCJ7PP9xJPBkNgoOLiUxCAafObOWp+yvOLOWYhmZR00uQivGXiPQprdwqeE2JSZYl/37cbERkMgYGqEp8QChOPA8Ja81dkBhy+bKJqdwaBQWAAIBWSCiLTH1W7ERkEBoEBgNQic1rSXudkViIyCEzdfykAIC0hMh5b3jYrEBkEBgAgucjE4lbPErwugyEwAACpE/+S9keJHsrKIDAAAKm3hcjts8VaJ0QGgQEAKEdZmYHwZFgng8AAAJQjXPZOiAyJfwQGACC5yPgY62TW4ckgMAAAyWeX+dgXlbcRGQQGACB14v+fxZghMoTLEBgAgOSejKS3THMGQ2AAAFJ7Mj72WmxuymAIDABAGXIyuxEZBAYAoFyezJsej9jj/2/2zi02qiKM46MEDcRYHhC5KIkRX0xMjMUHEogao76IJgpG5EUhJlTiDVHahkpBKgpNhQZst2zpZQt75jvT7XarpWFbWlQUQVdKLFipXAUDCPZGaenl+J0m58EcCSGdA93d/z/5ZaZJ0+Y0nf46883MgWAAAEC7ZPqYrUQ0XSAQDAAAaL7qv53bBQKBYAAAQJNc7BmMfZ1M1D6EKRAIBgAAdMB/hwb571ELt08JBILxAqUU3sMOQPLVXoaY01LKNwUCwXj0H0wfqepOMtXAsGhMDDwAkqTu8jfLJbu2tvZOgUAw+vfBh/q5/XFLIFpWKuuOkxkaxEwGgKSQy2XuFzc2Nk4QCATj0RXeMaXky0sKWqetLt6XW05155QKDUEyACSsXJyzLzuJaIZAIBgP1l6H5cL9+UR0l+DM39IxY922HwIB+VWHOVyTwWAEINHkwgwyB4holkAgGI9uU41JKV9x5OLkjS+OPpYX2BPZISM9pgnJAJCAcjlMRC8IBILx6PWpPxHRPIbl4k5a/tEn8sp3NwXNSK/CTAaARNmOPMScMAxjoUAgGA9mLgP/WRa7Zqwxb+UfeWlLRdN+g8JXIRkA4n87cjgcPsP95UQ0RiAQjOb/Xgb4e7a5lsWuFZ81dlnBodeLgg3NZFb3Y/syAHE7c7EFc577nxDROIFAMLrlwhzl/gq3XK6dWXnWuA8Km98tMup/lyqEMzIAxKFceFn8IvfziShFIBCMB3L5g79fOhFNFjeY1M+slHTfwSy/UX+cVBUkA0B8zVzaufUPj30EgtFdc7Hlwv2MkfyCPZndOTGj6ODqUtlwXKrKQUgGgLiYuXRwPxAMBu8XCATjRc3FlksgEJgiRpg5n3bds9LfvHabseuUVDjtD8Aol0snt8FIJPKAQCAYD5bFbLmscOSiI0/ndN+b6ftlPUvmDJkhzGQAGIVyYbpNjmEYeA0yBONNzYXJ8GLd9fk8a9rHRfs3FgfrzhKWywAYbTWXLu5X8pbkhwUCwXhVc3HNXLRKpmdalv/nDduCu06jJgPAqJFLp1LKqKmpeUggEIwjGJ01F24zGO1ycRf+uydnFTfnlBj1J6XCchkAt7jm8g+3FdxiWSzZ4xKMJzUX7/Pshq5JHxY05/iNhhNkhgdw4h+Amy8XXg67xP0yIpouEESnYPjrjKDmokcy6b7YmqJgfZtU4X7cwgzATX0b5QWlVAHkgugWjHO32DHuZzozl1uRR7OtCe8VtiwrNHa3GGY1JAOA9+9zGeLlsLPcX881l4kCQbQIxn3OJdOpudzKpGZb49/efDjty+1NMZZMH676B8AbuTC2XE7wuM+qqKi4WyCITsE4NRelVLqGmYu+vG+NS9t05LVNgW/2BijSq1gyOJAJgN73ufDYb+X2HVxciWgUjLvmokMu+mONWZx/bG5u2XfRcvl1tz2TwQ4zAPS85pjHfYzbhbhyH9EuGKfmontZTH+s2xfknpy9ruSAKqW6i2SGhiAZAEa0Dbmbx3+TlPI5gSC6BcOfr7nm4n1ezLv0yKqt+3zFMnpKmlUDKP4DcONyYS7y2JdKqZkCQXQLhj/XVXOJlzzz+eWpywt+zSo0mn6zd5ih+A/A9VFK2WKxtyH/yf2NXMy/TyCIbsE4y2KumkscJXWFlbJ0c+vS/O17Dmynmiso/gNwXbn089hv5fajaDSKF4Uh2gXjrrnEc7KtOxbnnZy7oez72lK5s50qq4aUgmgA+L96C7ff8vh/1efzjRUIolkw7ppLgmR+7oXUlUUxf4mMtpmqssdeBoBkQLLjHJ5kzvGYMJjHBYLoE4y75uK6FTlBMifHmpLtjy3aQeEQP+dfzABmM8DE4ck2btcGg8GpAkE8EIy75pKwsW6rqjIe5GdewwPrED9vL/chGZCM1+xfUUrFmEU4PIl4Jhj+2JGLsyyW8OF7lMbzs85jdjHtWDIDSTRrsest5/njEBHNFgiiWTCuN1G6ai5Jkurq6pn83IXMMaXUVSyZgQQ/29Jn7xJjwawavgUdQbwRjLvmksQ/l0lElMZi2cv9Tv6ZYKcZ+Je9sw+tuozi+M/KXuhlpmWGSlTSYlhR2puVGbpRBI0sspZZFhVWiFk207AJkZJhUiYxZaPFducRIXWujdTF0vWHw7dSaqYmRQs3bRPXNnVbnyO/0W1oWu3u5d7vB76c8zzPGHr3+51zn/e467X4/S0836U83w/pyBcR0wTTPudiZrPD5JLQtLW1nc3LeA+fSR4v4n7sMSUZKU56Lb63ZQ/lhWY2LBAilgkGRc+5JHxyicZ3LvP5vIoqUL3mZqTe3GvhGT7IM/wVdY8XFxefFwgRK3jI0njgvkb78N9Scjk5vsnMezN8PssYq96r3ozUy3bje2JpQlX48wsLC68LhIg1nIg6jgcunyGgOVidMXQafBKUF/ZlXtxyPq9DqEWJRurJw2G+r4X3u5rkssbMHi4rKzsnEKIr4JvMcD9228wGB+KM8MlQNMLHr8N9Mw2eYJRopB649NiHdCvxZ2rTpOhy/NuMvtH8N/yKWL4VpvtxGn5trC9p1gZNqScMh6Fmnsnd1H1iZrcFQojeCd8Mh/IyT+GlXk/COcBLruNmpG5JLPgtPIu/YovM7FHtxhciflbk3eTnN/GCb8b/Hb9FSUbqisSC9cMpa7Ab0XTNpwoRh/iyT178Mbzsi9H2cJOmejNSTOZY8H2e5RD+VjSXUyiSAyFE3C9rTuLFf4AFFDms4NnNy9+oRCN18gR+HV9gtlH3Pot17uCx6xMIIRJq2GwAwWCiHyLo+2eUaKT/NRSG9V4xdidazBeYu3TEixAJjpn1JxjcR5B4m0Sz3sfLUSvlhA+e0mkv/3Lf7T6swRR0g1Z/CiH+Bsmln8/R+B07+GsIIL4BrkW9GulkiQV7FPsD9jOekefMLAWdGwghxD8sBrjEr6Jl7HwaAWQF2uPHz2CVaFYk/KVf7jcyd7eF8hKUYWbDsrKy1GMRQpw5FRUVFxQUFNxIQJlMYsklqOzAb/Qgo+GzxOqthBska/HLGU5dQFu6lhsLITrlRAWGzK71zXG+KoggU0ZwqUYaPovjSXv+5l4+6j1Yyqvw30BjKQ8IhBCik++g6WNmlxN4xhCE/IqACNqFfwTbqmQTN3MrnmAO0WPdiL+EtknYm/3a7kAIIWKNBxsCUAqBaAJ6F61FJy4+0xBa7xwCo9zIl4dvKS/Hz+TvO87MBvPFQntYhBDdlmwu80ML0QsErGwC1DfIz5xqwbapZ9Mzkwry8jGSil/mV2Jm82h7BJuic8KEED2KysrKvgSqq8zsfoLXVILXUgLWJuqqw4MOlWy697bI9t5KA3Yff48vaf8Qf7KZ3Um5n3orQogej38DDpNNKnaaJxsCWBn+z/hNHui07LnLJupdR3zPCsNeq/EXmNkz6G7qBmq3vRCiVy939mTjmzh9GA3/AwLdKoLfNvw66luVcDoloUR/hsex1XzGm/AjKMvMMtCIvLy8gYEQQsTpjZuDCIa3sJFzPIFvFn6u76/A7sbWY1tRm+ZvziyhuDxJU67B/w77Be0foamUU7HXm9lFgRBCJNKyZ1+N5ntsfH8FgfEpP9adsiecDaiK+hrUTF10wmlXQiSS6GQSNY/VQPk3tJ3yWn42m7oZvlcJezv1A3VsixBC/JVwzjKzpPz8/GsIkPcSNJ+kPMNP5qW8kuBaQTDdS7nOkw7ygOuKTjxx0SsJE6rXt1D3B6pFu6hfz/BihDafR3mF9vH0BG/liuwh2qcihBD/cr8NGkzw9SNr0tAklEl5EQG3kGBbijbj7wnnc453XIrroi06CXV7TwR17JG1+q55yjX433M510Y/cNTM8tB7fi4c9Y9xTMto2pK9h6Lzv4QQopOH1fxmTs5Iu8LMUiKRyCiC8oO+1JbgO4sgvRB9SjBeTYAup34H+hH9Qv1BX6KLbQ0TTnTiOaVOnTBOLX5nx0l3Tx6HKR9AP4UrurbQtgGtRNm0z0ev8f+YSHsq/7eRJJNhJSUl/ZVMhBCi+27p7Our1fycLB9i80UEPq/jCwnCS9VeQm/iz8N+zM/loOWomLpytBXt9J4Q1pNRrZnVYw+jJtSMjroNdSRsq+PnD2D3Y6s8oWE3Uy4jwX3O78tHS81sEXqH+tdJIM/T9gT/tnTaRnvvLCcnZyjtSbm5uef7UGEghBCiV3Ci10Nv4OJ169YNIKhfaWZXkwyGE/BHEezTfAc79RnUPevJiPbp1M0MNYe6LOxct6E/29vwM8N9Pi9Sfhp/An46Gkt5pJklUzcEO6ioqOjS0tLSC3UZlxBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCiD/ZgwMBAAAAACD/10ZQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXYp3sThMEoCqCFbiSCE7mCrVMkGBvrWDpACsEZrCxsLLWyEdTrAomFf+A5cHmPEPhuSAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8RF3XvaqqhkVRjMuyLGKduc08JOfkkhyTfa5vkkX2STJqmqb/q8+VnvN0vLXlcc+ne3V1eqLzNTll32Wukmn2wWt7fT//+t13vPvlG8+dtZ3t/+XO3pWHaFVFcQrKbI+KVlqsHJBQykjDlLDpj0yppMAsi4IW2zTbLIWhIjcaMbQanQ11ipIWhfyyzZRQNAiLFJMayMpsTKfGXMZlsPODpwya95zve/ed774758LhzfLeXd49v/u7795zzi0KXDU1NTdRB82hjtqSYiBoozyaSAYfOHDgmIDa1x11k9Qf9wZNMHLZQP3wILXneCMYXb03gikzfi2FkTD4YBCijmn2PSBQvusA3hDaSfW4S1pv3JsrguH74QdqUy8jGF29N4IpI34tBbFkNIrkN4UBbiFde5S5rUuKqO8SbYJRkF0YUI1g9PXeCKYM+LVUvlRbW3shdcJi5QGincp8GUsS2u2tr68/n8rvKEJB9+OZXBIMP7ubFSfBhK/3RjDK+LVUlqWiYY61TA35qLGx8QTl2c9zxdYTz8RIMBB8ycRJMOHrvRGMIn4tqS8TPc7MBLRk2ezZs09TbPe6UtbRIyaYPfT++8VJMOHrvRGMEn4tqa7zTyp17Z7kG+qwerpOoZngC3R9kX6fSfI+/byCrjtLUIDvaEZ3btbthtlpqQMCno2RYCDYg6DB7kQG2ONLlN2OcneXmm9Mem8Eo4RfSyrLYk8U2Tl/J34AlRL7/nnz5p1E994JZQcwhWXsoHoNUmj7rFT7FQopDYBhEktEcR5JP3rmWZLmci8jwCfHUeY/pvc1g4xglPBrKdtEA89tRSwPtGLQaWpqOjXlRupCzlad6nW9hgk2lbU1xUx/K/IIi2B4wqFnH6M+2Cto32ZsPmsTjOm9LZGp4tdSZiC7iBRwu3A2uxL3exxkbif543/K2UYzi2uUZj/DPVhdDQ+SYPg8B5K0C9p3ozbBmN4bwaji11JmCvKpMMzIVCwJZGAOfSmV8Uunslrob70VNwcXpVVQ5BEswfDtf1LQvte0Ccb03ghGFb+WMumcBwQvfy/J0CzrUVdXdzH2Baic3+laodX+hoaGsxE7ytH2NyGSd4S8ckcwcgucpdoEY3pvBFMsfjkcs/i15C8VCoVu9HI3CT4fx2g5dip78gMcY11tx6Y4BD+rvid9gnmKsybTJhjTeyMYMX55grkWOOb6W9WrmypVlWzIrU1MDduSSLQFqsw4DwC7gORhklqSb5NZzA4wMtZik7K+IJlOMgKbi57XLh8VdMx7kS8PrnG0fX2nvlovUOQ1OSUY6EIfpm3/lpNgTO+NYDj8SnHsHb/YxDyagNkOU75e9Pf5EuualJYrS0k6inV8I1lEMsDDBudxlM9Gprwfybri5IhD4fRm2j++s6+HpI+QZx4JBo59TNv2hUAwpvfhEQwiTLvKVsAvJ88zOE6HX6bw/p3uGym1U4eUUI++JKs8OcF9Tuu3l6eYxQ3p6g5I1MZqR/s78IXZ+WtTOCGoziHBIO8zmAFqW0gEY3pvXzAO/KbBcXUmBANLkSxDUiA0tIy85JIs2z1UIrgbmbwLMZMLrIKojX/KIq3KI7UiT+Sdwz2Yq7hZfWgEY3qfD4LRxy+PYw6/XgkG+xvMPak8qCn/VzMO6TGl2GUCOI0xHXND5L4/tzAbfncc/gz+JukP5J1DghnP7UmESDCm97ETDI9f3zhG3j5f/NBST6iTsCyioyrFjJpaxNfUdZznNhHjsZEvjy1wvMsWDEZHWb9vEfTHgjwRDPqa8vmJAeq4UAnG9D5qguHx6x/HC7y9eMeMhhWBQr8iiTlEja2hNBw28YhbhOCC9PsVmE3R/yfS9WchydztyYrmrcjJ5QySdsdgOs3x7qZJzvZAGTlytJwg0K1LQiYY03uWYJaTDM5CKP+PXWXr4leOY2/4LZFAdiQeotWJrfVLJHX0t9UHN4kY8Awg2c85/1DE1NMly2zJ5uQmJr/tMK9Oa/WBk/widy4dzWzy9nREbe0p/DR/JCehYm4m2cfow1d5CHbZ1fUebQhRdPErx7E3/BZLLCCTuXPnnulY/zuLKnDP0f4PfxX4sDDl3Ffsi0WdYD3GgOQdQQetZF5un5gJhrHkWyZ4fplAj1aFTDAIXonAjcwkiNmXCItgurreR0wwPH7943iV9xefWCX09aDItUw5E1I4gJ6CsB6u2El0rWDexwZX/XCiXsTkUpF2mRH3CHWqIrRw/TBqSTb0f2XqzkxY8kQwcr03gvEvavj1j+MKny++laSHjwitTGyrxrRlJM6gHY4y3nA9z5j3tXfVA9Xg6yEZZHAP7hXo1KScDyDfYz8wAoIR670RjH9Rwa9/HMvxK2S8UVk7/yA6AGaRnsr5wHUgkuv8DmaDbEus5AILIcTUcvTPjCIGq9clp0GizJwOIK2kq5eh3DgIhtd7I5hsRAW//nEsx6+gQl+ymcgPcdrsKOdtjxYxtzLtGmgEc0S7Kxk9uFKaF+4VAqwybwMIzik5eOCVEYwRTFrJAr+KOK70QTAjPL2A/lxkXp/BOJk2VZWyVIB4ZxETzHzXgVK+N40Tme+r/krkslgjbLk+wfB6bwSTjWSBX0Uc8/jlTHtpOam7pxcwMZROhWOVbfIfYRyx02FBdH+xeeIZSTgflJ2DAaSVZCy+wg8v1zb5oyCYTxC7MAuhvN91lZ0FfhVwLMcvZ06q4l2qL2vNTFl8wFQbHFyLzRPP4FmZ0usTjPC0xtUgFg5EZqZsnvw6nvw8frVxDPwG8eId5sPqguUAl8MZA7R7IySY5Vl4cONZQV8sVyCYFXDcdQn16yy6TqbrMyRDKDT5OUyRkREMr/dGMAEQDINfbRyj7DQvfqZHBW4J6Atml8wTNv5QMTj7HLN1x97Y1aXmjWclXwqoQ8YDyNNp84+fYHi9N4IJgGAY/CrjmMcvZ9LmUYF3B0Qw+yzY5aF+qQrgi7LKCMaCXRrBxIRffYLZExDBbLVw/YdMx5sD6I9m1MUIxsL1G8HEgl99gvnLtWRF//9QUWYwStHQFQ4cgz9QQKQ/0AhGgWAYvbcDx3QJJlL86hMMztRw2dn7PukwfRTd+I9MRgTsgBS0zghGTjCm90YwYeNX/wtmMRs8LZCUHLqzkTsmlzFfDTrBv4kxI9aWNtTJCEZGMKb3cRBMvPjVJ5jJTFmjQzwXhT0qVzlJidhDtNTWZOO3vy9hBi/ISCMYGcGY3sdBMJHiV59gqLHDmMp9HRLAC4VCNxxiJnAUHKM46ExHzCi8Sw95fcb0/Ry/tedPvESdjGBkBGN6/197VxOiYxSFlbIklIhSSlmgbGZj5SezYKGIFDsjCxaUv0hTNpRSamJj8dVnrfwsJqQoNcQMC1MWfqKUBclvM5TnqWujybnv/Tnvdb9z6/R9zTvfvee+73Pe573nPfecnieYku1Xn2CYaoIFy/4VT03GTQjKfiz5l+XeIcss0JBNCk9w5/8ac1vEvBaypIFyxBDHXSWcz1/UzQgmnmAM9xUQTAX2q0YwbEJeHsooX/Yn2Hy0kpFpbgPSFRJXhM7DnmlFzlD3DO9KZqDvi1OM+ZOVPwOBclSYz1thz0O2nFfUzQgmHcEY7ssmmIrtV59g0F+fT4bdmJODVcssvoicYi53cWwj47WbFklj0k/PDUf3+f8Jz9dq9PtMWPXtDeh3XJjH2Yw3zkFh7HEjGAWCqQD3tRBMpfarTzBuvJsegO2GJGajS8yDYZ8iy+mchv1u5vLPN/Mu67l3u92Zoeeo0+nMdTmyXAoI0R9+MIzk49NKBF0j+fr3GcEoEEwFuK+FYGqz3zYJZgkNxEPJ55D+Bu93dvOJywOU5wJfcO1vGLb3kcaCtt7HhUBCxRg78JtrkImGqRoGGwB0SApDVXC/jAo6DBnBKBBMBbivhWAqtV99gnGg3doARI/xeYiszPj7P/5ZlqzFsbU4dppZAjz7GmGsf/Ka17J8gzzA+JeoL+Z/DN+PO0O8is9Hcj2H+Kc4FyH0QejvpAJAj0h1w3mNjWAUCKZ63JdPMDXbrz7BuEaQBYL2B5fQIUWj4BpbnEDvfYLbQEsYsTGQmNgJ0KW5AcrrIF1DHN9iBKNAMFXjvnyCqdl+WyUYurWEIkcp5QvdbYn39HxqMXvp95BS1nRDCP0+FLpQK3BFXY1g0hBMr+O+ZIKp2X51CEZe8l3InekTbrEVGeqoLBLS3+SS63QPBgBiHssUCNf7QEG+/UnqbAQTRzC9jvvSCaZ2+xUJRknZnYIvNlSGIbMz3wh2Qd4oGNiLmJ3MBJ/keoABL1DCJ1ew8zmmZDBGMOEEY7gvn2Bqt1+RYBQBu5ylbVOA0kWTndAqkOQ2hQ3kqM3AAAa+uKNLMfL8jgnj3G7hJnVL0GnMCCaMYAz3/wfBmP3q+3nXcTkcWKDsFX5/ivtcWjK46XiK2ODqm7+PMK6vkBuYy3Ya8TRr1jyb4d6aNc8d+czOyX0rAN0dyEsXojcJ+ewS8j3B3y9DDrNORWlGR52g4x4XMXfPZRh459LYTLjNaa8hI/jeYRgn5r3GjMtak2a4t1Zq+w2YOF3U9oaBnAAAAABJRU5ErkJggg==';\r\n","import { Component, ChangeDetectionStrategy, OnInit, inject } from '@angular/core';\r\nimport {\r\n  UntypedFormBuilder,\r\n  UntypedFormGroup,\r\n  Validators,\r\n  FormsModule,\r\n  ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { LocalizationPipe, SubscriptionService } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { AbstractAccountSettingsService } from '../../abstracts/abstract-account-config.service';\r\nimport { AccountCaptchaService } from '../../services/account-captcha.service';\r\nimport { AbstractAccountSettingsComponent } from '../../abstracts/abstract-account-settings.component';\r\nimport { AccountCaptchaSettings } from '../../models/account-settings';\r\nimport { recaptchaImg } from './recaptcha-asset';\r\n\r\n@Component({\r\n  selector: 'abp-account-settings-captcha',\r\n  templateUrl: './account-settings-captcha.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: AbstractAccountSettingsService,\r\n      useClass: AccountCaptchaService,\r\n    },\r\n    SubscriptionService,\r\n  ],\r\n  imports: [\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxValidateCoreModule,\r\n    LocalizationPipe,\r\n    ButtonComponent,\r\n  ],\r\n})\r\nexport class AccountSettingsCaptchaComponent\r\n  extends AbstractAccountSettingsComponent<AccountCaptchaSettings>\r\n  implements OnInit\r\n{\r\n  protected readonly fb = inject(UntypedFormBuilder);\r\n  protected readonly subscription = inject(SubscriptionService);\r\n\r\n  form: UntypedFormGroup;\r\n  recaptchaAsset = recaptchaImg;\r\n\r\n  protected buildForm(settings: AccountCaptchaSettings) {\r\n    this.form = this.fb.group({\r\n      useCaptchaOnLogin: [settings.useCaptchaOnLogin],\r\n      useCaptchaOnRegistration: [settings.useCaptchaOnRegistration],\r\n      verifyBaseUrl: [settings.verifyBaseUrl, [Validators.required]],\r\n      siteKey: [settings.siteKey],\r\n      siteSecret: [settings.siteSecret],\r\n      version: [settings.version, [Validators.required]],\r\n      score: [settings.score, [Validators.required, Validators.min(0), Validators.max(1)]],\r\n    });\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.ngOnInit();\r\n    this.subscription.addOne(this.settings$, settings => this.buildForm(settings));\r\n  }\r\n\r\n  mapTenantSettingsForSubmit(newSettings: Partial<AccountCaptchaSettings>) {\r\n    return {\r\n      version: newSettings.version,\r\n      siteKey: newSettings.siteKey,\r\n      siteSecret: newSettings.siteSecret,\r\n    };\r\n  }\r\n\r\n  submit() {\r\n    if (this.form.invalid) {\r\n      return;\r\n    }\r\n\r\n    super.submit(this.form.value);\r\n  }\r\n}\r\n","<div (keyup.enter)=\"submit()\">\r\n  <div class=\"row g-0 mb-3\">\r\n    <div class=\"col-2\">\r\n      <img [src]=\"recaptchaAsset\" class=\"img-fluid\" style=\"max-width: 85%\" />\r\n    </div>\r\n    <div class=\"col-8 ms-2\">\r\n      <h2>{{ 'AbpAccount::GoogleCaptcha' | abpLocalization }}</h2>\r\n      <p class=\"text-muted\">{{ 'AbpAccount::GoogleCaptchaDescription' | abpLocalization }}</p>\r\n    </div>\r\n  </div>\r\n  @if (form) {\r\n    <form [formGroup]=\"form\" id=\"captchaSettings\" (ngSubmit)=\"submit()\" validateOnSubmit>\r\n      @if (!isTenant()) {\r\n        <div class=\"mb-3\">\r\n          <label class=\"form-label\">{{\r\n            'AbpAccount::DisplayName:VerificationUrl' | abpLocalization\r\n          }}</label>\r\n          <input type=\"text\" class=\"form-control\" formControlName=\"verifyBaseUrl\" />\r\n          <small class=\"form-text text-muted\">{{\r\n            'AbpAccount::Description:VerificationUrl' | abpLocalization\r\n          }}</small>\r\n        </div>\r\n      }\r\n\r\n      <div class=\"mb-3\">\r\n        <label class=\"form-label\" for=\"captcha-version\">{{\r\n          'AbpAccount::DisplayName:Version' | abpLocalization\r\n        }}</label>\r\n        <select id=\"captcha-version\" class=\"form-control\" formControlName=\"version\">\r\n          <option [ngValue]=\"2\">2</option>\r\n          <option [ngValue]=\"3\">3</option>\r\n        </select>\r\n        <small class=\"form-text text-muted\">{{\r\n          'AbpAccount::Description:Version' | abpLocalization\r\n        }}</small>\r\n      </div>\r\n\r\n      <div class=\"mb-3\">\r\n        <label class=\"form-label\">{{ 'AbpAccount::DisplayName:SiteKey' | abpLocalization }}</label>\r\n        <input type=\"text\" class=\"form-control\" formControlName=\"siteKey\" />\r\n        <small class=\"form-text text-muted\">{{\r\n          'AbpAccount::Description:SiteKey' | abpLocalization\r\n        }}</small>\r\n      </div>\r\n\r\n      <div class=\"mb-3\">\r\n        <label class=\"form-label\">{{\r\n          'AbpAccount::DisplayName:SiteSecret' | abpLocalization\r\n        }}</label>\r\n        <input type=\"text\" class=\"form-control\" formControlName=\"siteSecret\" />\r\n        <small class=\"form-text text-muted\">{{\r\n          'AbpAccount::Description:SiteSecret' | abpLocalization\r\n        }}</small>\r\n      </div>\r\n\r\n      @if (form.controls.version.value === 3) {\r\n        <div class=\"mb-3\">\r\n          <label class=\"form-label\">{{ 'AbpAccount::DisplayName:Score' | abpLocalization }}</label>\r\n          <input type=\"number\" class=\"form-control\" formControlName=\"score\" min=\"0\" max=\"1\" />\r\n          <small class=\"form-text text-muted\">{{\r\n            'AbpAccount::Description:Score' | abpLocalization\r\n          }}</small>\r\n        </div>\r\n      }\r\n\r\n      @if (!isTenant()) {\r\n        <div class=\"row\">\r\n          <div class=\"col-md-6\">\r\n            <div class=\"form-check mb-2\">\r\n              <input\r\n                type=\"checkbox\"\r\n                id=\"use-captcha-on-login\"\r\n                name=\"useCaptchaOnLogin\"\r\n                class=\"form-check-input\"\r\n                formControlName=\"useCaptchaOnLogin\"\r\n              /><label class=\"form-check-label\" for=\"use-captcha-on-login\">{{\r\n                'AbpAccount::Description:UseCaptchaOnLogin' | abpLocalization\r\n              }}</label>\r\n            </div>\r\n          </div>\r\n          <div class=\"col-md-6\">\r\n            <div class=\"form-check mb-2\">\r\n              <input\r\n                type=\"checkbox\"\r\n                id=\"use-captcha-on-registration\"\r\n                name=\"useCaptchaOnRegistration\"\r\n                class=\"form-check-input\"\r\n                formControlName=\"useCaptchaOnRegistration\"\r\n              /><label class=\"form-check-label\" for=\"use-captcha-on-registration\">{{\r\n                'AbpAccount::Description:UseCaptchaOnRegistration' | abpLocalization\r\n              }}</label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      }\r\n    </form>\r\n  }\r\n\r\n  <hr class=\"my-3\" />\r\n\r\n  <div>\r\n    <abp-button\r\n      buttonType=\"submit\"\r\n      formName=\"captchaSettings\"\r\n      iconClass=\"fa fa-save\"\r\n      [loading]=\"loading\"\r\n    >\r\n      {{ 'AbpAccount::Save' | abpLocalization }}\r\n    </abp-button>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgTemplateOutlet, AsyncPipe } from '@angular/common';\r\nimport { map } from 'rxjs/operators';\r\nimport { AutofocusDirective, LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { AbstractAccountSettingsService, AbstractAccountSettingsComponent } from '../../abstracts';\r\nimport { AccountExternalProviderService } from '../../services/account-external-provider.service';\r\n\r\nimport {\r\n  AccountExternalProviderSettings,\r\n  AccountExternalProviderSetting,\r\n} from '../../models/account-settings';\r\n\r\n@Component({\r\n  selector: 'abp-account-settings-external-provider',\r\n  templateUrl: './account-settings-external-provider.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: AbstractAccountSettingsService,\r\n      useClass: AccountExternalProviderService,\r\n    },\r\n  ],\r\n  imports: [\r\n    FormsModule,\r\n    AutofocusDirective,\r\n    AsyncPipe,\r\n    LocalizationPipe,\r\n    ButtonComponent,\r\n    NgTemplateOutlet,\r\n  ],\r\n})\r\nexport class AccountSettingsExternalProviderComponent\r\n  extends AbstractAccountSettingsComponent<AccountExternalProviderSettings>\r\n  implements OnInit\r\n{\r\n  mapInitialTenantSettings = (result: AccountExternalProviderSettings) => ({\r\n    ...result,\r\n    externalProviders: result.externalProviders\r\n      .filter(setting => (this.isTenant() ? setting.enabledForTenantUser : setting.enabled))\r\n      .map(this.setUseHostSettingsOf),\r\n  });\r\n\r\n  ngOnInit() {\r\n    if (this.isTenant()) {\r\n      this.settings$ = this.service.getSettings().pipe(map(this.mapInitialTenantSettings));\r\n    } else {\r\n      super.ngOnInit();\r\n    }\r\n  }\r\n\r\n  mapTenantSettingsForSubmit(newSettings: AccountExternalProviderSettings) {\r\n    return {\r\n      ...newSettings,\r\n      externalProviders: newSettings.externalProviders.map(this.clearPropertyValues),\r\n    };\r\n  }\r\n\r\n  private clearPropertyValues(setting: AccountExternalProviderSetting) {\r\n    if (!setting.useCustomSettings) {\r\n      setting.properties.forEach(prop => (prop.value = ''));\r\n      setting.secretProperties.forEach(prop => (prop.value = ''));\r\n    }\r\n\r\n    const { useHostSettings, ...mappedSetting } = setting;\r\n    return mappedSetting;\r\n  }\r\n\r\n  private setUseHostSettingsOf(setting: AccountExternalProviderSetting) {\r\n    const useHostSettings = !(\r\n      setting.properties.some(prop => prop.value) ||\r\n      setting.secretProperties.some(prop => prop.value)\r\n    );\r\n    return {\r\n      ...setting,\r\n      useHostSettings,\r\n    };\r\n  }\r\n}\r\n","@if (settings$ | async; as settings) {\r\n  <h4>{{ 'AbpAccount::SocialAccountSecurity' | abpLocalization }}</h4>\r\n  <div class=\"form-check mb-2\">\r\n    <input\r\n      type=\"checkbox\"\r\n      class=\"form-check-input\"\r\n      id=\"verify-password\"\r\n      [(ngModel)]=\"settings.verifyPasswordDuringExternalLogin\"\r\n    />\r\n    <label class=\"form-check-label\" for=\"verify-password\">{{\r\n        'AbpAccount::DisplayName:VerifyPasswordDuringExternalLogin' | abpLocalization\r\n      }}</label>\r\n    <br/>\r\n    <small class=\"form-text text-muted\">{{\r\n        'AbpAccount::Description:VerifyPasswordDuringExternalLogin' | abpLocalization\r\n      }}</small>\r\n  </div>\r\n\r\n  <div (keyup.enter)=\"submit(settings)\">\r\n    @for (provider of settings.externalProviders; track $index) {\r\n      @if (isTenant()) {\r\n        <h4>{{ provider.name }}</h4>\r\n        <div class=\"form-check mb-2\">\r\n          <input\r\n            type=\"checkbox\"\r\n            class=\"form-check-input\"\r\n            [attr.id]=\"provider.name + '.use-host-settings'\"\r\n            [(ngModel)]=\"provider.enabled\"\r\n          />\r\n          <label class=\"form-check-label\" [for]=\"provider.name + '.use-host-settings'\">{{\r\n              'AbpAccount::ExternalProviderEnabled' | abpLocalization\r\n            }}</label>\r\n        </div>\r\n        @if (provider.enabled) {\r\n          <div class=\"form-check mb-2\">\r\n            <input\r\n              type=\"checkbox\"\r\n              class=\"form-check-input\"\r\n              [attr.id]=\"provider.name + '.use-custom-settings'\"\r\n              [(ngModel)]=\"provider.useCustomSettings\"\r\n            />\r\n            <label class=\"form-check-label\" [for]=\"provider.name + '.use-custom-settings'\">{{\r\n                'AbpAccount::ExternalProviderOverrideHostValue' | abpLocalization\r\n              }}</label>\r\n          </div>\r\n\r\n          <div class=\"collapse\" [class.show]=\"provider.useCustomSettings\">\r\n            <ng-container *ngTemplateOutlet=\"propertySetsTemplate\"></ng-container>\r\n          </div>\r\n        }\r\n\r\n\r\n      } @else {\r\n        <h4>{{ provider.name }}</h4>\r\n\r\n        <div class=\"form-check mb-2\">\r\n          <input\r\n            type=\"checkbox\"\r\n            [attr.id]=\"provider.name + '.enabled'\"\r\n            [attr.name]=\"provider.name + '.enabled'\"\r\n            class=\"form-check-input\"\r\n            [(ngModel)]=\"provider.enabled\"\r\n            autofocus\r\n          /><label class=\"form-check-label\" [attr.for]=\"provider.name + '.enabled'\">{{\r\n            'AbpAccount::ExternalProviderEnabledForHost' | abpLocalization\r\n          }}</label>\r\n          <br/>\r\n          <small class=\"form-text text-muted\">{{\r\n              'AbpAccount::ExternalProviderEnabledForHostExplanation' | abpLocalization\r\n            }}</small>\r\n        </div>\r\n\r\n        <div class=\"form-check mb-2\">\r\n          <input\r\n            type=\"checkbox\"\r\n            [attr.id]=\"provider.name + '.enabledForTenantUser'\"\r\n            [attr.name]=\"provider.name + '.enabledForTenantUser'\"\r\n            class=\"form-check-input\"\r\n            [(ngModel)]=\"provider.enabledForTenantUser\"\r\n            autofocus\r\n          /><label class=\"form-check-label\" [attr.for]=\"provider.name + '.enabledForTenantUser'\">{{\r\n            'AbpAccount::ExternalProviderEnabledForTenant' | abpLocalization\r\n          }}</label>\r\n          <br/>\r\n          <small class=\"form-text text-muted\">{{\r\n              'AbpAccount::ExternalProviderEnabledForTenantExplanation' | abpLocalization\r\n            }}</small>\r\n        </div>\r\n        @if (provider.enabled) {\r\n          <ng-container *ngTemplateOutlet=\"propertySetsTemplate\"></ng-container>\r\n        }\r\n      }\r\n\r\n      <ng-template #propertySetsTemplate>\r\n        <ng-container\r\n          *ngTemplateOutlet=\"singlePropertySetTemplate; context: { $implicit: provider.properties }\"\r\n        ></ng-container>\r\n        <ng-container\r\n          *ngTemplateOutlet=\"\r\n            singlePropertySetTemplate;\r\n            context: {\r\n              $implicit: provider.secretProperties,\r\n              type: 'password',\r\n              autocomplete: 'new-password',\r\n            }\r\n          \"\r\n        ></ng-container>\r\n\r\n        <ng-template\r\n          #singlePropertySetTemplate\r\n          let-properties\r\n          let-type=\"type\"\r\n          let-autocomplete=\"autocomplete\"\r\n        >\r\n          @for (property of properties; track $index) {\r\n            <div class=\"mb-3\">\r\n              <label class=\"form-label\" [attr.for]=\"provider.name + '.' + property.name\">{{\r\n                  '::ExternalProvider:' + provider.name + ':' + property.name | abpLocalization\r\n                }}</label>\r\n              <input\r\n                [type]=\"type || 'text'\"\r\n                [autocomplete]=\"autocomplete || 'off'\"\r\n                class=\"form-control\"\r\n                [(ngModel)]=\"property.value\"\r\n                [attr.id]=\"provider.name + '.' + property.name\"\r\n              />\r\n            </div>\r\n          }\r\n        </ng-template>\r\n      </ng-template>\r\n    }\r\n    <hr/>\r\n    <div>\r\n      <abp-button (click)=\"submit(settings)\" iconClass=\"fa fa-save\" [loading]=\"loading\">{{\r\n          'AbpAccount::Save' | abpLocalization\r\n        }}\r\n      </abp-button>\r\n    </div>\r\n  </div>\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { AbstractAccountSettingsService } from '../abstracts';\r\nimport { AccountIdleSettingsDto } from '../models';\r\nimport { RestService } from '@abp/ng.core';\r\n\r\n@Injectable()\r\nexport class AccountIdleSessionService extends AbstractAccountSettingsService<AccountIdleSettingsDto> {\r\n  protected url = '/api/account-admin/settings/idle';\r\n\r\n  constructor() {\r\n    const restService = inject(RestService);\r\n\r\n    super(restService);\r\n  }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { RestService } from '@abp/ng.core';\r\nimport { AbstractAccountSettingsService } from '../abstracts';\r\nimport { AccountPasskeySettingsDto } from '../models';\r\n\r\n@Injectable()\r\nexport class AccountPasskeySettingsService extends AbstractAccountSettingsService<AccountPasskeySettingsDto> {\r\n    protected url = '/api/account-admin/settings/passkey';\r\n\r\n    constructor() {\r\n        const restService = inject(RestService);\r\n\r\n        super(restService);\r\n    }\r\n}\r\n","import {\r\n  ApplicationRef,\r\n  ComponentRef,\r\n  createComponent,\r\n  DestroyRef,\r\n  effect,\r\n  EnvironmentInjector,\r\n  inject,\r\n  Injectable,\r\n  signal,\r\n  DOCUMENT,\r\n  PLATFORM_ID,\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n  merge,\r\n  fromEvent,\r\n  debounceTime,\r\n  distinctUntilChanged,\r\n  interval,\r\n  map,\r\n  startWith,\r\n  switchMap,\r\n  takeWhile,\r\n  tap,\r\n  timer,\r\n  filter,\r\n  Subscription,\r\n  take,\r\n} from 'rxjs';\r\nimport { AbpLocalStorageService, AuthService, ConfigStateService } from '@abp/ng.core';\r\n\r\nexport const IDLE_SESSION_ENABLED_SETTING_KEY = 'Abp.Account.Idle.Enabled';\r\nexport const IDLE_TIMEOUT_MINUTES_SETTING_KEY = 'Abp.Account.Idle.IdleTimeoutMinutes';\r\nexport const IDLE_COUNTDOWN_SECONDS_SETTING_KEY = 'Abp.Account.Idle.CountdownSeconds';\r\n\r\nconst DEFAULT_MODAL_COUNTDOWN = 60;\r\nconst SECONDS = 1000 * 60;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IdleSessionService {\r\n  protected readonly configStateService = inject(ConfigStateService);\r\n  protected readonly authService = inject(AuthService);\r\n  protected readonly localStorageService = inject(AbpLocalStorageService);\r\n  protected readonly destroyRef = inject(DestroyRef);\r\n  protected readonly document = inject(DOCUMENT);\r\n  protected readonly environmentInjector = inject(EnvironmentInjector);\r\n  protected readonly applicationRef = inject(ApplicationRef);\r\n  protected readonly platformId = inject(PLATFORM_ID);\r\n\r\n  public componentRef: ComponentRef<unknown> | null = null;\r\n  public modalCountdown = signal(DEFAULT_MODAL_COUNTDOWN);\r\n  public showModal = signal(false);\r\n  public idleTimeout: Subscription;\r\n  private broadcastChannel: BroadcastChannel | null = null;\r\n  private readonly CHANNEL_NAME = 'idle-session-activity';\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      if (!this.modalCountdown() && this.showModal()) {\r\n        this.showModal.set(false);\r\n        this.logout();\r\n      }\r\n    });\r\n\r\n    // Subscribe to broadcast channel\r\n    this.subscribeToBroadcast();\r\n\r\n    // Cleanup BroadcastChannel on destroy\r\n    this.destroyRef.onDestroy(() => {\r\n      if (this.broadcastChannel) {\r\n        this.broadcastChannel.close();\r\n        this.broadcastChannel = null;\r\n      }\r\n    });\r\n  }\r\n\r\n  async renderTimeoutModal() {\r\n    if (!this.componentRef) {\r\n      const { IdleSessionModalComponent } = await import(\r\n        '../components/idle-session-modal/idle-session-modal.component'\r\n      );\r\n      this.componentRef = createComponent(IdleSessionModalComponent, {\r\n        environmentInjector: this.environmentInjector,\r\n      });\r\n      this.applicationRef.attachView(this.componentRef.hostView);\r\n    }\r\n  }\r\n\r\n  watchUserActivity() {\r\n    if (!isPlatformBrowser(this.platformId)) return;\r\n    merge(\r\n      fromEvent(window, 'mousemove'),\r\n      fromEvent(window, 'keydown'),\r\n      fromEvent(window, 'storage'),\r\n    )\r\n      .pipe(\r\n        filter(() => this.isIdleSessionEnabledAndAuthenticated()),\r\n        tap(() => {\r\n          this.unsubscribeIdleTimeout();\r\n          this.startIdleTimeout();\r\n          this.broadcast('activity');\r\n        }),\r\n        debounceTime(500),\r\n        distinctUntilChanged(),\r\n        takeUntilDestroyed(this.destroyRef),\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  staySignedIn() {\r\n    this.closeModalAndReset();\r\n    this.broadcast('staySignedIn');\r\n  }\r\n\r\n  logout() {\r\n    this.unsubscribeIdleTimeout();\r\n    this.authService.logout().subscribe();\r\n  }\r\n\r\n  resetCountdown() {\r\n    this.modalCountdown.set(0);\r\n  }\r\n\r\n  unsubscribeIdleTimeout() {\r\n    this.idleTimeout?.unsubscribe();\r\n  }\r\n\r\n  startIdleTimeout(): void {\r\n    const idleTimeoutMinutes = Number(\r\n      this.configStateService.getSetting(IDLE_TIMEOUT_MINUTES_SETTING_KEY),\r\n    );\r\n\r\n    if (!idleTimeoutMinutes) {\r\n      return;\r\n    }\r\n\r\n    this.idleTimeout = timer(idleTimeoutMinutes * SECONDS)\r\n      .pipe(\r\n        tap(() => {\r\n          this.showModal.set(true);\r\n          this.startCountdown();\r\n          this.broadcast('showModal');\r\n        }),\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  startCountdown(): void {\r\n    const countdownSeconds = Number(\r\n      this.configStateService.getSetting(IDLE_COUNTDOWN_SECONDS_SETTING_KEY),\r\n    ) || DEFAULT_MODAL_COUNTDOWN;\r\n    \r\n    this.modalCountdown.set(countdownSeconds);\r\n    let lastCount = countdownSeconds;\r\n\r\n    const visibilityChange$ = fromEvent(document, 'visibilitychange').pipe(\r\n      map(() => !document.hidden),\r\n      startWith(!document.hidden),\r\n      distinctUntilChanged(),\r\n    );\r\n\r\n    visibilityChange$\r\n      .pipe(\r\n        filter(isVisible => isVisible && lastCount === countdownSeconds),\r\n        take(1),\r\n        switchMap(() => {\r\n          return interval(1000).pipe(\r\n            map(() => {\r\n              lastCount -= 1;\r\n              return lastCount;\r\n            }),\r\n            takeWhile(count => count >= 0 && this.showModal()),\r\n          );\r\n        }),\r\n      )\r\n      .subscribe(count => {\r\n        this.modalCountdown.set(count);\r\n      });\r\n  }\r\n\r\n  private subscribeToBroadcast() {\r\n    if (typeof BroadcastChannel !== 'undefined') {\r\n      this.broadcastChannel = new BroadcastChannel(this.CHANNEL_NAME);\r\n      this.broadcastChannel.onmessage = event => {\r\n        switch (event.data.type) {\r\n          case 'activity':\r\n            if (this.isIdleSessionEnabledAndAuthenticated()) {\r\n              this.unsubscribeIdleTimeout();\r\n              this.startIdleTimeout();\r\n            }\r\n            break;\r\n          case 'staySignedIn':\r\n            this.closeModalAndReset();\r\n            break;\r\n          case 'showModal':\r\n            if (!this.showModal()) {\r\n              this.showModal.set(true);\r\n              this.startCountdown();\r\n            }\r\n            break;\r\n        }\r\n      };\r\n    }\r\n  }\r\n\r\n  private isIdleSessionEnabledAndAuthenticated(): boolean {\r\n    let isIdleSessionEnabled = this.localStorageService.getItem('isIdleSessionEnabled');\r\n    if (!isIdleSessionEnabled) {\r\n      isIdleSessionEnabled = this.configStateService\r\n        .getSetting(IDLE_SESSION_ENABLED_SETTING_KEY)\r\n        ?.toLowerCase();\r\n    }\r\n    return isIdleSessionEnabled === 'true' && this.authService.isAuthenticated;\r\n  }\r\n\r\n  private closeModalAndReset() {\r\n    this.showModal.set(false);\r\n    const countdownSeconds = Number(\r\n      this.configStateService.getSetting(IDLE_COUNTDOWN_SECONDS_SETTING_KEY),\r\n    ) || DEFAULT_MODAL_COUNTDOWN;\r\n    this.modalCountdown.set(countdownSeconds);\r\n    this.unsubscribeIdleTimeout();\r\n  }\r\n\r\n  private broadcast(type: string) {\r\n    if (this.broadcastChannel) {\r\n      this.broadcastChannel.postMessage({ type, timestamp: Date.now() });\r\n    }\r\n  }\r\n}\r\n","import { mapEnumToOptions } from '@abp/ng.core';\r\n\r\nexport enum eIdleTimeoutMinutes {\r\n  OneHour = 60,\r\n  ThreeHours = 180,\r\n  SixHours = 360,\r\n  TwelveHours = 720,\r\n  TwentyFourHours = 1440,\r\n  CustomIdleTimeoutMinutes = 1,\r\n}\r\n\r\nexport const idleTimeoutMinuteOptions = mapEnumToOptions(eIdleTimeoutMinutes);\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  computed,\r\n  inject,\r\n  OnInit,\r\n  signal,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { tap } from 'rxjs';\r\nimport { AbpLocalStorageService, LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { AbstractAccountSettingsComponent, AbstractAccountSettingsService } from '../../abstracts';\r\nimport { AccountIdleSessionService } from '../../services';\r\nimport { AccountIdleSettingsDto } from '../../models';\r\nimport { eIdleTimeoutMinutes, idleTimeoutMinuteOptions } from '../../enums';\r\n\r\n@Component({\r\n  selector: 'abp-account-settings-idle-session',\r\n  templateUrl: './account-settings-idle-session.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: AbstractAccountSettingsService,\r\n      useClass: AccountIdleSessionService,\r\n    },\r\n  ],\r\n  imports: [FormsModule, LocalizationPipe, ButtonComponent],\r\n})\r\nexport class AccountSettingsIdleSessionComponent\r\n  extends AbstractAccountSettingsComponent<AccountIdleSettingsDto>\r\n  implements OnInit\r\n{\r\n  protected readonly localStorageService = inject(AbpLocalStorageService);\r\n\r\n  isIdleSessionEnabled = signal<boolean>(false);\r\n  timeoutMinute = signal<number>(eIdleTimeoutMinutes.OneHour);\r\n  countdownSeconds = signal<number>(60);\r\n\r\n  customIdleTimeout = computed(() => {\r\n    const standardHours = Object.values(eIdleTimeoutMinutes);\r\n    return (\r\n      !standardHours.includes(this.timeoutMinute()) ||\r\n      this.timeoutMinute() === eIdleTimeoutMinutes.CustomIdleTimeoutMinutes\r\n    );\r\n  });\r\n\r\n  idleTimeoutMinuteOptions = idleTimeoutMinuteOptions;\r\n\r\n  ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this.settings$\r\n      .pipe(\r\n        tap(settings => {\r\n          this.isIdleSessionEnabled.set(settings.enabled);\r\n          this.timeoutMinute.set(settings.idleTimeoutMinutes);\r\n          this.countdownSeconds.set(settings.countdownSeconds);\r\n        }),\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  submit() {\r\n    super.submit({\r\n      enabled: this.isIdleSessionEnabled(),\r\n      idleTimeoutMinutes: this.timeoutMinute(),\r\n      countdownSeconds: this.countdownSeconds(),\r\n    });\r\n    this.localStorageService.setItem(\r\n      'isIdleSessionEnabled',\r\n      this.isIdleSessionEnabled() ? 'true' : 'false',\r\n    );\r\n  }\r\n}\r\n","<div (keyup.enter)=\"submit()\">\r\n  <h4>{{ 'AbpAccount::IdleSessionTimeout' | abpLocalization }}</h4>\r\n  <p>{{ 'AbpAccount::IdleSessionTimeoutInfo' | abpLocalization }}</p>\r\n  <a href=\"https://abp.io/docs/latest/modules/account/idle-session-timeout\" target=\"_blank\">\r\n    {{ 'AbpAccount::LearnMoreAboutIdleSessionTimeout' | abpLocalization }}\r\n  </a>\r\n  <div class=\"mt-3\">\r\n    <div class=\"form-check mb-2\">\r\n      <input\r\n        class=\"form-check-input\"\r\n        name=\"isIdleSessionEnabled\"\r\n        type=\"checkbox\"\r\n        id=\"AccountIdleSessionSettings_IdleSignOutInactiveUserAutomatically\"\r\n        [checked]=\"isIdleSessionEnabled()\"\r\n        (input)=\"isIdleSessionEnabled.set($event.target.checked)\"\r\n      />\r\n      <label\r\n        class=\"form-check-label\"\r\n        for=\"AccountIdleSessionSettings_IdleSignOutInactiveUserAutomatically\"\r\n      >\r\n        {{ 'AbpAccount::IdleSignOutInactiveUserAutomatically' | abpLocalization }}\r\n      </label>\r\n    </div>\r\n\r\n    @if (isIdleSessionEnabled()) {\r\n      <div class=\"mb-3\">\r\n        <label class=\"form-label\" for=\"AccountIdleSessionSettings_IdleTimeoutMinutes\">\r\n          {{ 'AbpAccount::IdleTimeoutMinutes' | abpLocalization }}\r\n        </label>\r\n\r\n        <div class=\"input-group\">\r\n          <div class=\"col-9\">\r\n            <select\r\n              name=\"IdleTimeoutMinutes\"\r\n              class=\"form-select form-control\"\r\n              (change)=\"timeoutMinute.set(+$event.target.value)\"\r\n            >\r\n              @for (option of idleTimeoutMinuteOptions; track $index) {\r\n                <option\r\n                  [value]=\"option.value\"\r\n                  [selected]=\"option.value === timeoutMinute() || customIdleTimeout()\"\r\n                >\r\n                  {{ 'AbpAccount::' + option.key | abpLocalization }}\r\n                </option>\r\n              }\r\n            </select>\r\n          </div>\r\n          <div class=\"col-3 ps-1\">\r\n            @if (customIdleTimeout()) {\r\n              <input\r\n                type=\"number\"\r\n                min=\"1\"\r\n                class=\"form-control\"\r\n                placeholder=\"Minutes\"\r\n                [value]=\"timeoutMinute()\"\r\n                (input)=\"timeoutMinute.set(+$event.target.value)\"\r\n              />\r\n            }\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"mb-3\">\r\n          <label class=\"form-label\" for=\"AccountIdleSessionSettings_CountdownSeconds\">\r\n            {{ 'AbpAccount::IdleCountdownSeconds' | abpLocalization }}\r\n          </label>\r\n          <input\r\n            type=\"number\"\r\n            min=\"1\"\r\n            class=\"form-control w-75\"\r\n            id=\"AccountIdleSessionSettings_CountdownSeconds\"\r\n            [value]=\"countdownSeconds()\"\r\n            (input)=\"countdownSeconds.set(+$event.target.value)\"\r\n          />\r\n          <small class=\"form-text text-muted\">\r\n            {{ 'AbpAccount::IdleCountdownSecondsInfo' | abpLocalization }}\r\n          </small>\r\n        </div>\r\n      </div>\r\n    }\r\n  </div>\r\n  <hr class=\"my-3\" />\r\n  <div>\r\n    <abp-button (click)=\"submit()\" iconClass=\"fa fa-save\" [loading]=\"loading\">\r\n      {{ 'AbpAccount::Save' | abpLocalization }}\r\n    </abp-button>\r\n  </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, OnInit, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { tap } from 'rxjs';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ButtonComponent } from '@abp/ng.theme.shared';\r\nimport { AbstractAccountSettingsComponent, AbstractAccountSettingsService } from '../../abstracts';\r\nimport { AccountPasskeySettingsService } from '../../services';\r\nimport { AccountPasskeySettingsDto } from '../../models';\r\n\r\n@Component({\r\n  selector: 'abp-account-settings-passkey',\r\n  templateUrl: './account-settings-passkey.component.html',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: AbstractAccountSettingsService,\r\n      useClass: AccountPasskeySettingsService,\r\n    },\r\n  ],\r\n  imports: [FormsModule, LocalizationPipe, ButtonComponent],\r\n})\r\nexport class AccountSettingsPasskeyComponent\r\n  extends AbstractAccountSettingsComponent<AccountPasskeySettingsDto>\r\n  implements OnInit\r\n{\r\n  isPasskeyEnabled = signal<boolean>(false);\r\n  maximumPasskeysPerUser = signal<number>(10);\r\n\r\n  ngOnInit(): void {\r\n    super.ngOnInit();\r\n    this.settings$\r\n      .pipe(\r\n        tap(settings => {\r\n          this.isPasskeyEnabled.set(settings.enabled);\r\n          this.maximumPasskeysPerUser.set(settings.maximumPasskeysPerUser);\r\n        }),\r\n      )\r\n      .subscribe();\r\n  }\r\n\r\n  submit() {\r\n    super.submit({\r\n      enabled: this.isPasskeyEnabled(),\r\n      maximumPasskeysPerUser: this.maximumPasskeysPerUser(),\r\n    });\r\n  }\r\n}\r\n","<div (keyup.enter)=\"submit()\">\r\n    <h4>{{ 'AbpAccount::Passkey' | abpLocalization }}</h4>\r\n    <div class=\"mt-3\">\r\n        <div class=\"form-check mb-2\">\r\n            <input class=\"form-check-input\" name=\"isPasskeyEnabled\" type=\"checkbox\"\r\n                id=\"AccountPasskeySettings_EnablePasskey\" [checked]=\"isPasskeyEnabled()\"\r\n                (input)=\"isPasskeyEnabled.set($event.target.checked)\" />\r\n            <label class=\"form-check-label\" for=\"AccountPasskeySettings_EnablePasskey\">\r\n                {{ 'AbpAccount::EnablePasskey' | abpLocalization }}\r\n            </label>\r\n        </div>\r\n\r\n        <div class=\"mb-3\">\r\n            <label class=\"form-label\" for=\"AccountPasskeySettings_MaximumPasskeysPerUser\">\r\n                {{ 'AbpAccount::MaximumPasskeysPerUser' | abpLocalization }}\r\n            </label>\r\n            <input type=\"number\" min=\"1\" class=\"form-control\" id=\"AccountPasskeySettings_MaximumPasskeysPerUser\"\r\n                [value]=\"maximumPasskeysPerUser()\" (input)=\"maximumPasskeysPerUser.set(+$event.target.value)\" />\r\n        </div>\r\n    </div>\r\n    <hr class=\"my-3\" />\r\n    <div>\r\n        <abp-button (click)=\"submit()\" iconClass=\"fa fa-save\" [loading]=\"loading\">\r\n            {{ 'AbpAccount::Save' | abpLocalization }}\r\n        </abp-button>\r\n    </div>\r\n</div>","import { AsyncPipe } from '@angular/common';\r\nimport { Component, inject, OnInit } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n  NgbNav,\r\n  NgbNavItem,\r\n  NgbNavItemRole,\r\n  NgbNavLink,\r\n  NgbNavLinkBase,\r\n  NgbNavContent,\r\n  NgbNavOutlet,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { ConfigStateService, LocalizationPipe, SessionStateService } from '@abp/ng.core';\r\nimport { eTwoFactorBehaviour } from '../enums/two-factor-behaviour';\r\nimport { AccountCaptchaService } from '../services/account-captcha.service';\r\nimport { AccountExternalProviderService } from '../services/account-external-provider.service';\r\nimport { AccountSettingsGeneralComponent } from './account-settings-general/account-settings-general.component';\r\nimport { AccountSettingsTwoFactorComponent } from './account-settings-two-factor/account-settings-two-factor.component';\r\nimport { AccountSettingsCaptchaComponent } from './account-settings-captcha/account-settings-captcha.component';\r\nimport { AccountSettingsExternalProviderComponent } from './account-settings-external-provider/account-settings-external-provider.component';\r\nimport { AccountSettingsIdleSessionComponent } from './account-settings-idle-session/account-settings-idle-session.component';\r\nimport { AccountSettingsPasskeyComponent } from './account-settings-passkey/account-settings-passkey.component';\r\n\r\n@Component({\r\n  selector: 'abp-account-settings',\r\n  templateUrl: './account-settings.component.html',\r\n  providers: [AccountExternalProviderService, AccountCaptchaService],\r\n  imports: [\r\n    NgbNav,\r\n    NgbNavItem,\r\n    NgbNavItemRole,\r\n    NgbNavLink,\r\n    NgbNavLinkBase,\r\n    NgbNavContent,\r\n    AccountSettingsGeneralComponent,\r\n    AccountSettingsTwoFactorComponent,\r\n    AccountSettingsCaptchaComponent,\r\n    AccountSettingsExternalProviderComponent,\r\n    AccountSettingsIdleSessionComponent,\r\n    AccountSettingsPasskeyComponent,\r\n    NgbNavOutlet,\r\n    AsyncPipe,\r\n    LocalizationPipe,\r\n  ],\r\n})\r\nexport class AccountSettingsComponent implements OnInit {\r\n  private configStateService = inject(ConfigStateService);\r\n  private sessionStateService = inject(SessionStateService);\r\n  private captchaService = inject(AccountCaptchaService);\r\n  private externalProviderService = inject(AccountExternalProviderService);\r\n\r\n  isTwoFactorSettingsEnabled: boolean;\r\n  isExternalProviderEnabled$: Observable<boolean>;\r\n  isExternalProviderExists$: Observable<boolean>;\r\n  isCaptchaEnabled$: Observable<boolean>;\r\n  isTenant: boolean;\r\n\r\n  ngOnInit() {\r\n    this.isTwoFactorSettingsEnabled =\r\n      this.configStateService.getFeature('Identity.TwoFactor') ===\r\n      eTwoFactorBehaviour[eTwoFactorBehaviour.Optional];\r\n\r\n    this.isExternalProviderExists$ = this.externalProviderService\r\n      .getSettings()\r\n      .pipe(map(data => data?.externalProviders?.length > 0));\r\n\r\n    this.isTenant = this.sessionStateService.getTenant()?.isAvailable;\r\n\r\n    if (this.isTenant) {\r\n      this.isExternalProviderEnabled$ = this.externalProviderService\r\n        .getSettings()\r\n        .pipe(\r\n          map(result => result.externalProviders.some(settings => settings.enabledForTenantUser)),\r\n        );\r\n\r\n      this.isCaptchaEnabled$ = this.captchaService\r\n        .getSettings()\r\n        .pipe(map(result => result.useCaptchaOnLogin || result.useCaptchaOnRegistration));\r\n    } else {\r\n      this.isExternalProviderEnabled$ = of(true);\r\n      this.isCaptchaEnabled$ = of(true);\r\n    }\r\n  }\r\n}\r\n","<div id=\"AccountSettingsForm\" class=\"row\">\r\n  <div class=\"col-md-12\">\r\n    <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs\">\r\n      <li ngbNavItem>\r\n        <a ngbNavLink>{{ 'AbpAccount::AccountSettingsGeneral' | abpLocalization }}</a>\r\n        <ng-template ngbNavContent>\r\n          <div class=\"abp-md-form\">\r\n            <abp-account-settings-general [isTenant]=\"isTenant\" />\r\n          </div>\r\n        </ng-template>\r\n      </li>\r\n      @if (isTwoFactorSettingsEnabled) {\r\n      <li ngbNavItem>\r\n        <a ngbNavLink>{{ 'AbpAccount::AccountSettingsTwoFactor' | abpLocalization }}</a>\r\n        <ng-template ngbNavContent>\r\n          <div class=\"abp-md-form\">\r\n            <abp-account-settings-two-factor [isTenant]=\"isTenant\" />\r\n          </div>\r\n        </ng-template>\r\n      </li>\r\n      }\r\n      @if (isCaptchaEnabled$ | async) {\r\n      <li ngbNavItem>\r\n        <a ngbNavLink>\r\n          {{ 'AbpAccount::Captcha' | abpLocalization }}\r\n        </a>\r\n        <ng-template ngbNavContent>\r\n          <div class=\"abp-md-form\">\r\n            <abp-account-settings-captcha [isTenant]=\"isTenant\" />\r\n          </div>\r\n        </ng-template>\r\n      </li>\r\n      }\r\n      @if (isExternalProviderEnabled$ | async) {\r\n      @if (isExternalProviderExists$ | async) {\r\n      <li ngbNavItem>\r\n        <a ngbNavLink>\r\n          {{ 'AbpAccount::AccountExternalProviderSettings' | abpLocalization }}\r\n        </a>\r\n        <ng-template ngbNavContent>\r\n          <div class=\"abp-md-form\">\r\n            <abp-account-settings-external-provider [isTenant]=\"isTenant\" />\r\n          </div>\r\n        </ng-template>\r\n      </li>\r\n      }\r\n      }\r\n      <li ngbNavItem>\r\n        <a ngbNavLink>\r\n          {{ 'AbpAccount::IdleSessionTimeout' | abpLocalization }}\r\n        </a>\r\n        <ng-template ngbNavContent>\r\n          <div class=\"abp-md-form\">\r\n            <abp-account-settings-idle-session />\r\n          </div>\r\n        </ng-template>\r\n      </li>\r\n      <li ngbNavItem>\r\n        <a ngbNavLink>\r\n          {{ 'AbpAccount::Passkey' | abpLocalization }}\r\n        </a>\r\n        <ng-template ngbNavContent>\r\n          <div class=\"abp-md-form\">\r\n            <abp-account-settings-passkey />\r\n          </div>\r\n        </ng-template>\r\n      </li>\r\n    </ul>\r\n    <div [ngbNavOutlet]=\"nav\"></div>\r\n  </div>\r\n</div>","import { Component, inject } from '@angular/core';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport {\r\n  LocalizationPipe,\r\n  SubscriptionService,\r\n  ConfigStateService,\r\n} from '@abp/ng.core';\r\nimport { ButtonComponent, ToasterService, collapse } from '@abp/ng.theme.shared';\r\nimport { TimeZoneSettingsService } from '@abp/ng.setting-management/proxy';\r\n\r\n@Component({\r\n  selector: 'abp-time-zone-setting',\r\n  templateUrl: 'time-zone-setting.component.html',\r\n  animations: [collapse],\r\n  imports: [ReactiveFormsModule, AsyncPipe, LocalizationPipe, ButtonComponent],\r\n  providers: [SubscriptionService],\r\n})\r\nexport class TimeZoneSettingComponent {\r\n  protected readonly timeZoneSettingsService = inject(TimeZoneSettingsService);\r\n  protected readonly subscription = inject(SubscriptionService);\r\n  protected readonly toasterService = inject(ToasterService);\r\n  protected readonly configState = inject(ConfigStateService);\r\n  protected readonly fb = inject(FormBuilder);\r\n\r\n  timezoneForm = this.fb.group({\r\n    selectedTimeZone: ['UTC'],\r\n  });\r\n\r\n  loading = false;\r\n\r\n  constructor() {\r\n    this.init();\r\n  }\r\n\r\n  async init() {\r\n    this.selectedTimeZone = await firstValueFrom(this.timeZoneSettingsService.get());\r\n    this._timeZones = this.timeZoneSettingsService.getTimezones();\r\n  }\r\n\r\n  private _timeZones;\r\n  get timeZones() {\r\n    return this._timeZones;\r\n  }\r\n\r\n  get selectedTimeZone() {\r\n    return this.timezoneForm.value.selectedTimeZone;\r\n  }\r\n\r\n  set selectedTimeZone(val: string) {\r\n    this.timezoneForm.setValue({ selectedTimeZone: val });\r\n  }\r\n\r\n  async onSubmit() {\r\n    const value = this.selectedTimeZone;\r\n    this.loading = true;\r\n    await firstValueFrom(this.timeZoneSettingsService.update(value));\r\n    this.loading = false;\r\n    this.configState.refreshAppState();\r\n    this.toasterService.success('AbpUi::SavedSuccessfully');\r\n  }\r\n}\r\n","<form [formGroup]=\"timezoneForm\" class=\"py-2 abp-md-form\" (ngSubmit)=\"onSubmit()\">\r\n  <div class=\"mb-3 form-group\">\r\n    <label class=\"form-label\"\r\n      >{{ 'AbpSettingManagement::Menu:TimeZone' | abpLocalization }}<span class=\"ms-1\"></span\r\n    ></label>\r\n    <select class=\"form-select form-control\" formControlName=\"selectedTimeZone\">\r\n      @for (item of timeZones | async; track item.value) {\r\n        <option [ngValue]=\"item.value\">\r\n          {{ item.name }}\r\n        </option>\r\n      }\r\n    </select>\r\n    <small> {{ 'AbpSettingManagement::TimezoneHelpText' | abpLocalization }}</small>\r\n  </div>\r\n  <hr />\r\n  <abp-button iconClass=\"fa fa-save\" buttonType=\"submit\" [loading]=\"loading\">\r\n    {{ 'AbpUi::Save' | abpLocalization }}\r\n  </abp-button>\r\n</form>\r\n","import { Component, inject } from '@angular/core';\r\nimport { LocalizationPipe } from '@abp/ng.core';\r\nimport { ModalCloseDirective, ModalComponent } from '@abp/ng.theme.shared';\r\nimport { IdleSessionService } from '../../services/idle-session.service';\r\n\r\n@Component({\r\n  selector: 'abp-idle-session-modal',\r\n  templateUrl: './idle-session-modal.component.html',\r\n  providers: [IdleSessionService],\r\n  imports: [ModalCloseDirective, LocalizationPipe, ModalComponent],\r\n})\r\nexport class IdleSessionModalComponent {\r\n  protected readonly idleSessionService = inject(IdleSessionService);\r\n\r\n  showModal = this.idleSessionService.showModal;\r\n  countdown = this.idleSessionService.modalCountdown;\r\n\r\n  constructor() {\r\n    this.idleSessionService.watchUserActivity();\r\n  }\r\n\r\n  staySignedIn(): void {\r\n    this.idleSessionService.staySignedIn();\r\n  }\r\n\r\n  logout(): void {\r\n    this.idleSessionService.resetCountdown();\r\n  }\r\n}\r\n","<abp-modal [visible]=\"showModal()\" (disappear)=\"staySignedIn()\" [options]=\"{ animation: false }\">\r\n  <ng-template #abpHeader>\r\n    <h3>{{ 'AbpAccount::YourSessionIsAboutToExpire' | abpLocalization }}</h3>\r\n  </ng-template>\r\n  <ng-template #abpBody>\r\n    <p>\r\n      {{ 'AbpAccount::YourSessionIsAboutToExpireInfo' | abpLocalization }}\r\n    </p>\r\n  </ng-template>\r\n  <ng-template #abpFooter>\r\n    <button type=\"button\" class=\"btn btn-secondary\" (click)=\"logout()\">\r\n      {{ 'AbpAccount::IdleSignOutNow' | abpLocalization }}\r\n      @if (countdown()) {\r\n        {{ '(' + countdown() + ')' }}\r\n      }\r\n    </button>\r\n    <button type=\"button\" class=\"btn btn-primary\" abpClose (click)=\"staySignedIn()\">\r\n      {{ 'AbpAccount::IdleStaySignedIn' | abpLocalization }}\r\n    </button>\r\n  </ng-template>\r\n</abp-modal>\r\n","import { NgModule } from '@angular/core';\r\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { AbstractAccountSettingsComponent } from './abstracts/abstract-account-settings.component';\r\nimport { AccountSettingsGeneralComponent } from './components/account-settings-general/account-settings-general.component';\r\nimport { AccountSettingsTwoFactorComponent } from './components/account-settings-two-factor/account-settings-two-factor.component';\r\nimport { AccountSettingsComponent } from './components/account-settings.component';\r\nimport { AccountSettingsCaptchaComponent } from './components/account-settings-captcha/account-settings-captcha.component';\r\nimport { AccountSettingsExternalProviderComponent } from './components/account-settings-external-provider/account-settings-external-provider.component';\r\nimport { IdleSessionModalComponent, AccountSettingsIdleSessionComponent } from './components';\r\n\r\nconst components = [\r\n  AbstractAccountSettingsComponent,\r\n  AccountSettingsComponent,\r\n  AccountSettingsGeneralComponent,\r\n  AccountSettingsTwoFactorComponent,\r\n  AccountSettingsCaptchaComponent,\r\n  AccountSettingsExternalProviderComponent,\r\n  AccountSettingsIdleSessionComponent,\r\n];\r\n\r\n@NgModule({\r\n  imports: [\r\n    CoreModule,\r\n    ThemeSharedModule,\r\n    NgbNavModule,\r\n    NgxValidateCoreModule,\r\n    IdleSessionModalComponent,\r\n    ...components,\r\n  ],\r\n  exports: [...components, IdleSessionModalComponent],\r\n})\r\nexport class AccountSettingsModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map"],"mappings":"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"}