{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./jslib/common/src/abstractions/i18n.service.ts","webpack:///./jslib/common/src/abstractions/platformUtils.service.ts","webpack:///./jslib/common/src/abstractions/api.service.ts","webpack:///./jslib/common/src/abstractions/user.service.ts","webpack:///./jslib/angular/src/pipes/i18n.pipe.ts","webpack:///./jslib/common/src/abstractions/crypto.service.ts","webpack:///./jslib/common/src/abstractions/messaging.service.ts","webpack:///./jslib/angular/src/directives/a11y-title.directive.ts","webpack:///./jslib/angular/src/directives/api-action.directive.ts","webpack:///./jslib/angular/src/services/modal.service.ts","webpack:///./jslib/common/src/abstractions/cipher.service.ts","webpack:///./jslib/angular/src/components/callout.component.ts","webpack:///./jslib/angular/src/components/callout.component.html","webpack:///./jslib/common/src/models/response/baseResponse.ts","webpack:///./jslib/common/src/abstractions/policy.service.ts","webpack:///./jslib/common/src/misc/utils.ts","webpack:///./jslib/common/src/abstractions/passwordGeneration.service.ts","webpack:///./jslib/common/src/importers/baseImporter.ts","webpack:///./jslib/common/src/models/domain/importResult.ts","webpack:///./jslib/common/src/abstractions/state.service.ts","webpack:///./jslib/angular/src/directives/stop-click.directive.ts","webpack:///./jslib/common/src/abstractions/storage.service.ts","webpack:///./jslib/common/src/abstractions/environment.service.ts","webpack:///./jslib/common/src/enums/cipherType.ts","webpack:///./jslib/common/src/abstractions/collection.service.ts","webpack:///./jslib/common/src/abstractions/sync.service.ts","webpack:///./jslib/angular/src/directives/input-verbatim.directive.ts","webpack:///./jslib/angular/src/directives/stop-prop.directive.ts","webpack:///./jslib/common/src/abstractions/auth.service.ts","webpack:///./jslib/common/src/abstractions/folder.service.ts","webpack:///./jslib/common/src/abstractions/search.service.ts","webpack:///./jslib/angular/src/directives/autofocus.directive.ts","webpack:///./jslib/angular/src/pipes/user-name.pipe.ts","webpack:///./jslib/common/src/enums/policyType.ts","webpack:///./jslib/common/src/services/constants.service.ts","webpack:///./jslib/common/src/abstractions/event.service.ts","webpack:///./src/app/components/avatar.component.ts","webpack:///./jslib/common/src/models/domain/domainBase.ts","webpack:///./jslib/common/src/models/request/passwordVerificationRequest.ts","webpack:///./jslib/common/src/abstractions/log.service.ts","webpack:///./jslib/common/src/abstractions/vaultTimeout.service.ts","webpack:///./jslib/common/src/models/domain/encString.ts","webpack:///./jslib/common/src/abstractions/audit.service.ts","webpack:///./jslib/common/src/models/view/cardView.ts","webpack:///./jslib/common/src/abstractions/cryptoFunction.service.ts","webpack:///./jslib/angular/src/services/validation.service.ts","webpack:///./jslib/common/src/models/view/secureNoteView.ts","webpack:///./jslib/common/src/enums/secureNoteType.ts","webpack:///./jslib/common/src/abstractions/token.service.ts","webpack:///./jslib/angular/src/components/icon.component.ts","webpack:///./jslib/angular/src/components/icon.component.html","webpack:///./jslib/common/src/abstractions/export.service.ts","webpack:///./jslib/angular/src/services/broadcaster.service.ts","webpack:///./jslib/common/src/enums/twoFactorProviderType.ts","webpack:///./jslib/common/src/abstractions/totp.service.ts","webpack:///./jslib/angular/src/pipes/search.pipe.ts","webpack:///./src/app/settings/payment.component.ts","webpack:///./src/app/settings/payment.component.html","webpack:///./jslib/common/src/enums/fieldType.ts","webpack:///./jslib/common/src/abstractions/send.service.ts","webpack:///./src/app/organizations/policies/base-policy.component.ts","webpack:///./jslib/common/src/models/view/cipherView.ts","webpack:///./jslib/common/src/models/view/folderView.ts","webpack:///./src/app/settings/tax-info.component.ts","webpack:///./src/app/settings/tax-info.component.html","webpack:///./src/app/services/event.service.ts","webpack:///./jslib/common/src/models/domain/collection.ts","webpack:///./jslib/common/src/models/view/identityView.ts","webpack:///./jslib/common/src/models/view/loginView.ts","webpack:///./jslib/common/src/models/data/collectionData.ts","webpack:///./jslib/common/src/models/view/collectionView.ts","webpack:///./jslib/common/src/models/data/cipherData.ts","webpack:///./jslib/common/src/enums/sendType.ts","webpack:///./jslib/common/src/enums/cipherRepromptType.ts","webpack:///./jslib/common/src/models/api/permissionsApi.ts","webpack:///./jslib/common/src/enums/organizationUserStatusType.ts","webpack:///./src/app/components/password-strength.component.ts","webpack:///./src/app/components/password-strength.component.html","webpack:///./src/app/settings/two-factor-verify.component.ts","webpack:///./src/app/settings/two-factor-verify.component.html","webpack:///./jslib/common/src/models/domain/cipher.ts","webpack:///./jslib/common/src/abstractions/passwordReprompt.service.ts","webpack:///./src/app/layouts/navbar.component.ts","webpack:///./src/app/layouts/navbar.component.html","webpack:///./src/app/layouts/footer.component.ts","webpack:///./src/app/layouts/footer.component.html","webpack:///./src/app/settings/organization-plans.component.ts","webpack:///./src/app/settings/organization-plans.component.html","webpack:///./jslib/common/src/models/response/errorResponse.ts","webpack:///./jslib/common/src/enums/eventType.ts","webpack:///./jslib/common/src/models/view/fieldView.ts","webpack:///./jslib/common/src/models/request/cipherRequest.ts","webpack:///./jslib/angular/src/components/modal/modal.ref.ts","webpack:///./bitwarden_license/src/app/providers/services/provider.service.ts","webpack:///./jslib/common/src/enums/planType.ts","webpack:///./jslib/common/src/enums/paymentMethodType.ts","webpack:///./jslib/common/src/models/response/cipherResponse.ts","webpack:///./src/app/services/policy-list.service.ts","webpack:///./src/app/services/router.service.ts","webpack:///./jslib/common/src/enums/kdfType.ts","webpack:///./jslib/common/src/models/domain/symmetricCryptoKey.ts","webpack:///./src/app/settings/two-factor-base.component.ts","webpack:///./src/app/tools/cipher-report.component.ts","webpack:///./jslib/common/src/models/view/loginUriView.ts","webpack:///./jslib/common/src/enums/uriMatchType.ts","webpack:///./src/app/vault/add-edit.component.ts","webpack:///./src/app/vault/add-edit.component.html","webpack:///./jslib/common/src/abstractions/import.service.ts","webpack:///./src/app/vault/ciphers.component.ts","webpack:///./src/app/vault/ciphers.component.html","webpack:///./jslib/common/src/enums/permissions.ts","webpack:///./jslib/common/src/enums/providerUserType.ts","webpack:///./jslib/common/src/enums/encryptionType.ts","webpack:///./jslib/common/src/models/request/keysRequest.ts","webpack:///./jslib/common/src/models/response/selectionReadOnlyResponse.ts","webpack:///./jslib/common/src/models/response/profileResponse.ts","webpack:///./jslib/common/src/models/response/policyResponse.ts","webpack:///./src/app/common/base.accept.component.ts","webpack:///./jslib/common/src/enums/deviceType.ts","webpack:///./jslib/common/src/abstractions/index.ts","webpack:///./jslib/common/src/abstractions/settings.service.ts","webpack:///./src/app/organizations/manage/entity-events.component.ts","webpack:///./src/app/organizations/manage/entity-events.component.html","webpack:///./jslib/common/src/models/request/organizationUserResetPasswordEnrollmentRequest.ts","webpack:///./jslib/common/src/enums/hashPurpose.ts","webpack:///./jslib/common/src/models/data/policyData.ts","webpack:///./jslib/angular/src/components/change-password.component.ts","webpack:///./jslib/common/src/services/auth.service.ts","webpack:///./jslib/common/src/models/request/selectionReadOnlyRequest.ts","webpack:///./jslib/common/src/enums/organizationUserType.ts","webpack:///./jslib/common/src/models/domain/card.ts","webpack:///./jslib/common/src/models/domain/field.ts","webpack:///./jslib/common/src/models/domain/identity.ts","webpack:///./jslib/common/src/models/domain/login.ts","webpack:///./jslib/common/src/models/domain/loginUri.ts","webpack:///./jslib/common/src/models/domain/secureNote.ts","webpack:///./jslib/angular/src/directives/true-false-value.directive.ts","webpack:///./src/app/vault/groupings.component.ts","webpack:///./src/app/vault/groupings.component.html","webpack:///./jslib/common/src/models/domain/organization.ts","webpack:///./jslib/common/src/models/view/sendFileView.ts","webpack:///./jslib/common/src/models/view/sendTextView.ts","webpack:///./src/app/settings/organizations.component.ts","webpack:///./src/app/settings/organizations.component.html","webpack:///./jslib/angular/src/services/auth-guard.service.ts","webpack:///./jslib/common/src/enums/productType.ts","webpack:///./jslib/common/src/models/request/organizationKeysRequest.ts","webpack:///./jslib/common/src/models/response/attachmentResponse.ts","webpack:///./jslib/common/src/models/response/collectionResponse.ts","webpack:///./jslib/common/src/models/response/domainsResponse.ts","webpack:///./jslib/common/src/models/response/folderResponse.ts","webpack:///./jslib/common/src/models/response/sendResponse.ts","webpack:///./jslib/common/src/models/api/sendFileApi.ts","webpack:///./jslib/common/src/models/api/sendTextApi.ts","webpack:///./jslib/common/src/enums/providerUserStatusType.ts","webpack:///./jslib/common/src/models/request/provider/providerUserBulkRequest.ts","webpack:///./src/app/organizations/manage/bulk/bulk-status.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-status.component.html","webpack:///./src/app/organizations/manage/bulk/bulk-confirm.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-confirm.component.html","webpack:///./jslib/common/src/models/request/organizationUserBulkRequest.ts","webpack:///./src/app/organizations/manage/bulk/bulk-remove.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-remove.component.html","webpack:///./src/app/layouts/frontend-layout.component.ts","webpack:///./src/app/layouts/frontend-layout.component.html","webpack:///./src/app/providers/providers.component.ts","webpack:///./src/app/providers/providers.component.html","webpack:///./jslib/common/src/abstractions/notifications.service.ts","webpack:///./jslib/common/src/models/domain/policy.ts","webpack:///./src/app/organizations/manage/entity-users.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.html","webpack:///./src/app/settings/api-key.component.ts","webpack:///./src/app/settings/api-key.component.html","webpack:///./src/app/settings/purge-vault.component.ts","webpack:///./src/app/settings/purge-vault.component.html","webpack:///./src/app/settings/user-billing.component.ts","webpack:///./src/app/settings/user-billing.component.html","webpack:///./src/app/settings/add-credit.component.ts","webpack:///./src/app/settings/add-credit.component.html","webpack:///./src/app/settings/adjust-payment.component.ts","webpack:///./src/app/settings/adjust-payment.component.html","webpack:///./src/app/settings/update-license.component.ts","webpack:///./src/app/settings/update-license.component.html","webpack:///./src/app/settings/adjust-storage.component.ts","webpack:///./src/app/settings/adjust-storage.component.html","webpack:///./src/app/settings/two-factor-duo.component.ts","webpack:///./src/app/settings/two-factor-duo.component.html","webpack:///./src/app/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-setup.component.html","webpack:///./src/app/tools/export.component.ts","webpack:///./src/app/tools/export.component.html","webpack:///./src/app/tools/exposed-passwords-report.component.ts","webpack:///./src/app/tools/exposed-passwords-report.component.html","webpack:///./src/app/organizations/vault/add-edit.component.ts","webpack:///./jslib/common/src/models/data/attachmentData.ts","webpack:///./jslib/common/src/models/data/cardData.ts","webpack:///./jslib/common/src/models/data/fieldData.ts","webpack:///./jslib/common/src/models/data/identityData.ts","webpack:///./jslib/common/src/models/data/loginData.ts","webpack:///./jslib/common/src/models/data/loginUriData.ts","webpack:///./jslib/common/src/models/data/secureNoteData.ts","webpack:///./jslib/common/src/models/domain/attachment.ts","webpack:///./jslib/common/src/models/view/passwordHistoryView.ts","webpack:///./src/app/tools/import.component.ts","webpack:///./src/app/tools/import.component.html","webpack:///./src/app/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/tools/inactive-two-factor-report.component.html","webpack:///./src/app/tools/reused-passwords-report.component.ts","webpack:///./src/app/tools/reused-passwords-report.component.html","webpack:///./src/app/tools/unsecured-websites-report.component.ts","webpack:///./src/app/tools/unsecured-websites-report.component.html","webpack:///./src/app/tools/weak-passwords-report.component.ts","webpack:///./src/app/tools/weak-passwords-report.component.html","webpack:///./src/app/vault/attachments.component.ts","webpack:///./src/app/vault/attachments.component.html","webpack:///./src/app/organizations/vault/ciphers.component.ts","webpack:///./src/app/vault/collections.component.ts","webpack:///./src/app/vault/collections.component.html","webpack:///./src/app/organizations/vault/groupings.component.ts","webpack:///./src/app/vault/bulk-actions.component.ts","webpack:///./src/app/vault/bulk-actions.component.html","webpack:///./jslib/common/src/models/domain/sendFile.ts","webpack:///./jslib/common/src/models/domain/sendText.ts","webpack:///./jslib/common/src/models/request/cipherWithIdRequest.ts","webpack:///./jslib/common/src/models/request/folderRequest.ts","webpack:///./jslib/common/src/models/data/folderData.ts","webpack:///./jslib/common/src/models/domain/folder.ts","webpack:///./jslib/angular/src/directives/select-copy.directive.ts","webpack:///./jslib/angular/src/pipes/color-password.pipe.ts","webpack:///./$_lazy_route_resource lazy namespace object","webpack:///./bitwarden_license/src/app/providers/services/provider-guard.service.ts","webpack:///./bitwarden_license/src/app/providers/services/provider-type-guard.service.ts","webpack:///./bitwarden_license/src/app/providers/providers-layout.component.ts","webpack:///./bitwarden_license/src/app/providers/providers-layout.component.html","webpack:///./bitwarden_license/src/app/providers/clients/clients.component.ts","webpack:///./bitwarden_license/src/app/providers/clients/clients.component.html","webpack:///./bitwarden_license/src/app/providers/clients/add-organization.component.ts","webpack:///./bitwarden_license/src/app/providers/clients/add-organization.component.html","webpack:///./bitwarden_license/src/app/providers/clients/create-organization.component.ts","webpack:///./bitwarden_license/src/app/providers/clients/create-organization.component.html","webpack:///./src/services/webConstants.ts","webpack:///./jslib/common/src/models/domain/masterPasswordPolicyOptions.ts","webpack:///./jslib/common/src/models/request/organizationTaxInfoUpdateRequest.ts","webpack:///./jslib/common/src/models/request/taxInfoUpdateRequest.ts","webpack:///./jslib/common/src/models/response/index.ts","webpack:///./jslib/common/src/models/api/cardApi.ts","webpack:///./jslib/common/src/models/api/fieldApi.ts","webpack:///./jslib/common/src/models/api/identityApi.ts","webpack:///./jslib/common/src/models/api/loginApi.ts","webpack:///./jslib/common/src/models/api/loginUriApi.ts","webpack:///./jslib/common/src/models/api/secureNoteApi.ts","webpack:///./jslib/common/src/models/response/globalDomainResponse.ts","webpack:///./jslib/common/src/models/response/identityTokenResponse.ts","webpack:///./jslib/common/src/models/response/identityTwoFactorResponse.ts","webpack:///./jslib/common/src/models/response/keysResponse.ts","webpack:///./jslib/common/src/models/response/listResponse.ts","webpack:///./jslib/common/src/models/response/profileOrganizationResponse.ts","webpack:///./jslib/common/src/models/response/syncResponse.ts","webpack:///./bitwarden_license/src/app/providers/manage/accept-provider.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/accept-provider.component.html","webpack:///./bitwarden_license/src/app/providers/manage/events.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/events.component.html","webpack:///./src/app/common/base.events.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/manage.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/manage.component.html","webpack:///./bitwarden_license/src/app/providers/manage/people.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/people.component.html","webpack:///./src/app/common/base.people.component.ts","webpack:///./src/app/organizations/manage/user-confirm.component.ts","webpack:///./src/app/organizations/manage/user-confirm.component.html","webpack:///./bitwarden_license/src/app/providers/manage/bulk/bulk-confirm.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/bulk/bulk-remove.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/user-add-edit.component.ts","webpack:///./bitwarden_license/src/app/providers/manage/user-add-edit.component.html","webpack:///./bitwarden_license/src/app/providers/settings/settings.component.ts","webpack:///./bitwarden_license/src/app/providers/settings/settings.component.html","webpack:///./bitwarden_license/src/app/providers/setup/setup-provider.component.ts","webpack:///./bitwarden_license/src/app/providers/setup/setup-provider.component.html","webpack:///./bitwarden_license/src/app/providers/setup/setup.component.ts","webpack:///./bitwarden_license/src/app/providers/setup/setup.component.html","webpack:///./bitwarden_license/src/app/providers/settings/account.component.ts","webpack:///./bitwarden_license/src/app/providers/settings/account.component.html","webpack:///./src/app/oss.module.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.component.html","webpack:///./src/app/organizations/policies/disable-send.component.ts","webpack:///./src/app/organizations/policies/disable-send.component.html","webpack:///./src/app/organizations/policies/master-password.component.ts","webpack:///./src/app/organizations/policies/master-password.component.html","webpack:///./src/app/organizations/policies/password-generator.component.ts","webpack:///./src/app/organizations/policies/password-generator.component.html","webpack:///./src/app/organizations/policies/personal-ownership.component.ts","webpack:///./src/app/organizations/policies/personal-ownership.component.html","webpack:///./src/app/organizations/policies/require-sso.component.ts","webpack:///./src/app/organizations/policies/require-sso.component.html","webpack:///./src/app/organizations/policies/reset-password.component.ts","webpack:///./src/app/organizations/policies/reset-password.component.html","webpack:///./src/app/organizations/policies/send-options.component.ts","webpack:///./src/app/organizations/policies/send-options.component.html","webpack:///./src/app/organizations/policies/single-org.component.ts","webpack:///./src/app/organizations/policies/single-org.component.html","webpack:///./src/app/organizations/policies/two-factor-authentication.component.ts","webpack:///./src/app/organizations/policies/two-factor-authentication.component.html","webpack:///./src/app/components/password-reprompt.component.ts","webpack:///./src/app/components/password-reprompt.component.html","webpack:///./jslib/angular/src/components/password-reprompt.component.ts","webpack:///./jslib/angular/src/directives/blur-click.directive.ts","webpack:///./src/app/layouts/organization-layout.component.ts","webpack:///./src/app/layouts/organization-layout.component.html","webpack:///./src/app/layouts/user-layout.component.ts","webpack:///./src/app/layouts/user-layout.component.html","webpack:///./src/app/accounts/accept-emergency.component.ts","webpack:///./src/app/accounts/accept-emergency.component.html","webpack:///./src/app/accounts/accept-organization.component.ts","webpack:///./src/app/accounts/accept-organization.component.html","webpack:///./src/app/accounts/hint.component.ts","webpack:///./src/app/accounts/hint.component.html","webpack:///./src/app/accounts/lock.component.ts","webpack:///./src/app/accounts/lock.component.html","webpack:///./src/app/accounts/login.component.ts","webpack:///./src/app/accounts/login.component.html","webpack:///./jslib/angular/src/components/captchaProtected.component.ts","webpack:///./src/app/accounts/recover-delete.component.ts","webpack:///./src/app/accounts/recover-delete.component.html","webpack:///./src/app/accounts/recover-two-factor.component.ts","webpack:///./src/app/accounts/recover-two-factor.component.html","webpack:///./src/app/accounts/register.component.ts","webpack:///./src/app/accounts/register.component.html","webpack:///./src/app/accounts/set-password.component.ts","webpack:///./src/app/accounts/set-password.component.html","webpack:///./src/app/accounts/sso.component.ts","webpack:///./src/app/accounts/sso.component.html","webpack:///./jslib/angular/src/components/sso.component.ts","webpack:///./src/app/accounts/two-factor-options.component.ts","webpack:///./src/app/accounts/two-factor-options.component.html","webpack:///./src/app/accounts/two-factor.component.ts","webpack:///./src/app/accounts/two-factor.component.html","webpack:///./jslib/common/src/models/request/twoFactorEmailRequest.ts","webpack:///./jslib/common/src/models/domain/authResult.ts","webpack:///./src/app/accounts/update-temp-password.component.ts","webpack:///./src/app/accounts/update-temp-password.component.html","webpack:///./jslib/common/src/models/request/organizationUserResetPasswordRequest.ts","webpack:///./src/app/accounts/verify-email-token.component.ts","webpack:///./src/app/accounts/verify-email-token.component.html","webpack:///./src/app/accounts/verify-recover-delete.component.ts","webpack:///./src/app/accounts/verify-recover-delete.component.html","webpack:///./src/app/organizations/manage/collection-add-edit.component.ts","webpack:///./src/app/organizations/manage/collection-add-edit.component.html","webpack:///./jslib/common/src/models/request/collectionRequest.ts","webpack:///./src/app/organizations/manage/collections.component.ts","webpack:///./src/app/organizations/manage/collections.component.html","webpack:///./src/app/organizations/manage/events.component.ts","webpack:///./src/app/organizations/manage/events.component.html","webpack:///./src/app/organizations/manage/group-add-edit.component.ts","webpack:///./src/app/organizations/manage/group-add-edit.component.html","webpack:///./src/app/organizations/manage/groups.component.ts","webpack:///./src/app/organizations/manage/groups.component.html","webpack:///./src/app/organizations/manage/manage.component.ts","webpack:///./src/app/organizations/manage/manage.component.html","webpack:///./src/app/organizations/manage/people.component.ts","webpack:///./src/app/organizations/manage/people.component.html","webpack:///./src/app/organizations/manage/reset-password.component.ts","webpack:///./src/app/organizations/manage/reset-password.component.html","webpack:///./src/app/organizations/manage/user-add-edit.component.ts","webpack:///./src/app/organizations/manage/user-add-edit.component.html","webpack:///./src/app/organizations/manage/user-groups.component.ts","webpack:///./src/app/organizations/manage/user-groups.component.html","webpack:///./src/app/organizations/manage/policies.component.ts","webpack:///./src/app/organizations/manage/policies.component.html","webpack:///./src/app/organizations/manage/policy-edit.component.ts","webpack:///./src/app/organizations/manage/policy-edit.component.html","webpack:///./src/app/organizations/settings/account.component.ts","webpack:///./src/app/organizations/settings/account.component.html","webpack:///./src/app/organizations/settings/delete-organization.component.ts","webpack:///./src/app/organizations/settings/delete-organization.component.html","webpack:///./src/app/organizations/settings/adjust-seats.component.ts","webpack:///./src/app/organizations/settings/adjust-seats.component.html","webpack:///./src/app/organizations/settings/change-plan.component.ts","webpack:///./src/app/organizations/settings/change-plan.component.html","webpack:///./src/app/organizations/settings/download-license.component.ts","webpack:///./src/app/organizations/settings/download-license.component.html","webpack:///./src/app/organizations/settings/organization-billing.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.html","webpack:///./src/app/organizations/settings/settings.component.ts","webpack:///./src/app/organizations/settings/settings.component.html","webpack:///./src/app/organizations/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.html","webpack:///./src/app/settings/two-factor-email.component.ts","webpack:///./src/app/settings/two-factor-email.component.html","webpack:///./src/app/settings/two-factor-recovery.component.ts","webpack:///./src/app/settings/two-factor-recovery.component.html","webpack:///./src/app/settings/two-factor-webauthn.component.ts","webpack:///./src/app/settings/two-factor-webauthn.component.html","webpack:///./src/app/settings/two-factor-yubikey.component.ts","webpack:///./src/app/settings/two-factor-yubikey.component.html","webpack:///./src/app/organizations/tools/export.component.ts","webpack:///./src/app/organizations/tools/exposed-passwords-report.component.ts","webpack:///./jslib/common/src/models/data/passwordHistoryData.ts","webpack:///./jslib/common/src/models/view/attachmentView.ts","webpack:///./jslib/common/src/models/domain/password.ts","webpack:///./jslib/common/src/models/request/cipherCreateRequest.ts","webpack:///./jslib/angular/src/directives/fallback-src.directive.ts","webpack:///./src/app/organizations/tools/import.component.ts","webpack:///./src/app/organizations/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/organizations/tools/reused-passwords-report.component.ts","webpack:///./src/app/organizations/tools/tools.component.ts","webpack:///./src/app/organizations/tools/tools.component.html","webpack:///./src/app/organizations/tools/unsecured-websites-report.component.ts","webpack:///./src/app/organizations/tools/weak-passwords-report.component.ts","webpack:///./src/app/organizations/vault/attachments.component.ts","webpack:///./jslib/angular/src/components/attachments.component.ts","webpack:///./src/app/organizations/vault/collections.component.ts","webpack:///./jslib/common/src/models/request/cipherCollectionsRequest.ts","webpack:///./src/app/organizations/vault/vault.component.ts","webpack:///./src/app/organizations/vault/vault.component.html","webpack:///./src/app/vault/bulk-delete.component.ts","webpack:///./src/app/vault/bulk-delete.component.html","webpack:///./jslib/common/src/models/request/cipherBulkDeleteRequest.ts","webpack:///./src/app/vault/bulk-move.component.ts","webpack:///./src/app/vault/bulk-move.component.html","webpack:///./src/app/vault/bulk-restore.component.ts","webpack:///./src/app/vault/bulk-restore.component.html","webpack:///./src/app/vault/bulk-share.component.ts","webpack:///./src/app/vault/bulk-share.component.html","webpack:///./src/app/send/access.component.ts","webpack:///./src/app/send/access.component.html","webpack:///./src/app/send/add-edit.component.ts","webpack:///./src/app/send/add-edit.component.html","webpack:///./jslib/common/src/models/view/sendView.ts","webpack:///./src/app/send/efflux-dates.component.ts","webpack:///./src/app/send/efflux-dates.component.html","webpack:///./src/app/send/send.component.ts","webpack:///./src/app/send/send.component.html","webpack:///./src/app/settings/account.component.ts","webpack:///./src/app/settings/account.component.html","webpack:///./src/app/settings/deauthorize-sessions.component.ts","webpack:///./src/app/settings/deauthorize-sessions.component.html","webpack:///./src/app/settings/delete-account.component.ts","webpack:///./src/app/settings/delete-account.component.html","webpack:///./src/app/settings/profile.component.ts","webpack:///./src/app/settings/profile.component.html","webpack:///./src/app/settings/change-email.component.ts","webpack:///./src/app/settings/change-email.component.html","webpack:///./jslib/common/src/models/request/emailTokenRequest.ts","webpack:///./src/app/settings/change-password.component.ts","webpack:///./src/app/settings/change-password.component.html","webpack:///./jslib/common/src/enums/emergencyAccessStatusType.ts","webpack:///./jslib/common/src/models/request/emergencyAccessUpdateRequest.ts","webpack:///./jslib/common/src/models/request/folderWithIdRequest.ts","webpack:///./jslib/common/src/models/request/passwordRequest.ts","webpack:///./jslib/common/src/models/request/sendRequest.ts","webpack:///./jslib/common/src/models/request/updateKeyRequest.ts","webpack:///./src/app/settings/change-kdf.component.ts","webpack:///./src/app/settings/change-kdf.component.html","webpack:///./src/app/settings/create-organization.component.ts","webpack:///./src/app/settings/create-organization.component.html","webpack:///./src/app/settings/domain-rules.component.ts","webpack:///./src/app/settings/domain-rules.component.html","webpack:///./src/app/settings/emergency-access-add-edit.component.ts","webpack:///./src/app/settings/emergency-access-add-edit.component.html","webpack:///./jslib/common/src/enums/emergencyAccessType.ts","webpack:///./src/app/settings/emergency-access-attachments.component.ts","webpack:///./src/app/settings/emergency-access-confirm.component.ts","webpack:///./src/app/settings/emergency-access-confirm.component.html","webpack:///./src/app/settings/emergency-access-takeover.component.ts","webpack:///./src/app/settings/emergency-access-takeover.component.html","webpack:///./src/app/settings/emergency-access-view.component.ts","webpack:///./src/app/settings/emergency-access-view.component.html","webpack:///./jslib/common/src/models/domain/encryptedObject.ts","webpack:///./jslib/common/src/models/domain/environmentUrls.ts","webpack:///./jslib/common/src/models/domain/generatedPasswordHistory.ts","webpack:///./src/app/settings/emergency-add-edit.component.ts","webpack:///./src/app/settings/emergency-access.component.ts","webpack:///./src/app/settings/emergency-access.component.html","webpack:///./jslib/common/src/models/response/emergencyAccessResponse.ts","webpack:///./src/app/settings/link-sso.component.ts","webpack:///./src/app/settings/link-sso.component.html","webpack:///./src/app/settings/options.component.ts","webpack:///./src/app/settings/options.component.html","webpack:///./src/app/settings/premium.component.ts","webpack:///./src/app/settings/premium.component.html","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/update-key.component.ts","webpack:///./src/app/settings/update-key.component.html","webpack:///./src/app/settings/user-subscription.component.ts","webpack:///./src/app/settings/user-subscription.component.html","webpack:///./src/app/settings/verify-email.component.ts","webpack:///./src/app/settings/verify-email.component.html","webpack:///./src/app/tools/breach-report.component.ts","webpack:///./src/app/tools/breach-report.component.html","webpack:///./src/app/tools/password-generator-history.component.ts","webpack:///./src/app/tools/password-generator-history.component.html","webpack:///./src/app/tools/password-generator.component.ts","webpack:///./src/app/tools/password-generator.component.html","webpack:///./src/app/tools/tools.component.ts","webpack:///./src/app/tools/tools.component.html","webpack:///./src/app/vault/folder-add-edit.component.ts","webpack:///./src/app/vault/folder-add-edit.component.html","webpack:///./src/app/vault/share.component.ts","webpack:///./src/app/vault/share.component.html","webpack:///./src/app/vault/vault.component.ts","webpack:///./src/app/vault/vault.component.html","webpack:///./src/app/services/organization-guard.service.ts","webpack:///./src/app/services/organization-type-guard.service.ts","webpack:///./jslib/angular/src/services/lock-guard.service.ts","webpack:///./jslib/angular/src/services/unauth-guard.service.ts","webpack:///./jslib/common/src/services/api.service.ts","webpack:///./jslib/common/src/models/response/organizationResponse.ts","webpack:///./jslib/common/src/models/response/planResponse.ts","webpack:///./jslib/common/src/models/response/subscriptionResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserBulkPublicKeyResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorWebAuthnResponse.ts","webpack:///./jslib/common/src/services/appId.service.ts","webpack:///./jslib/common/src/services/audit.service.ts","webpack:///./jslib/common/src/services/cipher.service.ts","webpack:///./jslib/common/src/misc/sequentialize.ts","webpack:///./jslib/common/src/services/collection.service.ts","webpack:///./jslib/common/src/misc/serviceUtils.ts","webpack:///./jslib/common/src/services/container.service.ts","webpack:///./jslib/common/src/services/crypto.service.ts","webpack:///./jslib/common/src/misc/wordlist.ts","webpack:///./jslib/common/src/services/environment.service.ts","webpack:///./jslib/common/src/services/folder.service.ts","webpack:///./jslib/common/src/services/i18n.service.ts","webpack:///./jslib/common/src/services/passwordGeneration.service.ts","webpack:///./jslib/common/src/services/settings.service.ts","webpack:///./jslib/common/src/services/state.service.ts","webpack:///./jslib/common/src/services/sync.service.ts","webpack:///./jslib/common/src/models/data/sendData.ts","webpack:///./jslib/common/src/services/token.service.ts","webpack:///./jslib/common/src/services/totp.service.ts","webpack:///./jslib/common/src/services/user.service.ts","webpack:///./jslib/common/src/services/vaultTimeout.service.ts","webpack:///./jslib/common/src/services/consoleLog.service.ts","webpack:///./jslib/common/src/enums/logLevelType.ts","webpack:///./jslib/common/src/models/export/cipherWithIds.ts","webpack:///./jslib/common/src/models/export/collectionWithId.ts","webpack:///./jslib/common/src/models/export/folderWithId.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts","webpack:///./jslib/common/src/models/view/index.ts","webpack:///./jslib/common/src/enums/notificationType.ts","webpack:///./bitwarden_license/src/app/main.ts","webpack:///./src/scss/styles.scss?580e","webpack:///./bitwarden_license/src/app/app.module.ts","webpack:///./bitwarden_license/src/app/app-routing.module.ts","webpack:///./bitwarden_license/src/app/providers/providers.module.ts","webpack:///./jslib/angular/src/components/modal/dynamic-modal.component.ts","webpack:///./jslib/angular/src/components/modal/modal-injector.ts","webpack:///./jslib/common/src/models/request/provider/providerAddOrganizationRequest.ts","webpack:///./jslib/common/src/misc/tldjs.noop.ts","webpack:///./bitwarden_license/src/app/providers/providers-routing.module.ts","webpack:///./jslib/common/src/models/request/organizationCreateRequest.ts","webpack:///./jslib/common/src/models/request/organizationUpgradeRequest.ts","webpack:///./jslib/common/src/models/request/provider/providerOrganizationCreateRequest.ts","webpack:///./jslib/common/src/models/response/passwordHistoryResponse.ts","webpack:///./jslib/common/src/models/response/deviceResponse.ts","webpack:///./jslib/common/src/models/response/profileProviderOrganizationResponse.ts","webpack:///./jslib/common/src/models/response/profileProviderResponse.ts","webpack:///./jslib/common/src/models/request/provider/providerUserAcceptRequest.ts","webpack:///./jslib/common/src/models/view/eventView.ts","webpack:///./jslib/common/src/abstractions/appId.service.ts","webpack:///./jslib/common/src/models/request/provider/providerUserConfirmRequest.ts","webpack:///./jslib/common/src/models/request/provider/providerUserBulkConfirmRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserBulkConfirmRequest.ts","webpack:///./jslib/common/src/models/request/provider/providerUserInviteRequest.ts","webpack:///./jslib/common/src/models/request/provider/providerUserUpdateRequest.ts","webpack:///./jslib/common/src/models/request/provider/providerSetupRequest.ts","webpack:///./jslib/common/src/models/request/provider/providerUpdateRequest.ts","webpack:///./jslib/common/src/services/broadcaster.service.ts","webpack:///./jslib/common/src/models/request/policyRequest.ts","webpack:///./jslib/common/src/models/request/emergencyAccessAcceptRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserAcceptRequest.ts","webpack:///./jslib/angular/src/components/hint.component.ts","webpack:///./jslib/common/src/models/request/passwordHintRequest.ts","webpack:///./jslib/angular/src/components/lock.component.ts","webpack:///./jslib/angular/src/components/login.component.ts","webpack:///./jslib/common/src/misc/captcha_iframe.ts","webpack:///./jslib/common/src/misc/iframe_component.ts","webpack:///./jslib/common/src/models/request/deleteRecoverRequest.ts","webpack:///./jslib/common/src/models/request/twoFactorRecoveryRequest.ts","webpack:///./jslib/angular/src/components/register.component.ts","webpack:///./jslib/common/src/models/request/registerRequest.ts","webpack:///./jslib/common/src/models/request/referenceEventRequest.ts","webpack:///./jslib/angular/src/components/set-password.component.ts","webpack:///./jslib/common/src/models/request/setPasswordRequest.ts","webpack:///./jslib/angular/src/components/two-factor-options.component.ts","webpack:///./jslib/angular/src/components/two-factor.component.ts","webpack:///./jslib/common/src/models/request/deviceRequest.ts","webpack:///./jslib/common/src/models/request/preloginRequest.ts","webpack:///./jslib/common/src/models/request/tokenRequest.ts","webpack:///./jslib/common/src/misc/webauthn_iframe.ts","webpack:///./jslib/angular/src/components/update-temp-password.component.ts","webpack:///./jslib/common/src/models/request/updateTempPasswordRequest.ts","webpack:///./jslib/common/src/models/request/verifyEmailRequest.ts","webpack:///./jslib/common/src/models/request/verifyDeleteRecoverRequest.ts","webpack:///./jslib/common/src/models/request/groupRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserConfirmRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserInviteRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserUpdateRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack:///./jslib/common/src/models/request/organizationUpdateRequest.ts","webpack:///./jslib/common/src/models/request/seatRequest.ts","webpack:///./jslib/common/src/enums/transactionType.ts","webpack:///./jslib/common/src/models/request/verifyBankRequest.ts","webpack:///./jslib/common/src/models/request/bitPayInvoiceRequest.ts","webpack:///./jslib/common/src/models/request/paymentRequest.ts","webpack:///./jslib/common/src/models/request/storageRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorDuoRequest.ts","webpack:///./jslib/common/src/models/request/twoFactorProviderRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorEmailRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorWebAuthnDeleteRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorWebAuthnRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorYubioOtpRequest.ts","webpack:///./jslib/angular/src/components/export.component.ts","webpack:///./jslib/common/src/models/request/attachmentRequest.ts","webpack:///./jslib/angular/src/components/add-edit.component.ts","webpack:///./jslib/angular/src/components/ciphers.component.ts","webpack:///./jslib/angular/src/components/collections.component.ts","webpack:///./jslib/angular/src/components/groupings.component.ts","webpack:///./jslib/common/src/models/domain/sendAccess.ts","webpack:///./jslib/common/src/models/view/sendAccessView.ts","webpack:///./jslib/common/src/models/request/sendAccessRequest.ts","webpack:///./jslib/angular/src/components/send/add-edit.component.ts","webpack:///./jslib/angular/src/components/send/efflux-dates.component.ts","webpack:///./jslib/angular/src/components/send/send.component.ts","webpack:///./jslib/common/src/models/request/updateProfileRequest.ts","webpack:///./jslib/common/src/models/request/emailRequest.ts","webpack:///./jslib/common/src/models/request/sendWithIdRequest.ts","webpack:///./jslib/common/src/models/request/kdfRequest.ts","webpack:///./jslib/common/src/models/request/updateDomainsRequest.ts","webpack:///./jslib/common/src/models/request/emergencyAccessInviteRequest.ts","webpack:///./jslib/common/src/models/request/emergencyAccessPasswordRequest.ts","webpack:///./jslib/common/src/models/data/index.ts","webpack:///./jslib/common/src/models/domain/index.ts","webpack:///./jslib/common/src/models/request/emergencyAccessConfirmRequest.ts","webpack:///./jslib/angular/src/components/password-generator-history.component.ts","webpack:///./jslib/angular/src/components/password-generator.component.ts","webpack:///./jslib/angular/src/components/folder-add-edit.component.ts","webpack:///./jslib/angular/src/components/share.component.ts","webpack:///./jslib/angular/src/directives/box-row.directive.ts","webpack:///./jslib/angular/src/pipes/search-ciphers.pipe.ts","webpack:///./src/app/oss-routing.module.ts","webpack:///./src/app/services/services.module.ts","webpack:///./src/services/broadcasterMessaging.service.ts","webpack:///./src/services/htmlStorage.service.ts","webpack:///./jslib/common/src/services/index.ts","webpack:///./jslib/common/src/models/response/apiKeyResponse.ts","webpack:///./jslib/common/src/models/response/attachmentUploadDataResponse.ts","webpack:///./jslib/common/src/models/response/billingResponse.ts","webpack:///./jslib/common/src/models/response/breachAccountResponse.ts","webpack:///./jslib/common/src/models/response/eventResponse.ts","webpack:///./jslib/common/src/models/response/groupResponse.ts","webpack:///./jslib/common/src/models/response/organizationAutoEnrollStatusResponse.ts","webpack:///./jslib/common/src/models/response/organizationKeysResponse.ts","webpack:///./jslib/common/src/models/response/organizationSubscriptionResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserBulkResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserResponse.ts","webpack:///./jslib/common/src/models/response/paymentResponse.ts","webpack:///./jslib/common/src/models/response/preloginResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerOrganizationResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerUserBulkPublicKeyResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerUserBulkResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerUserResponse.ts","webpack:///./jslib/common/src/models/response/sendAccessResponse.ts","webpack:///./jslib/common/src/models/response/sendFileDownloadDataResponse.ts","webpack:///./jslib/common/src/models/response/sendFileUploadDataResponse.ts","webpack:///./jslib/common/src/models/response/taxInfoResponse.ts","webpack:///./jslib/common/src/models/response/taxRateResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorAuthenticatorResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorDuoResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorEmailResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorProviderResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorRescoverResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorYubiKeyResponse.ts","webpack:///./jslib/common/src/models/response/userKeyResponse.ts","webpack:///./jslib/common/src/models/response/identityCaptchaResponse.ts","webpack:///./jslib/common/src/misc/throttle.ts","webpack:///./jslib/common/src/models/request/cipherBulkMoveRequest.ts","webpack:///./jslib/common/src/models/request/cipherBulkRestoreRequest.ts","webpack:///./jslib/common/src/models/request/cipherBulkShareRequest.ts","webpack:///./jslib/common/src/models/request/cipherShareRequest.ts","webpack:///./jslib/common/src/models/domain/sortedCiphersCache.ts","webpack:///./jslib/common/src/models/domain/treeNode.ts","webpack:///./jslib/common/src/models/domain/encArrayBuffer.ts","webpack:///./jslib/common/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack:///./jslib/common/src/models/data/organizationData.ts","webpack:///./jslib/common/src/models/data/providerData.ts","webpack:///./jslib/common/src/models/data/sendFileData.ts","webpack:///./jslib/common/src/models/data/sendTextData.ts","webpack:///./jslib/common/src/models/domain/provider.ts","webpack:///./src/services/i18n.service.ts","webpack:///./src/services/memoryStorage.service.ts","webpack:///./src/services/passwordReprompt.service.ts","webpack:///./jslib/angular/src/services/passwordReprompt.service.ts","webpack:///./src/services/webPlatformUtils.service.ts","webpack:///./jslib/common/src/services/event.service.ts","webpack:///./jslib/common/src/models/data/eventData.ts","webpack:///./jslib/common/src/models/request/eventRequest.ts","webpack:///./jslib/common/src/services/export.service.ts","webpack:///./jslib/common/src/models/export/cipher.ts","webpack:///./jslib/common/src/models/export/card.ts","webpack:///./jslib/common/src/models/export/field.ts","webpack:///./jslib/common/src/models/export/identity.ts","webpack:///./jslib/common/src/models/export/login.ts","webpack:///./jslib/common/src/models/export/loginUri.ts","webpack:///./jslib/common/src/models/export/secureNote.ts","webpack:///./jslib/common/src/models/export/collection.ts","webpack:///./jslib/common/src/models/export/event.ts","webpack:///./jslib/common/src/models/export/folder.ts","webpack:///./jslib/common/src/services/fileUpload.service.ts","webpack:///./jslib/common/src/enums/fileUploadType.ts","webpack:///./jslib/common/src/services/azureFileUpload.service.ts","webpack:///./jslib/common/src/services/bitwardenFileUpload.service.ts","webpack:///./jslib/common/src/services/import.service.ts","webpack:///./jslib/common/src/models/request/importCiphersRequest.ts","webpack:///./jslib/common/src/models/request/importOrganizationCiphersRequest.ts","webpack:///./jslib/common/src/models/request/kvpRequest.ts","webpack:///./jslib/common/src/importers/ascendoCsvImporter.ts","webpack:///./jslib/common/src/importers/avastCsvImporter.ts","webpack:///./jslib/common/src/importers/avastJsonImporter.ts","webpack:///./jslib/common/src/importers/aviraCsvImporter.ts","webpack:///./jslib/common/src/importers/bitwardenCsvImporter.ts","webpack:///./jslib/common/src/importers/bitwardenJsonImporter.ts","webpack:///./jslib/common/src/importers/blackBerryCsvImporter.ts","webpack:///./jslib/common/src/importers/blurCsvImporter.ts","webpack:///./jslib/common/src/importers/buttercupCsvImporter.ts","webpack:///./jslib/common/src/importers/chromeCsvImporter.ts","webpack:///./jslib/common/src/importers/clipperzHtmlImporter.ts","webpack:///./jslib/common/src/importers/codebookCsvImporter.ts","webpack:///./jslib/common/src/importers/dashlaneJsonImporter.ts","webpack:///./jslib/common/src/importers/encryptrCsvImporter.ts","webpack:///./jslib/common/src/importers/enpassCsvImporter.ts","webpack:///./jslib/common/src/importers/enpassJsonImporter.ts","webpack:///./jslib/common/src/importers/firefoxCsvImporter.ts","webpack:///./jslib/common/src/importers/fsecureFskImporter.ts","webpack:///./jslib/common/src/importers/gnomeJsonImporter.ts","webpack:///./jslib/common/src/importers/kasperskyTxtImporter.ts","webpack:///./jslib/common/src/importers/keepass2XmlImporter.ts","webpack:///./jslib/common/src/importers/keepassxCsvImporter.ts","webpack:///./jslib/common/src/importers/keeperCsvImporter.ts","webpack:///./jslib/common/src/importers/lastpassCsvImporter.ts","webpack:///./jslib/common/src/importers/logMeOnceCsvImporter.ts","webpack:///./jslib/common/src/importers/meldiumCsvImporter.ts","webpack:///./jslib/common/src/importers/msecureCsvImporter.ts","webpack:///./jslib/common/src/importers/mykiCsvImporter.ts","webpack:///./jslib/common/src/importers/nordpassCsvImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/cipherImportContext.ts","webpack:///./jslib/common/src/models/view/view.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts","webpack:///./jslib/common/src/importers/padlockCsvImporter.ts","webpack:///./jslib/common/src/importers/passkeepCsvImporter.ts","webpack:///./jslib/common/src/importers/passmanJsonImporter.ts","webpack:///./jslib/common/src/importers/passpackCsvImporter.ts","webpack:///./jslib/common/src/importers/passwordAgentCsvImporter.ts","webpack:///./jslib/common/src/importers/passwordBossJsonImporter.ts","webpack:///./jslib/common/src/importers/passwordDragonXmlImporter.ts","webpack:///./jslib/common/src/importers/passwordSafeXmlImporter.ts","webpack:///./jslib/common/src/importers/passwordWalletTxtImporter.ts","webpack:///./jslib/common/src/importers/rememBearCsvImporter.ts","webpack:///./jslib/common/src/importers/roboformCsvImporter.ts","webpack:///./jslib/common/src/importers/safeInCloudXmlImporter.ts","webpack:///./jslib/common/src/enums/index.ts","webpack:///./jslib/common/src/importers/saferpassCsvImport.ts","webpack:///./jslib/common/src/importers/secureSafeCsvImporter.ts","webpack:///./jslib/common/src/importers/splashIdCsvImporter.ts","webpack:///./jslib/common/src/importers/stickyPasswordXmlImporter.ts","webpack:///./jslib/common/src/importers/truekeyCsvImporter.ts","webpack:///./jslib/common/src/importers/upmCsvImporter.ts","webpack:///./jslib/common/src/importers/yotiCsvImporter.ts","webpack:///./jslib/common/src/importers/zohoVaultCsvImporter.ts","webpack:///./jslib/common/src/services/notifications.service.ts","webpack:///./jslib/common/src/models/response/notificationResponse.ts","webpack:///./jslib/common/src/services/policy.service.ts","webpack:///./jslib/common/src/models/domain/resetPasswordPolicyOptions.ts","webpack:///./jslib/common/src/services/search.service.ts","webpack:///./jslib/common/src/services/send.service.ts","webpack:///./jslib/common/src/models/domain/send.ts","webpack:///./jslib/common/src/services/webCryptoFunction.service.ts","webpack:///./jslib/common/src/models/domain/decryptParameters.ts","webpack:///./jslib/common/src/abstractions/fileUpload.service.ts","webpack:///./src/app/services/modal.service.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","I18nService","PlatformUtilsService","ApiService","UserService","i18nService","transform","id","p1","p2","p3","this","I18nPipe","Pipe","CryptoService","MessagingService","el","renderer","title","ngOnInit","nativeElement","hasAttribute","setAttribute","A11yTitleDirective","Directive","selector","appA11yTitle","Input","validationService","logService","ngOnChanges","changes","appApiAction","then","loading","response","e","ErrorResponse","constructor","captchaRequired","error","getSingleMessage","showError","ApiActionDirective","allowMultipleModals","ModalConfig","componentFactoryResolver","applicationRef","injector","modalCount","factoryResolvers","Map","openViewRef","componentType","viewContainerRef","setComponentParameters","openInternal","modalRef","modalComponentRef","instance","insert","hostView","onCreated","pipe","first","toPromise","componentRef","open","config","registerComponentFactoryResolver","set","resolveComponentFactory","has","attachToDom","createModalComponent","childComponentType","attachView","domElem","rootNodes","document","body","appendChild","onClosed","subscribe","detachView","destroy","setupHandlers","backdrop","classList","add","createElement","className","style","zIndex","querySelector","addEventListener","stopPropagation","Array","from","querySelectorAll","event","close","onClose","closed","remove","removeChild","ModalRef","map","WeakMap","DynamicModalComponent","ModalInjector","ModalService","Injectable","CipherService","type","calloutStyle","undefined","enforcedPolicyMessage","icon","getPasswordScoreAlertDisplay","enforcedPolicyOptions","str","minComplexity","CalloutComponent","Component","templateUrl","clickable","getResponseProperty","propertyName","exactName","Error","otherCasePropertyName","charAt","toUpperCase","toLowerCase","BaseResponse","PolicyService","nodeURL","init","Utils","inited","isNode","process","release","isBrowser","isNativeScript","isMobileBrowser","isMobile","isAppleMobileBrowser","isAppleMobile","global","fromB64ToArray","Uint8Array","Buffer","binaryString","atob","bytes","charCodeAt","fromUrlB64ToArray","fromUrlB64ToB64","fromHexToArray","parseInt","substr","fromUtf8ToArray","strUtf8","unescape","encodeURIComponent","arr","fromByteStringToArray","fromBufferToB64","buffer","toString","binary","byteLength","String","fromCharCode","btoa","fromBufferToUrlB64","fromB64toUrlB64","b64Str","replace","fromBufferToUtf8","encodedString","decodeURIComponent","escape","fromBufferToByteString","fromBufferToHex","x","join","urlB64Str","output","fromUrlB64ToUtf8","fromB64ToUtf8","fromUtf8ToB64","utfStr","fromUtf8ToUrlB64","newGuid","Math","random","isGuid","RegExp","test","getHostname","uriString","url","getUrl","hostname","getHost","host","getDomain","trim","startsWith","httpUrl","indexOf","tldEndingRegex","getUrlObject","tldjs","isValid","validIpAddress","urlDomain","domain","getQueryParams","search","split","forEach","pair","parts","getSortFunction","prop","a","b","collator","compare","localeCompare","isNullOrWhitespace","nameOf","assign","target","source","iterateEnum","obj","keys","filter","k","Number","isNaN","ipString","win","mobile","navigator","userAgent","vendor","opera","match","URL","parse","hasProtocol","anchor","href","regexpEmojiPresentation","PasswordGenerationService","organizationId","ConsoleLogService","newLineRegex","passwordFieldNames","usernameFieldNames","notesFieldNames","uriFieldNames","parseCsvOptions","encoding","skipEmptyLines","parseXml","doc","DOMParser","parseFromString","parseCsv","header","options","parseOptions","splitNewLine","papa","errors","row","warning","message","parseSingleRowCsv","rowData","parsedRow","makeUriArray","uri","loginUri","LoginUriView","fixUri","u","substring","nameFromUrl","getValueOrDefault","defaultValue","getCardBrand","cardNum","re","setCardExpiration","cipher","expiration","month","year","card","expMonth","expYear","moveFoldersToCollections","folderRelationships","collectionRelationships","collections","folders","f","collection","CollectionView","querySelectorDirectChild","parentEl","query","els","querySelectorAllDirectChild","parentNode","initLoginCipher","CipherView","favorite","notes","fields","login","LoginView","CipherType","Login","cleanupCipher","processKvp","FieldType","Text","field","FieldView","processFolder","folderName","folderIndex","hasFolder","addFolder","FolderView","ciphers","convertToNoteIfNeeded","username","password","uris","SecureNote","secureNote","SecureNoteView","SecureNoteType","Generic","BaseImporter","success","ImportResult","StateService","onClick","$event","preventDefault","StopClickDirective","HostListener","StorageService","EnvironmentService","CollectionService","SyncService","condition","disableComplete","InputVerbatimDirective","appInputVerbatim","StopPropDirective","AuthService","FolderService","indexedEntityId","SearchService","autofocus","focus","AutofocusDirective","appAutofocus","user","email","UserNamePipe","PolicyType","environmentUrlsKey","ConstantsService","disableGaKey","disableAddLoginNotificationKey","disableContextMenuItemKey","disableFaviconKey","disableBadgeCounterKey","disableAutoTotpCopyKey","enableAutoFillOnPageLoadKey","autoFillOnPageLoadDefaultKey","vaultTimeoutKey","vaultTimeoutActionKey","lastActiveKey","neverDomainsKey","installedVersionKey","localeKey","themeKey","collapsedGroupingsKey","autoConfirmFingerprints","dontShowCardsCurrentTab","dontShowIdentitiesCurrentTab","defaultUriMatch","pinProtectedKey","protectedPin","clearClipboardKey","eventCollectionKey","ssoCodeVerifierKey","ssoStateKey","biometricUnlockKey","biometricText","biometricAwaitingAcceptance","biometricFingerprintValidated","disableChangedPasswordNotificationKey","EventService","buildDomainModel","dataObj","alreadyEncrypted","notEncList","objProp","EncString","buildDataModel","notEncStringList","encryptedString","decryptObj","viewModel","orgId","promises","self","theProp","Promise","resolve","mapProp","decrypt","val","all","PasswordVerificationRequest","LogService","VaultTimeoutService","encryptedStringOrType","iv","mac","encType","encryptionType","headerPieces","encPieces","EncryptionType","AesCbc128_HmacSha256_B64","AesCbc256_B64","AesCbc256_HmacSha256_B64","Rsa2048_OaepSha256_B64","Rsa2048_OaepSha1_B64","decryptedValue","containerService","bitwardenContainerService","cryptoService","getCryptoService","getOrgKey","decryptToUtf8","AuditService","cardholderName","code","_brand","_number","_subTitle","repeat","number","brand","count","exp","formatYear","CardView","CryptoFunctionService","platformUtilsService","defaultErrorMessage","validationErrors","concat","getAllMessages","showToast","timeout","ValidationService","TokenService","IconMap","environmentService","stateService","iconsUrl","getIconsUrl","image","fallbackImage","imageEnabled","load","setLoginIcon","Card","Identity","hostnameUri","isWebsite","IconComponent","ExportService","BroadcasterService","TwoFactorProviderType","TotpService","items","searchText","prop1","prop2","prop3","SearchPipe","StripeElementStyle","base","color","fontFamily","fontSize","fontSmoothing","invalid","StripeElementClasses","empty","apiService","showMethods","showOptions","method","PaymentMethodType","hideBank","hidePaypal","hideCredit","bank","routing_number","account_number","account_holder_name","account_holder_type","currency","country","paymentMethodType","btInstance","stripe","stripeElements","stripeCardNumberElement","stripeCardExpiryElement","stripeCardCvcElement","stripeScript","src","async","onload","Stripe","isDev","WebConstants","stripeTestKey","stripeLiveKey","elements","setStripeElement","btScript","PayPal","BankAccount","Credit","head","ngOnDestroy","setTimeout","btStylesheet","changeMethod","braintree","dropin","authorization","btProductionKey","container","paymentOptionPriority","paypal","flow","buttonStyle","label","size","shape","createErr","console","createPaymentToken","reject","requestPaymentMethod","payload","nonce","catch","err","postSetupPayment","clientSecret","handleCardSetup","setupIntent","status","payment_method","createToken","token","handleStripeCardPayment","successCallback","paymentIntent","classes","placeholder","mount","PaymentComponent","SendService","display","organization","BasePolicy","enabled","FormControl","setValue","policyResponse","patchValue","buildRequest","policiesEnabledMap","request","PolicyRequest","policy","BasePolicyComponent","folderId","organizationUseTotp","edit","viewPassword","identity","IdentityView","attachments","passwordHistory","collectionIds","revisionDate","deletedDate","reprompt","CipherRepromptType","None","localData","subTitle","hasAttachments","passwordRevisionDate","route","onCountryChanged","EventEmitter","taxInfo","taxId","line1","line2","city","state","postalCode","includeTaxId","pristine","parent","params","getOrganizationTaxInfo","getTaxInfo","emit","getTaxRates","taxRates","localTaxRate","find","rate","getTaxInfoRequest","OrganizationTaxInfoUpdateRequest","TaxInfoUpdateRequest","submitTaxInfo","hasChanged","putOrganizationTaxInfo","putTaxInfo","changeCountry","TaxInfoComponent","Output","policyService","getDefaultDateFilters","Date","end","getFullYear","getMonth","getDate","setDate","start","toDateTimeLocalString","formatDateFilters","filterStart","filterEnd","getTime","toISOString","getEventInfo","ev","EventOptions","appInfo","getAppInfo","deviceType","getEventMessage","humanReadableMessage","appIcon","appName","msg","humanReadableMsg","EventType","User_LoggedIn","User_ChangedPassword","User_Updated2fa","User_Disabled2fa","User_Recovered2fa","User_FailedLogIn","User_FailedLogIn2fa","User_ClientExportedVault","User_UpdatedTempPassword","Cipher_Created","Cipher_Updated","Cipher_Deleted","Cipher_SoftDeleted","Cipher_Restored","Cipher_AttachmentCreated","Cipher_AttachmentDeleted","Cipher_Shared","Cipher_ClientViewed","Cipher_ClientToggledPasswordVisible","Cipher_ClientToggledHiddenFieldVisible","Cipher_ClientToggledCardCodeVisible","Cipher_ClientCopiedHiddenField","Cipher_ClientCopiedPassword","Cipher_ClientCopiedCardCode","Cipher_ClientAutofilled","Cipher_UpdatedCollections","Collection_Created","Collection_Updated","Collection_Deleted","Group_Created","Group_Updated","Group_Deleted","OrganizationUser_Invited","OrganizationUser_Confirmed","OrganizationUser_Updated","OrganizationUser_Removed","OrganizationUser_UpdatedGroups","OrganizationUser_UnlinkedSso","OrganizationUser_ResetPassword_Enroll","OrganizationUser_ResetPassword_Withdraw","OrganizationUser_AdminResetPassword","OrganizationUser_ResetSsoLink","Organization_Updated","Organization_PurgedVault","Organization_VaultAccessed","Policy_Updated","ProviderUser_Invited","ProviderUser_Confirmed","ProviderUser_Updated","ProviderUser_Removed","ProviderOrganization_Created","ProviderOrganization_Added","ProviderOrganization_Removed","ProviderOrganization_VaultAccessed","formatCipherId","getShortId","cipherId","formatCollectionId","collectionId","formatGroupId","groupId","formatOrgUserId","organizationUserId","formatPolicyId","getAll","policies","policyId","formatProviderUserId","providerUserId","formatProviderOrganizationId","providerOrganizationId","DeviceType","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","WindowsDesktop","MacOsDesktop","LinuxDesktop","ChromeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","VivaldiBrowser","EdgeBrowser","IEBrowser","UnknownBrowser","shortId","cipherInfo","makeAnchor","outerHTML","providerId","innerHTML","date","pad","getHours","getMinutes","num","norm","floor","abs","EventInfo","externalId","readOnly","hidePasswords","Collection","middleName","address1","address2","address3","company","phone","ssn","passportNumber","licenseNumber","_firstName","_lastName","firstName","lastName","address","addressPart2","totp","autofillOnPageLoad","hasUris","some","canLaunch","launchUri","CollectionData","userId","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","ph","PasswordHistoryData","CipherData","SendType","accessBusinessPortal","accessEventLogs","accessImportExport","accessReports","manageAllCollections","manageAssignedCollections","manageCiphers","manageGroups","manageSso","managePolicies","manageUsers","manageResetPassword","PermissionsApi","OrganizationUserStatusType","showText","scoreWidth","score","text","PasswordStrengthComponent","toasterService","onAuthed","submit","masterPassword","popAsync","hashPassword","masterPasswordHash","formPromise","getTwoFactorRecover","Duo","OrganizationDuo","getTwoFactorOrganizationDuo","getTwoFactorDuo","Email","getTwoFactorEmail","WebAuthn","getTwoFactorWebAuthn","Authenticator","getTwoFactorAuthenticator","Yubikey","getTwoFactorYubiKey","TwoFactorVerifyComponent","Attachment","Field","Password","encKey","model","reduce","promise","attachment","decAttachment","decField","decPh","toCipherData","toLoginData","toSecureNoteData","toCardData","toIdentityData","toFieldData","toAttachmentData","toPasswordHistoryData","Cipher","PasswordRepromptService","messagingService","tokenService","userService","syncService","selfHosted","providers","isSelfHost","getName","getEmail","getLastSync","fullSync","getAllProviders","lock","send","logOut","NavbarComponent","getApplicationVersion","version","FooterComponent","router","showFree","showCancel","product","ProductType","Free","plan","PlanType","onSuccess","onCanceled","ownedBusiness","premiumAccessAddon","additionalStorage","additionalSeats","productTypes","singleOrgPolicyBlock","freeTrial","getPlans","plans","Enterprise","Teams","changedOwnedBusiness","selectedPlan","isAnnual","validPlans","Custom","canBeUsedByBusiness","legacyYear","disabled","additionalStoragePriceMonthly","additionalStoragePricePerGb","seatPriceMonthly","seatPrice","additionalStorageTotal","hasAdditionalStorageOption","seatTotal","hasAdditionalSeatsOption","subTotal","basePrice","hasPremiumAccessOption","premiumAccessOptionPrice","taxComponent","taxRate","subtotal","taxCharges","changedProduct","selectablePlans","baseSeats","trialPeriodDays","TeamsAnnually","changedCountry","paymentComponent","cancel","userHasBlockingSingleOrgPolicy","doSubmit","createOrganization","makeShareKey","shareKey","encrypt","collectionCt","makeKeyPair","orgKeys","createSelfHosted","createCloudHosted","updateOrganization","refreshIdentityToken","navigate","policyAppliesToUser","SingleOrg","OrganizationUpgradeRequest","businessName","additionalStorageGb","planType","billingAddressCountry","billingAddressPostalCode","getOrganization","hasPublicAndPrivateKeys","orgShareKey","OrganizationKeysRequest","postOrganizationUpgrade","paymentIntentClientSecret","orgKey","OrganizationCreateRequest","collectionName","billingEmail","tokenResult","paymentToken","taxIdNumber","billingAddressLine1","billingAddressLine2","billingAddressCity","billingAddressState","providerRequest","ProviderOrganizationCreateRequest","clientOwnerEmail","getProviderKey","providerKey","organizationCreateRequest","postProviderCreateOrganization","postOrganization","fileEl","getElementById","files","fd","FormData","append","postOrganizationLicense","postOrganizationKeys","OrganizationPlansComponent","ViewChild","identityResponse","errorModel","responseErrorModel","captchaSiteKey","HCaptcha_SiteKey","statusCode","messages","item","prefix","lastSep","lastIndexOf","newField","showValue","lastKnownRevisionDate","LoginApi","LoginUriApi","SecureNoteApi","CardApi","IdentityApi","FieldApi","lastUsedDate","attachments2","fileName","attachmentRequest","AttachmentRequest","CipherRequest","_onCreated","Subject","_onClose","_onClosed","_onShow","_onShown","asObservable","onShow","onShown","show","next","shown","lastResult","created","onClosedPromise","addOrganizationToProvider","encryptedOrgKey","ProviderAddOrganizationRequest","postProviderAddOrganization","detachOrganizastion","deleteProviderOrganization","ProviderService","AttachmentResponse","h","PasswordHistoryResponse","CipherResponse","addPolicies","getPolicies","PolicyListService","activatedRoute","titleService","previousUrl","currentUrl","events","NavigationEnd","titleId","rawTitle","child","firstChild","snapshot","newTitle","setTitle","getPreviousUrl","setPreviousUrl","RouterService","KdfType","macKey","keyB64","encKeyB64","macKeyB64","SymmetricCryptoKey","onUpdated","twoFactorProviderType","authed","auth","authResponse","enable","enableFunction","disable","showDialog","TwoFactorProviderRequest","putTwoFactorOrganizationDisable","putTwoFactorDisable","TwoFactorBaseComponent","modalService","requiresPaid","hasLoaded","setCiphers","selectCipher","AddEditComponent","cipherAddEditModalRef","comp","onSavedCipher","modal","onDeletedCipher","onRestoredCipher","checkAccess","useTotp","canAccessPremium","accessPremium","CipherReportComponent","ViewContainerRef","read","static","CanLaunchWhitelist","_uri","_domain","_hostname","_host","_canLaunch","UriMatchType","RegularExpression","cipherService","folderService","auditService","collectionService","totpService","passwordGenerationService","eventService","showRevisionDate","hasPasswordHistory","viewingPasswordHistory","viewOnly","passwordRevisionDisplayDate","cleanUp","totpUpdateCode","getTimeInterval","totpTick","totpInterval","setInterval","toggleFavorite","launch","copy","typeI18nKey","aType","copyToClipboard","editMode","collect","generatePassword","confirmed","getOptions","premiumRequired","upgradeOrganization","viewHistory","clearInterval","getCode","totpCode","half","totpCodeFormatted","allowOwnershipAssignment","cloneMode","ownershipOptions","allowPersonal","intervalSeconds","epoch","round","mod","totpSec","totpDash","totpLow","ImportService","searchService","passwordRepromptService","showAddNew","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","pagedCiphers","pageSize","cipherType","userHasPremiumAccess","didScroll","pagedCiphersCount","refreshing","selectAll","loadMore","pagedLength","pagedSize","refresh","reload","deleted","isPaging","searching","isSearching","resetPaging","doSearch","indexedCiphers","searchCiphers","deletedFilter","repromptCipher","share","clone","delete","actionPromise","permanent","isDeleted","deleteCipher","restore","restoreWithServer","protectedFields","includes","displayTotpCopyButton","select","selectCount","checkCipher","checked","getSelected","getSelectedIds","hasTotp","deleteWithServer","softDeleteWithServer","showFixOldAttachments","hasOldAttachments","showPasswordPrompt","CiphersComponent","Permissions","ProviderUserType","publicKey","encryptedPrivateKey","KeysRequest","SelectionReadOnlyResponse","organizations","providerOrganizations","emailVerified","masterPasswordHint","premium","culture","twoFactorEnabled","privateKey","securityStamp","forcePasswordReset","ProfileOrganizationResponse","ProfileProviderResponse","ProfileProviderOrganizationResponse","ProfileResponse","PolicyResponse","requiredParameters","failedShortMessage","failedMessage","fired","queryParams","qParams","errorMessage","isAuthenticated","authedHandler","save","getRedirectRoute","unauthedHandler","toast","urlTree","parseUrl","BaseAcceptComponent","AppIdService","SettingsService","userNamePipe","showUser","loaded","orgUsersUserIdMap","orgUsersIdMap","defaultDates","getOrganizationUsers","loadEvents","clearExisting","refreshPromise","morePromise","dates","entity","getEventsProviderUser","entityId","continuationToken","getEventsOrganizationUser","getEventsCipher","actingUserId","eventInfo","userName","userEmail","ip","ipAddress","EntityEventsComponent","OrganizationUserResetPasswordEnrollmentRequest","HashPurpose","PolicyData","getMasterPasswordPolicyOptions","strongPassword","setupSubmitActions","kdf","getKdf","kdfIterations","getKdfIterations","makeKey","getEncKey","makeEncKey","remakeEncKey","performSubmitActions","masterPasswordRetype","strengthResult","passwordStrength","getPasswordStrengthUserInput","evaluateMasterPassword","updatePasswordStrength","masterPasswordStrengthTimeout","clearTimeout","masterPasswordScore","userInput","atPosition","ChangePasswordComponent","TwoFactorProviders","description","priority","sort","appIdService","vaultTimeoutService","setCryptoKeys","selectedTwoFactorProviderType","logIn","captchaToken","makePreloginKey","hashedPassword","LocalAuthorization","localHashedPassword","logInHelper","logInSso","codeVerifier","redirectUrl","logInApiKey","clientId","logInTwoFactor","twoFactorProvider","twoFactorToken","remember","localMasterPasswordHash","ssoRedirectUrl","logInComplete","logInSsoComplete","logInApiKeyComplete","callback","getSupportedTwoFactorProviders","twoFactorProvidersData","supportsDuo","supportsWebAuthn","getDefaultTwoFactorProvider","webAuthnSupported","providerType","providerPriority","provider","postPrelogin","PreloginRequest","preloginResponse","authingWithApiKey","authingWithSso","authingWithPassword","getTwoFactorToken","storedTwoFactorToken","getAppId","appId","deviceRequest","DeviceRequest","emailPassword","codeCodeVerifier","clientIdClientSecret","TokenRequest","Remember","postIdentityToken","clearState","AuthResult","siteKey","twoFactor","twoFactorProviders2","twoFactorResponse","twoFactorProviders","tokenResponse","resetMasterPassword","setTwoFactorToken","setTokens","accessToken","refreshToken","setInformation","getUserId","setKey","setKeyHash","setEncKey","keyPair","postAccountKeys","setEncPrivateKey","biometricLocked","SelectionReadOnlyRequest","OrganizationUserType","LoginUri","view","toLoginUriData","LoginUriData","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","writeValue","setProperty","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","TrueFalseValueDirective","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","storageService","onSearchTextChanged","searchPlaceholder","searchTextChanged","GroupingsComponent","selectType","usePolicies","useGroups","useDirectory","useEvents","use2fa","useApi","useBusinessPortal","useSso","useResetPassword","selfHost","usersGetPremium","seats","maxCollections","maxStorageGb","ssoBound","identifier","permissions","resetPasswordEnrolled","providerName","isProviderUser","Owner","Confirmed","Manager","Admin","isAdmin","isManager","canManagePolicies","Organization","sizeName","SendFileView","hidden","SendTextView","vault","getAllOrganizations","orgs","ResetPassword","allowEnrollmentChanges","org","autoEnrollEnabled","showEnrolledStatus","unlinkSso","deleteSsoUser","leave","postLeaveOrganization","toggleResetPasswordEnrollment","keyString","toastStringRef","getOrganizationKeys","rsaEncrypt","encryptedKey","resetPasswordKey","putOrganizationUserResetPasswordEnrollment","OrganizationsComponent","canActivate","routerState","isLocked","promptBiometric","AuthGuardService","CollectionResponse","CollectionDetailsResponse","groups","g","CollectionGroupDetailsResponse","globalEquivalentDomains","equivalentDomains","GlobalDomainResponse","DomainsResponse","FolderResponse","accessId","maxAccessCount","accessCount","expirationDate","deletionDate","hideEmail","SendTextApi","file","SendFileApi","SendResponse","ProviderUserStatusType","ids","ProviderUserBulkRequest","BulkStatusComponent","publicKeys","fingerprints","statuses","done","excludedUsers","users","isAccepted","filteredUsers","getPublicKeys","entry","getFingerprint","fingerprint","getCryptoKey","userIdsWithKeys","postConfirmRequest","Accepted","OrganizationUserBulkRequest","postOrganizationUsersPublicKey","OrganizationUserBulkConfirmRequest","postOrganizationUserBulkConfirm","BulkConfirmComponent","deleteUsers","deleteManyOrganizationUsers","BulkRemoveComponent","FrontendLayoutComponent","ProvidersComponent","NotificationsService","Policy","onEditedUsers","organizationUserType","organizationUserStatusType","showSelected","selectedCount","allUsers","loadUsers","getGroupUsers","getCollectionUsers","accessAll","check","selectedChanged","filterSelected","selections","putGroupUsers","putCollectionUsers","EntityUsersComponent","entityName","postKey","apiKey","keyType","ApiKeyComponent","postPurgeCiphers","PurgeVaultComponent","firstLoaded","showAdjustPayment","showAddCredit","transactionType","TransactionType","getOrganizationBilling","billing","getUserBilling","verifyBank","VerifyBankRequest","amount1","verifyAmount1","amount2","verifyAmount2","verifyBankPromise","postOrganizationVerifyBank","addCredit","paymentSourceInApp","closeAddCredit","changePayment","closePayment","balance","paymentSource","AppleInApp","GoogleInApp","invoices","transactions","UserBillingComponent","onAdded","ppButtonFormAction","buttonActionProduction","ppButtonBusinessId","businessIdProduction","ppLoading","buttonActionSandbox","businessIdSandbox","creditAmount","ppButtonCustomField","subject","returnUrl","location","ppButtonFormRef","BitPay","req","BitPayInvoiceRequest","credit","amount","creditAmountNumber","postBitPayInvoice","bitPayUrl","formatAmount","floatAmount","parseFloat","toFixed","AddCreditComponent","ElementRef","onAdjusted","PaymentRequest","taxInfoComponent","postAccountPayment","postOrganizationPayment","AdjustPaymentComponent","currentType","updatePromise","postAccountLicense","postOrganizationLicenseUpdate","UpdateLicenseComponent","storageGbPrice","interval","storageAdjustment","StorageRequest","storageGbAdjustment","action","postAccountStorage","postOrganizationStorage","relativeTo","AdjustStorageComponent","processResponse","UpdateTwoFactorDuoRequest","integrationKey","ikey","secretKey","skey","putTwoFactorOrganizationDuo","putTwoFactorDuo","TwoFactorDuoComponent","showPolicyWarning","filterProvider","getTwoFactorProviders","evaluatePolicies","manage","openModal","authenticatorModalRef","TwoFactorAuthenticatorComponent","updateStatus","yubikeyModalRef","TwoFactorYubiKeyComponent","duoModalRef","emailModalRef","TwoFactorEmailComponent","webAuthnModalRef","TwoFactorWebAuthnComponent","recoveryCode","recoveryModalRef","TwoFactorRecoveryComponent","ref","childComponent","TwoFactorAuthentication","TwoFactorSetupComponent","exportService","saved","ExportComponent","exposedPasswordMap","getAllCiphers","allCiphers","exposedPasswordCiphers","passwordLeaked","exposedCount","getAllDecrypted","canManageCipher","ExposedPasswordsReportComponent","originalCipher","canManageAllCollections","loadCollections","loadCipher","getCipherAdmin","encryptCipher","saveCipher","putCipherAdmin","CipherCreateRequest","postCipherAdmin","deleteCipherAdmin","putDeleteCipherAdmin","AttachmentView","decryptToBytes","decValue","PasswordHistoryView","importService","format","importBlockedByPolicy","successNavigate","setImportOptions","importOptions","PersonalOwnership","importer","getImporter","fileContents","getFileContents","content","import","getFormatInstructionTitle","results","featuredImportOptions","regularImportOptions","fire","heightAuto","buttonsStyling","iconHtml","input","inputValue","inputAttributes","titleText","showConfirmButton","confirmButtonText","onOpen","popupEl","scrollTo","reader","FileReader","readAsText","evt","pre","textContent","onerror","ImportComponent","services","cipherDocs","load2fa","fetch","Request","json","categoryName","responseJson","serviceName","category","service","InactiveTwoFactorReportComponent","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","ReusedPasswordsReportComponent","unsecuredCiphers","UnsecuredWebsitesReportComponent","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","isUserNameNotEmpty","getCacheKey","hasUserName","cacheKey","scoreKey","WeakPasswordsReportComponent","reupload","reuploadCipherAttachment","AttachmentsComponent","onEventsClicked","accessEvents","getAllFromApiForOrganization","indexCiphers","applyFilter","CollectionsComponent","getCollections","collectionDomains","decryptMany","unassignedCollection","getAllNested","nestedCollections","collapse","grouping","isCollapsed","bulkDelete","promptPassword","selectedIds","ciphersComponent","BulkDeleteComponent","bulkDeleteModalRef","cipherIds","onDeleted","bulkRestore","BulkRestoreComponent","bulkRestoreModalRef","onRestored","bulkShare","selectedCiphers","BulkShareComponent","bulkShareModalRef","onShared","bulkMove","BulkMoveComponent","bulkMoveModalRef","onMoved","notProtected","BulkActionsComponent","SendFile","SendText","CipherWithIdRequest","folder","FolderRequest","FolderData","Folder","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","SelectCopyDirective","passwordArray","colorizedPassword","character","isSpecial","ColorPasswordPipe","webpackEmptyAsyncContext","getProvider","isProviderAdmin","ProviderGuardService","AccessEventLogs","canAccessEventLogs","ManageProvider","ManageUsers","canManageUsers","ProviderTypeGuardService","showManageTab","showSettingsTab","ProvidersLayoutComponent","DisallowedPlanTypes","FamiliesAnnually2019","FamiliesAnnually","providerService","manageOrganizations","showAddExisting","pagedClientsCount","queryParamsSub","unsubscribe","getProviderClients","clients","ProviderAdmin","candidateOrgs","isOwner","allowedOrgsIds","addableOrganizations","isSearchable","pagedClients","addExistingOrganization","AddOrganizationComponent","addModalRef","onAddedOrganization","organizationName","ClientsComponent","CreateOrganizationComponent","orgPlansComponent","btSandboxKey","minLength","requireUpper","requireLower","requireNumbers","requireSpecial","MasterPasswordPolicyOptions","DeviceResponse","IdentityTokenResponse","IdentityTwoFactorResponse","KeysResponse","ListResponse","SyncResponse","domains","excluded","access_token","expiresIn","expires_in","refresh_token","tokenType","token_type","dr","sends","profile","ProviderUserAcceptRequest","postProviderUserAccept","AcceptProviderComponent","exportFileName","providerUsersUserIdMap","providerUsersIdMap","getProviderUsers","requestEvents","startDate","endDate","getEventsProvider","getUserName","EventsComponent","exportEvents","BaseEventsComponent","dirtyDates","appApiPromiseUnfulfilled","parseDates","exportPromise","export","loadAndParseEvents","EventView","getEventExport","getFileName","saveFile","ManageComponent","searchPipe","userType","userStatusType","viewEvents","getUsers","deleteUser","deleteProviderUser","reinviteUser","postProviderUserReinvite","confirmUser","ProviderUserConfirmRequest","postProviderUserConfirm","UserAddEditComponent","addEditModalRef","onSavedUser","onDeletedUser","removeUser","eventsModalRef","bulkRemove","bulkRemoveModalRef","getCheckedUsers","bulkReinvite","Invited","postManyProviderUserReinvite","showBulkStatus","bulkConfirm","bulkConfirmModalRef","successfullMessage","bulkStatusModalRef","PeopleComponent","invite","BasePeopleComponent","groupsModalRef","statusMap","pagedUsers","pagedUsersCount","confirmedCount","acceptedCount","clear","checkUser","reinvite","confirm","mapIndex","updateUser","getUserPublicKey","publicKeyResponse","autoConfirm","UserConfirmComponent","confirmModalRef","onConfirmedUser","info","index","dontAskAgain","postProviderUsersPublicKey","ProviderUserBulkConfirmRequest","postProviderUserBulkConfirm","deleteManyProviderUsers","ServiceUser","showCustom","access","getProviderUser","ProviderUserUpdateRequest","putProviderUser","ProviderUserInviteRequest","emails","postProviderUserInvite","deletePromise","SettingsComponent","SetupProviderComponent","replaceUrl","ProviderSetupRequest","postProviderSetup","SetupComponent","ProviderUpdateRequest","putProvider","AccountComponent","registerLocaleData","OssModule","DatePipe","CommonModule","FormsModule","InfiniteScrollModule","DragDropModule","ToasterModule","forChild","ReactiveFormsModule","RouterModule","AcceptEmergencyComponent","AccessComponent","AcceptOrganizationComponent","SetPasswordComponent","AdjustSeatsComponent","AppComponent","AvatarComponent","BlurClickDirective","BoxRowDirective","BreachReportComponent","ChangeEmailComponent","ChangeKdfComponent","ChangePlanComponent","DeauthorizeSessionsComponent","DeleteAccountComponent","DeleteOrganizationComponent","DomainRulesComponent","DownloadLicenseComponent","EmergencyAccessAddEditComponent","EmergencyAccessAttachmentsComponent","EmergencyAccessComponent","EmergencyAccessConfirmComponent","EmergencyAccessTakeoverComponent","EmergencyAccessViewComponent","EmergencyAddEditComponent","FallbackSrcDirective","FolderAddEditComponent","HintComponent","LinkSsoComponent","LockComponent","LoginComponent","OptionsComponent","OrganizationBillingComponent","OrganizationSubscriptionComponent","OrganizationLayoutComponent","PasswordGeneratorComponent","PasswordGeneratorHistoryComponent","PasswordRepromptComponent","PremiumComponent","ProfileComponent","RecoverDeleteComponent","RecoverTwoFactorComponent","RegisterComponent","SearchCiphersPipe","SendComponent","ShareComponent","SsoComponent","ToolsComponent","TwoFactorComponent","TwoFactorOptionsComponent","UpdateKeyComponent","UpdateTempPasswordComponent","UserLayoutComponent","UserSubscriptionComponent","VaultComponent","VerifyEmailComponent","VerifyEmailTokenComponent","VerifyRecoverDeleteComponent","TwoFactorAuthenticationPolicyComponent","MasterPasswordPolicyComponent","SingleOrgPolicyComponent","PasswordGeneratorPolicyComponent","RequireSsoPolicyComponent","PersonalOwnershipPolicyComponent","DisableSendPolicyComponent","SendOptionsPolicyComponent","ResetPasswordPolicyComponent","NgModule","imports","declarations","bootstrap","BroadcasterSubscriptionId","broadcasterService","settingsService","authService","ngZone","sanitizer","notificationsService","routerService","policyListService","toasterConfig","ToasterConfig","showCloseButton","mouseoverTimerStop","animation","limit","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","run","command","updateConnection","expired","crypto","subtle","setFullWidth","jq","TwoFactorAuthenticationPolicy","MasterPasswordPolicy","PasswordGeneratorPolicy","SingleOrgPolicy","RequireSsoPolicy","PersonalOwnershipPolicy","DisableSendPolicy","SendOptionsPolicy","ResetPasswordPolicy","uploadEvents","clearEvents","setLastSync","clearToken","clearKeys","purge","clearIndex","now","idleStateChanged","sanitize","SecurityContext","HTML","bodyOutputType","BodyOutputType","TrustedHtml","trustedHtml","disconnectFromInactivity","reconnectFromActivity","DisableSend","component","MasterPassword","fb","group","passwordScores","PasswordGenerator","defaultType","useUpper","useLower","useNumbers","useSpecial","minNumbers","minSpecial","minNumberWords","capitalize","includeNumber","defaultTypes","RequireSso","singleOrgEnabled","SendOptions","disableHideEmail","requireSsoEnabled","togglePassword","showPassword","compareAndUpdateKeyHash","blur","businessUrl","getEnterpriseUrl","goToBusinessPortal","businessTokenPromise","getEnterprisePortalSignInToken","showToolsTab","canManageAssignedCollections","canManageGroups","canAccessImportExport","canAccessReports","canAccessBusinessPortal","EmergencyAccessAcceptRequest","postEmergencyAccessAccept","OrganizationUserAcceptRequest","performResetPasswordAutoEnroll","postOrganizationUserAccept","resetRequest","orgName","policyList","getPoliciesByToken","mapPoliciesFromToken","getResetPasswordPolicyOptions","onSuccessfulSubmit","successRoute","cryptoFunctionService","showResetPasswordAutoEnrollWarning","onSuccessfulLoginNavigate","goAfterLogIn","loginRedirect","setupCaptcha","webVaultUrl","getWebVaultUrl","captcha","CaptchaIFrame","showCaptcha","handleCaptchaRequired","CaptchaProtectedComponent","DeleteRecoverRequest","postAccountRecoverDelete","TwoFactorRecoveryRequest","postTwoFactorRecover","showCreateOrgMessage","layout","referenceData","ReferenceEventRequest","reference","cookie","pop","policiesData","IdentifierStorageKey","redirectUri","origin","storedIdentifier","loggingIn","twoFactorRoute","changePasswordRoute","checkState","getOrgIdentiferFromState","codeChallenge","returnUri","includeUserIdentifier","initiateSsoFormPromise","preValidate","buildAuthorizeUrl","authorizeUrl","sameWindow","preValidateSso","passwordOptions","uppercase","lowercase","numbers","special","hash","codeVerifierHash","getIdentityUrl","getSsoUserIdentifier","userIdentifier","orgIdFromState","onSuccessfulLoginTwoFactorNavigate","sso","onSuccessfulLoginChangePasswordNavigate","disableFavicon","onSuccessfulLogin","stateSplit","checkStateSplit","recover","anotherMethod","twoFactorOptionsModal","onProviderSelected","selectedProviderType","onRecoverSelected","TwoFactorEmailRequest","OrganizationUserResetPasswordRequest","postAccountVerifyEmailToken","VerifyEmailRequest","VerifyDeleteRecoverRequest","postAccountRecoverDeleteToken","onSavedCollection","onDeletedCollection","accessGroups","getGroups","groupsResponse","getCollectionDetails","CollectionRequest","putCollection","postCollection","deleteCollection","CollectionAddEditComponent","pagedCollectionsCount","getUserCollections","pagedCollections","removeCollection","usersModalRef","getEventsOrganization","onSavedGroup","onDeletedGroup","getGroupDetails","GroupRequest","putGroup","postGroup","deleteGroup","GroupAddEditComponent","pagedGroupsCount","pagedGroups","removeGroup","GroupsComponent","accessPolicies","canResetPassword","orgUseResetPassword","orgHasKeys","orgResetPasswordPolicyEnabled","callingUserType","canManageUsersPassword","getPolicyForOrganization","resetPasswordPolicy","deleteOrganizationUser","postOrganizationUserReinvite","OrganizationUserConfirmRequest","postOrganizationUserConfirm","allowResetPassword","orgUser","callingUserHasPermission","UserGroupsComponent","postManyOrganizationUserReinvite","resetPassword","ResetPasswordComponent","resetPasswordModalRef","onPasswordReset","newPassword","getOrganizationUserResetPasswordDetails","kdfType","orgSymKey","decPrivateKey","rsaDecrypt","userEncKey","newKey","newPasswordHash","newEncKey","newMasterPasswordHash","putOrganizationUserResetPassword","newPasswordStrengthTimeout","User","getOrganizationUser","setRequestPermissions","clearPermissions","handleDependentPermissions","OrganizationUserUpdateRequest","putOrganizationUser","OrganizationUserInviteRequest","postOrganizationUserInvite","getOrganizationUserGroups","userGroups","ug","OrganizationUserUpdateGroupsRequest","groupIds","putOrganizationUserGroups","policyIdFromEvents","orgPolicies","orgPolicy","enterpriseUrl","op","PolicyEditComponent","editModalRef","onSavedPolicy","goToEnterprisePortal","enterpriseTokenPromise","PoliciesComponent","cdr","policyType","ngAfterViewInit","factory","policyComponent","policyFormRef","createComponent","detectChanges","getPolicy","Enabled","putPolicy","canUseApi","OrganizationUpdateRequest","putOrganization","taxFormPromise","deleteOrganization","deleteModalRef","purgeVault","purgeModalRef","viewApiKey","apiKeyModalRef","postOrganizationApiKey","scope","grantType","apiKeyTitle","apiKeyWarning","apiKeyDescription","rotateApiKey","rotateApiKeyModalRef","isRotation","postOrganizationRotateApiKey","seatAdjustment","SeatRequest","postOrganizationSeat","onChanged","defaultUpgradePlan","defaultUpgradeProduct","Families","onDownloaded","installationId","getOrganizationLicense","license","licenseString","JSON","stringify","adjustSeatsAdd","showAdjustSeats","adjustStorageAdd","showAdjustStorage","showUpdateLicense","showDownloadLicense","showChangePlan","userOrg","getOrganizationSubscription","sub","reinstate","reinstatePromise","postOrganizationReinstate","cancelPromise","postOrganizationCancel","changePlan","subscription","closeChangePlan","changed","downloadLicense","closeDownloadLicense","updateLicense","closeUpdateLicense","updated","adjustSeats","closeSeats","adjustStorage","closeStorage","cancelled","cancelAtEndDate","upcomingInvoice","storageGb","storagePercentage","access2fa","duoComp","getTwoFactorOrganizationProviders","qrScript","UpdateTwoFactorAuthenticatorRequest","putTwoFactorAuthenticator","QRious","element","sendEmail","emailPromise","postTwoFactorEmailSetup","sentEmail","UpdateTwoFactorEmailRequest","putTwoFactorEmail","print","w","write","onafterprint","formatString","keyIdAvailable","keysConfiguredCount","webAuthnResponse","UpdateTwoFactorWebAuthnRequest","deviceResponse","putTwoFactorWebAuthn","removePromise","UpdateTwoFactorWebAuthnDeleteRequest","deleteTwoFactorWebAuthn","readKey","challengePromise","getTwoFactorWebAuthnChallenge","challenge","readDevice","webAuthnChallenge","log","resetWebAuthn","credentials","webAuthnListening","webAuthnError","listening","configured","migrated","nfc","UpdateTwoFactorYubioOtpRequest","key1","key2","key3","key4","key5","putTwoFactorYubiKey","disablePromise","existingKey","padRight","max","getExportData","getOrganizationExport","collectEvent","manageableCiphers","onError","appFallbackSrc","saveCipherAttachment","saveAttachmentWithServer","cipherDomain","deleteCipherAttachment","attachmentId","deleteCipherAttachmentAdmin","onUploadedAttachment","onDeletedAttachment","onReuploadedAttachment","deletePromises","reuploadPromises","emergencyAccessId","hasUpdatedKey","download","downloading","canAccessAttachments","getAttachmentData","attachmentDownloadResponse","cache","arrayBuffer","buf","decryptFromBytes","decBuf","hasEncKey","admin","saveAttachmentRawWithServer","foundAttachment","a2","deleteAttachmentWithServer","Window","allowSelectNone","loadCipherCollections","saveCollections","CipherCollectionsRequest","putCipherCollectionsAdmin","changeDetectorRef","trashCleanupWarning","groupingsComponent","successfully","selectedAll","selectedTrash","filterDeleted","selectedType","filterCipherType","selectedCollectionId","filterCollection","clearGroupingFilters","clearFilters","go","filterSearchText","editCipherAttachments","madeAttachmentChanges","attachmentsModalRef","editCipherCollections","collectionsModalRef","onSavedCollections","addCipher","editCipher","cloneCipher","deleteCiphers","deleteCiphersAdmin","deleteManyWithServer","softDeleteManyWithServer","deleteRequest","CipherBulkDeleteRequest","deleteManyCiphersAdmin","putDeleteManyCiphersAdmin","moveManyWithServer","restoreManyWithServer","nonShareableCount","shareableCiphers","writeableCollections","allCollections","filterCollections","checkedCollectionIds","shareManyWithServer","sendType","passwordRequired","unavailable","maskedText","creatorIdentifier","sendId","decKey","getSendFileDownloadData","accessRequest","downloadData","toggleText","keyArray","SendAccessRequest","pbkdf2","passwordHash","sendResponse","postSendAccess","sendAccess","SendAccess","makeSendKey","datePipe","sendService","copyLinkToClipboard","link","SendView","EffluxDatesComponent","ControlContainer","NgForm","viewProviders","addSend","disableSend","editSend","sendAddEditModalRef","onSavedSend","onDeletedSend","deauthorizeSessions","deauthModalRef","deleteAccount","viewUserApiKey","viewUserApiKeyModalRef","postUserApiKey","rotateUserApiKey","rotateUserApiKeyModalRef","postUserRotateApiKey","postSecurityStamp","getProfile","UpdateProfileRequest","putProfile","tokenSent","newEmail","EmailTokenRequest","postEmailToken","EmailRequest","postEmail","reset","rotateEncKey","rotateEncKeyClicked","currentMasterPassword","PasswordRequest","postPassword","updateKey","getPrivateKey","encPrivateKey","UpdateKeyRequest","FolderWithIdRequest","cryptoKey","SendWithIdRequest","postAccountKey","updateEmergencyAccesses","updateAllResetPasswordKeys","getEmergencyAccessTrusted","emergencyAccess","allowedStatuses","EmergencyAccessStatusType","RecoveryInitiated","RecoveryApproved","filteredAccesses","details","granteeId","updateRequest","EmergencyAccessUpdateRequest","waitTimeDays","keyEncrypted","putEmergencyAccess","fileLength","File","SendRequest","PBKDF2_SHA256","kdfOptions","KdfRequest","postAccountKdf","EnterpriseAnnually","custom","getSettingsDomains","toggleExcluded","globalDomain","customize","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","putSettingsDomains","indexTrackBy","onSaved","EmergencyAccessType","View","emergencyAccessType","waitTimes","getEmergencyAccess","waitTime","EmergencyAccessInviteRequest","postEmergencyAccessInvite","onConfirmed","onDone","getEmergencyGrantorPolicies","postEmergencyAccessTakeover","takeoverResponse","oldKeyBuffer","oldEncKey","EmergencyAccessPasswordRequest","postEmergencyAccessPassword","postEmergencyAccessView","viewAttachments","decCiphers","cipherResponse","cipherData","getLocaleSortingFunction","EncryptedObject","EnvironmentUrls","GeneratedPasswordHistory","emergencyAccessStatusType","isOrganizationOwner","trustedContacts","getEmergencyAccessGranted","grantedContacts","contact","postEmergencyAccessReinvite","doConfirmation","deleteEmergencyAccess","EmergencyAccessGranteeDetailsResponse","removeGrantee","removeGrantor","requestAccess","postEmergencyAccessInitiate","approve","postEmergencyAccessApprove","postEmergencyAccessReject","takeover","takeoverModalRef","EmergencyAccessConfirmRequest","postEmergencyAccessConfirm","creationDate","grantorId","EmergencyAccessGrantorDetailsResponse","EmergencyAccessTakeoverResponse","EmergencyAccessViewResponse","ngAfterContentInit","vaultTimeout","vaultTimeoutAction","vaultTimeouts","localeOptions","supportedTranslationLocales","locale","localeNames","disableIcons","enableGravatars","enableFullWidth","startingLocale","setVaultTimeoutOptions","vaultTimeoutActionChanged","newValue","premiumPrice","getPremium","getEmailVerified","finalizePremium","postPremium","paymentResponse","makeRequest","getKey","getUserSubscription","usingInAppPurchase","postReinstatePremium","postCancelPremium","postAccountVerifyEmail","breachedAccounts","checkedUsername","history","historyModalRef","lengthChanged","minNumberChanged","minSpecialChanged","regenerate","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","showProviders","getForcePasswordReset","organizationsComponent","selectedFavorites","filterFavorites","selectedFolder","selectedFolderId","filterFolder","shareCipher","shareModalRef","onSharedCipher","folderAddEditModalRef","onSavedFolder","loadFolders","editFolder","onDeletedFolder","updateKeyModalRef","OrganizationGuardService","AccessBusinessPortal","AccessImportExport","AccessReports","ManageAllCollections","ManageAssignedCollections","ManageGroups","ManageOrganization","ManagePolicies","ManageUsersPassword","OrganizationTypeGuardService","homepage","LockGuardService","UnauthGuardService","logoutCallback","customUserAgent","isWebClient","isDesktopClient","device","getDevice","headers","Headers","alterIdentityTokenHeaders","qsStringify","toIdentityToken","identityClientId","getCredentials","isJsonResponse","TwoFactorProviders2","clearTwoFactorToken","IdentityCaptchaResponse","doAuthRefresh","BillingResponse","SubscriptionResponse","TaxInfoResponse","PreloginResponse","setPassword","getAccountRevisionDate","postPasswordHint","postRegister","PaymentResponse","postIapCheck","postAccountVerifyPassword","ApiKeyResponse","putUpdateTempPassword","getFolder","postFolder","putFolder","deleteFolder","getSend","apiUrl","addSendIdHeader","SendAccessResponse","SendFileDownloadDataResponse","getSends","postSend","postFileTypeSend","SendFileUploadDataResponse","renewSendFileUploadUrl","fileId","postSendFile","postSendFileLegacy","putSend","putSendRemovePassword","deleteSend","getCipher","getCiphersOrganization","postCipher","postCipherCreate","putCipher","deleteManyCiphers","putMoveCiphers","putShareCipher","putShareCiphers","putCipherCollections","path","postImportCiphers","postImportOrganizationCiphers","putDeleteCipher","putDeleteManyCiphers","putRestoreCipher","putRestoreCipherAdmin","putRestoreManyCiphers","postCipherAttachment","AttachmentUploadDataResponse","postCipherAttachmentLegacy","postCipherAttachmentAdminLegacy","postShareCipherAttachment","renewAttachmentUploadUrl","postAttachmentFile","deleteCollectionUser","GroupDetailsResponse","GroupResponse","deleteGroupUser","OrganizationUserDetailsResponse","OrganizationUserUserDetailsResponse","OrganizationUserResetPasswordDetailsReponse","getOrganizationAutoEnrollStatus","OrganizationAutoEnrollStatusResponse","OrganizationUserBulkResponse","OrganizationUserBulkPublicKeyResponse","PlanResponse","postImportDirectory","postPublicImportDirectory","TaxRateResponse","getSync","TwoFactorProviderResponse","TwoFactorAuthenticatorResponse","TwoFactorEmailResponse","TwoFactorDuoResponse","TwoFactorYubiKeyResponse","TwoFactorWebAuthnResponse","ChallengeResponse","TwoFactorRecoverResponse","rawId","extensions","getClientExtensionResults","AttestationObject","attestationObject","clientDataJson","clientDataJSON","postTwoFactorEmail","OrganizationResponse","OrganizationSubscriptionResponse","OrganizationKeysResponse","ProviderResponse","ProviderUserUserDetailsResponse","ProviderUserResponse","ProviderUserBulkResponse","ProviderUserBulkPublicKeyResponse","ProviderOrganizationOrganizationDetailsResponse","ProviderOrganizationResponse","getEvents","addEventParameters","EventResponse","postEventsCollect","getActiveBearerToken","authHeader","getEventsUrl","UserKeyResponse","getHibpBreach","BreachAccountResponse","getToken","tokenNeedsRefresh","nativeFetch","handleError","getRefreshToken","doRefreshToken","getClientId","getClientSecret","doApiTokenRefresh","apiKeyRefresh","decodedToken","decodeToken","grant_type","client_id","hasResponse","alterHeaders","getApiUrl","requestInit","tokenError","isTextResponse","Message","hasBaseUrl","typeHeader","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","nameLocalizationKey","descriptionLocalizationKey","baseStorageGb","maxUsers","maxAdditionalSeats","maxAdditionalStorage","hasSelfHost","hasPolicies","hasGroups","hasDirectory","hasEvents","has2fa","hasApi","hasSso","hasResetPassword","upgradeSortOrder","displaySortOrder","stripePlanId","stripeSeatPlanId","stripeStoragePlanId","stripePremiumAccessPlanId","storageName","BillingSubscriptionResponse","BillingSubscriptionUpcomingInvoiceResponse","trialEndDate","periodStartDate","periodEndDate","cancelledDate","BillingSubscriptionItemResponse","quantity","KeyResponse","attestation","authenticatorSelection","excludeCredentials","pubKeyCredParams","rp","makeAndGetAppId","getAnonymousAppId","existingId","guid","hashBytes","hashStart","hashEnding","leakedHashes","v","throttle","Keys","DomainMatchBlacklist","Set","fileUploadService","sortedCiphersCache","SortedCiphersCache","sortCiphersByLastUsed","_decryptedCipherCache","clearCache","decryptedCipherCache","existingCipher","hasFields","existingHiddenFields","Hidden","ef","matchedField","encryptObjProperty","encryptCipherData","encryptFields","encryptPasswordHistories","encryptAttachments","attachmentsModel","encAttachments","fieldsModel","encFields","encryptField","encField","fieldModel","Boolean","phModels","encPhs","encryptPasswordHistory","encPh","phModel","hasKey","getAllDecryptedForGrouping","groupingId","getAllDecryptedForUrl","includeOtherTypes","defaultMatch","eqDomainsPromise","getEquivalentDomains","eqDomains","matches","eqDomain","matchingDomains","Domain","domainUrlHost","Host","urlHost","Exact","StartsWith","Never","getLastUsedForUrl","getCipherForUrl","getLastLaunchedForUrl","getNextCipherForUrl","updateLastUsedIndexForUrl","updateLastUsedIndex","updateLastUsedDate","ciphersLocalData","cached","updateLastLaunchedDate","lastLaunched","saveNeverDomain","saveWithServer","upsert","shareWithServer","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","encCiphers","CipherBulkShareRequest","unencryptedFile","readAsArrayBuffer","cData","filename","encFileName","dataEncKey","encryptToBytes","encData","fileSize","adminRequest","uploadDataResponse","cipherMiniResponse","uploadCipherAttachment","legacyServerAttachmentFileUpload","blob","Blob","filepath","contentType","saveCollectionsWithServer","CipherBulkMoveRequest","deleteAttachment","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","clearDeletedDate","CipherBulkRestoreRequest","restores","attachmentView","attachmentResponse","theObj","modelProp","lastUsed","isCached","addCiphers","getLastLaunched","getLastUsed","getNext","sequentialize","propertyKey","descriptor","originalMethod","caches","getCache","argsCacheKey","args","onFinally","decryptedCollectionCache","decCollections","nodes","collectionCopy","ServiceUtils","nestedTraverse","getNested","getTreeNodeObject","nodeTree","partIndex","delimiter","partName","node","TreeNode","children","newPartName","attachToWindow","attachToGlobal","ContainerService","encOrgKeys","encProviderKeys","keyHash","secureStorageService","platformUtilService","storeKey","setOrgKeys","providerOrgs","providerOrg","setProviderKeys","providerKeys","keySuffix","getKeyFromStorage","symmetricKey","retrieveKeyFromStorage","validateKey","getKeyHash","storedKeyHash","localKeyHash","ServerAuthorization","serverKeyHash","encKeyCipher","decEncKey","stretchKey","getPublicKey","rsaExtractPublicKey","keyFingerprint","hkdfExpand","userFingerprint","hashPhrase","getOrgKeys","getProviderKeys","hasKeyInMemory","hasKeyStored","clearKey","clearSecretStorage","legacyEtmKey","clearStoredKey","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","clearOrgKeys","clearProviderKeys","clearPinProtectedKey","toggleKey","salt","makeKeyFromPin","pin","protectedKeyCs","makePinKey","pinKey","randomBytes","rsaGenerateKeyPair","publicB64","privateEnc","keyMaterial","hkdf","sendKey","hashPurpose","iterations","getKeyForEncryption","theKey","buildEncKey","plainValue","plainBuf","aesEncrypt","encObj","encValue","macLen","encBytes","EncArrayBuffer","privateKeyValue","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","encString","aesDecryptToBytes","decipher","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","ceil","log2","bytesNeeded","mask","pow","byteArray","shouldStoreKey","biometricUnlock","supportsSecureStorage","macData","hmac","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","hmacFast","computedMac","compareFast","aesDecryptFast","aesDecrypt","minimumEntropy","entropyPerWord","EEFLongWordList","numWords","hashArr","entropyAvailable","phrase","hashNumber","bigInt","fromArray","remainder","divide","encKeyEnc","urlsSubject","urls","baseUrl","getNotificationsUrl","notificationsUrl","getSendUrl","identityUrl","eventsUrl","setUrlsFromStorage","urlsObj","api","icons","notifications","webVault","enterprise","envUrls","setUrls","saveSettings","formatUrl","getUrls","decryptedFolderCache","decFolders","noneFolder","folderCopy","cId","updates","systemLanguage","localesDirectory","getLocalesJson","defaultMessages","localeMessages","translationLocale","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","formattedLocale","locales","placeholders","placeProp","replaceToken","replaceContent","DefaultOptions","ambiguous","minNumber","minUppercase","minLowercase","wordSeparator","generatePassphrase","sanitizePasswordLength","positions","shuffleArray","allCharSet","lowercaseCharSet","uppercaseCharSet","numberCharSet","specialCharSet","positionChars","randomCharIndex","listLength","wordList","wordIndex","appendRandomNumberToRandomWord","optionsCache","enforcePasswordGeneratorPoliciesOnOptions","enforcedOptions","getPasswordGeneratorPolicyOptions","useUppercase","useLowercase","numberCount","specialCount","PasswordGeneratorPolicyOptions","currentPolicy","saveOptions","getHistory","encrypted","decryptHistory","addHistory","currentHistory","matchesPrevious","unshift","encryptHistory","newHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","normalizeOptions","decrypted","array","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","settingsCache","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","settings","syncInProgress","lastSync","toJSON","forceSync","allowThrowOnError","syncStarted","syncCompleted","needsSync","needsSyncing","syncProfile","syncFolders","syncCollections","syncCiphers","syncSends","syncSettings","syncPolicies","syncUpsertFolder","notification","isEdit","localFolder","remoteFolder","syncDeleteFolder","syncUpsertCipher","shouldUpdate","localCipher","checkCollections","remoteCipher","syncDeleteCipher","syncUpsertSend","localSend","remoteSend","SendData","syncDeleteSend","getSecurityStamp","stamp","setSecurityStamp","setEmailVerified","setForcePasswordReset","OrganizationData","ProviderData","replaceOrganizations","replaceProviders","SendTextData","SendFileData","setToken","setRefreshToken","setClientId","setClientSecret","storeTokenValue","toggleTokens","decoded","getTokenExpirationDate","setUTCSeconds","tokenSecondsRemaining","offsetSeconds","msRemaining","valueOf","minutes","email_verified","getIssuer","iss","skipTokenStorage","B32Chars","SteamChars","period","digits","keyB32","isOtpAuth","isSteamAuth","digitParams","periodParam","algParam","timeHex","leftPad","decToHex","timeBytes","keyBytes","b32ToBytes","sign","offset","otp","fullCode","trunc","isAutoCopyEnabled","b32ToHex","cleanedInput","bits","hex","byteIndex","chunk","signature","clearOrganizations","clearProviders","getOrganizationByIdentifier","Provider","lockedCallback","loggedOutCallback","everBeenUnlocked","checkOnInterval","startCheck","checkVaultTimeout","isViewOpen","lockTimeout","lastActive","vaultTimeoutSeconds","allowSoftLock","isPinLockSet","isBiometricLockSet","timersMap","debug","LogLevelType","Debug","Info","Warning","level","warn","time","hrtime","timeEnd","elapsed","build","CipherWithIds","CollectionWithId","FolderWithId","IgnoredProperties","loginPropertyParsers","setLoginUsername","setLoginPassword","setLoginUris","creditCardPropertyParsers","setCreditCardNumber","setCreditCardVerification","setCreditCardCardholderName","setCreditCardExpiry","identityPropertyParsers","setIdentityFirstName","setIdentityInitial","setIdentityLastName","setIdentityUserName","setIdentityEmail","setIdentityPhone","setIdentityCompany","quoteChar","escapeChar","getProp","setNotes","setCipherType","altUsername","context","CipherImportContext","setKnownLoginValue","setKnownCreditCardValue","setKnownIdentityValue","setUnknownValue","entries","agg","getPropByRegexp","regexp","matchingKeys","getPropIncluding","includesMap","importRecord","func","lowerProperty","readableDate","toUTCString","OnePasswordCsvImporter","NotificationType","enableProdMode","platformBrowser","bootstrapModule","preserveWhitespaces","AppModule","BrowserAnimationsModule","ServicesModule","forRoot","AppRoutingModule","OssRoutingModule","routes","loadChildren","ProvidersModule","ProvidersRoutingModule","cd","loadChildComponent","componentFactory","modalContentRef","template","_parentInjector","_additionalTokens","notFoundValue","flags","pathMatch","redirectTo","subscribers","messageCallback","PasswordHintRequest","pinLock","webVaultHostname","invalidPinAttempts","pinSet","supportsBiometric","biometricLock","vaultUrl","failed","decPin","setKeyAndContinue","passwordValid","unlockBiometric","doContinue","rememberEmail","focusInput","launchSsoBrowser","ssoRedirectUri","ssoCodeVerifier","webUrl","errorCallback","infoCallback","parsedMessage","iframe","height","width","initComponent","createParams","IFrameComponent","iframeId","parseFunction","parseMessage","connectorLink","stop","sendMessage","contentWindow","postMessage","base64Encode","cleanup","removeEventListener","URLSearchParams","validMessage","confirmMasterPassword","hint","showTerms","acceptPolicies","useLowerKdf","isIE","RegisterRequest","orgInvite","confirmField","captchaResponse","syncLoading","resetPasswordAutoEnroll","resetPasswordEnabled","SetPasswordRequest","onSetPasswordSuccess","onSuccessfulChangePassword","orgIdentifier","choose","webAuthnReady","webAuthnNewTab","webAuthn","twoFactorEmail","loginRoute","authing","needsLock","WebAuthnIFrame","cleanupWebAuthn","providerData","authWebAuthn","DuoWebSDK","sig_request","Signature","submit_callback","sig","doToast","getDeviceString","pushToken","codes","client_secret","code_verifier","redirect_uri","deviceIdentifier","deviceName","twoFactorRemember","btnText","allow","UpdateTempPasswordRequest","warningDialog","downloadFile","encryptedFormat","getExport","extension","csv","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","showCardNumber","showCardCode","fieldType","addFieldType","currentDate","typeOptions","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","addFieldTypeOptions","uriMatchOptions","autofillOnPageLoadOptions","myEmail","addEditCipherInfo","organizationChanged","previousCipherId","addUri","removeUri","addField","removeField","trackByFunction","editCollections","restorePromise","restoreCipher","toggleCardNumber","Cipher_ClientToggledCardNumberVisible","toggleCardCode","toggleFieldValue","toggleUriOptions","loginUriMatchChanged","drop","moveItemInArray","previousIndex","currentIndex","checkPassword","checkPasswordPromise","repromptChanged","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","searchPending","searchTimeout","rightClickCipher","addCipherOptions","selectedCollectionIds","showFolders","showCollections","showFavorites","showTrash","onAllClicked","onFavoritesClicked","onTrashClicked","onCipherTypeClicked","onFolderClicked","onAddFolder","onEditFolder","onCollectionClicked","setLoaded","collapsedGroupings","nestedFolders","clearSelections","selectFavorites","selectTrash","selectFolder","selectCollection","idPrefix","SendAccessView","copyLink","alertShown","sendLinkBaseUrl","urlB64Key","isSafari","isFirefox","setDates","loadSend","hasPassword","encryptSend","encSend","copySuccess","typeChanged","toggleOptions","sendData","togglePasswordVisible","BrowserPath","DateField","DatePreset","datesChanged","datesForm","FormGroup","selectedDeletionDatePreset","selectedExpirationDatePreset","defaultDeletionDateTime","defaultExpirationDateTime","fallbackDeletionDate","fallbackDeletionTime","fallbackExpirationDate","fallbackExpirationTime","deletionDatePresets","OneHour","OneDay","TwoDays","ThreeDays","SevenDays","ThirtyDays","expirationDatePresets","Firefox","Safari","Default","formattedDeletionDate","browserPath","miliseconds","setTime","safariTimePresetOptions","DeletionDate","ExpriationDate","setInitialFormValues","emitDates","valueChanges","onDeletionDatePresetSelect","clearExpiration","formattedExpirationDate","initialDeletionDate","toTimeString","initialExpirationDate","noon","midnight","ams","pms","hour","midnightOption","twelveHour","twentyFourHour","noonOption","amOption","pmOption","validTimes","previousValue","filteredSends","hasSearched","onSuccessfulLoad","applyTextSearch","removePassword","removePasswordWithServer","onSuccessfulRemovePassword","onSuccessfulDelete","searchSends","copyOptions","showSelect","onSelected","avoidAmbiguous","passTypeOptions","optionsResponse","sliderChanged","sliderInput","cipherView","elRef","formEls","formEl","contains","tagName","inputEl","click","useHash","paramsInheritanceStrategy","language","BroadcasterMessagingService","consoleLogService","WebPlatformUtilsService","HtmlStorageService","MemoryStorageService","WebCryptoFunctionService","FileUploadService","eventLoggingService","initFactory","htmlEl","documentElement","theme","useClass","useValue","APP_INITIALIZER","useFactory","deps","LOCALE_ID","subscriber","arg","localStorageKeys","localStorageStartsWithKeys","memoryStorageStartsWithKeys","memoryStorage","isLocalStorage","localStorage","getItem","isMemoryStorage","sessionStorage","setItem","removeItem","swKey","fileUploadType","BillingSourceResponse","BillingTransactionResponse","BillingInvoiceResponse","cardBrand","needsVerification","pdfUrl","paid","createdDate","refunded","partiallyRefunded","refundedAmount","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","OrganizationUserResponse","userProfile","taxIdType","throttleKey","allThrottles","getThrottles","throttles","argsThrottleKey","queue","exec","comparator","sortedCiphersByUrl","timeouts","Ciphers","resetTimer","lastUsedIndex","y","getNextIndex","inEffect","filePath","store","browserCache","chrome","isChrome","isEdge","isOpera","isVivaldi","isMacAppStore","rel","blobData","blobOptions","fileNameLower","doDownload","endsWith","msSaveOrOpenBlob","msSaveBlob","createObjectURL","position","confirmText","cancelText","bodyIsHtml","iconClasses","bootstrapModal","removeAttribute","iconHtmlStr","html","showCancelButton","cancelButtonText","clipboardData","setData","queryCommandSupported","textarea","copyEl","execCommand","readFromClipboard","authenticateBiometric","getDefaultSystemTheme","onDefaultSystemThemeChange","eventType","uploadImmediately","orgIds","eventCollection","EventData","EventRequest","getEncryptedExport","getDecryptedExport","getOrganizationEncryptedExport","getOrganizationDecryptedExport","unparse","Event","padNumber","getSeconds","buildCommonCipher","encKeyValidation","jsonDoc","encKeyValidation_DO_NOT_EDIT","collectionPromises","decCol","cipherPromises","decCipher","padCharacter","numString","login_uri","login_username","login_password","login_totp","toView","values","toDomain","azureFileUploadService","AzureFileUploadService","bitwardenFileUploadService","BitwardenFileUploadService","uploadSendFile","uploadData","encryptedFileData","FileUploadType","Direct","Azure","upload","renewalCallback","encryptedFileName","azureUploadBlob","azureUploadBlocks","urlObject","searchParams","blobResponse","blockSize","getMaxBlockSize","blockIndex","numBlocks","blocksStaged","renewUrlIfNecessary","blockUrl","blockId","encodedBlockId","blockData","blockHeaders","blockRequest","blockResponse","blockListUrl","blockListXml","expiry","utfBlockId","blockIdList","xml","Version","day","compareTo","apiCall","getImportOptions","importResult","halfway","last","badData","postImport","errorResponse","handleServerError","getImporterInstance","BitwardenCsvImporter","BitwardenJsonImporter","LastPassCsvImporter","KeePassXCsvImporter","AviraCsvImporter","BlurCsvImporter","SafeInCloudXmlImporter","PadlockCsvImporter","KeePass2XmlImporter","ChromeCsvImporter","FirefoxCsvImporter","UpmCsvImporter","SaferPassCsvImporter","MeldiumCsvImporter","OnePassword1PifImporter","OnePasswordWinCsvImporter","OnePasswordMacCsvImporter","KeeperCsvImporter","PasswordDragonXmlImporter","EnpassCsvImporter","EnpassJsonImporter","PasswordSafeXmlImporter","DashlaneJsonImporter","MSecureCsvImporter","StickyPasswordXmlImporter","TrueKeyCsvImporter","ClipperzHtmlImporter","RoboFormCsvImporter","AscendoCsvImporter","PasswordBossJsonImporter","ZohoVaultCsvImporter","SplashIdCsvImporter","PassKeepCsvImporter","GnomeJsonImporter","PasswordAgentCsvImporter","PasspackCsvImporter","PassmanJsonImporter","AvastCsvImporter","AvastJsonImporter","FSecureFskImporter","KasperskyTxtImporter","RememBearCsvImporter","PasswordWalletTxtImporter","MykiCsvImporter","SecureSafeCsvImporter","LogMeOnceCsvImporter","BlackBerryCsvImporter","ButtercupCsvImporter","CodebookCsvImporter","EncryptrCsvImporter","YotiCsvImporter","NordPassCsvImporter","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","itemType","fieldLower","web","logins","custName","note","pwd","loginName","cards","holderName","cardNumber","cvv","website","secondary_username","col","addCollection","collectionIndex","delimPosition","parseEncrypted","parseDecrypted","groupingsMap","fav","extra","OfficialProps","processingCustomFields","currentVersion","actionType","labelLower","Category","Favorite","Entry","Note","Username","TOTP","Website","Phone","PIN","Account","HandledResults","ADDRESS","processAddress","AUTHENTIFIANT","processAuth","BANKSTATEMENT","processNote","IDCARD","PAYMENTMEANS_CREDITCARD","processCard","IDENTITY","processIdentity","credential","secondaryLogin","fullName","nameParts","pseudo","addressName","addressFull","zipcode","owner","nameProperty","Label","Notes","CVV","Expiry","expParts","firstRow","containsField","fieldValue","fieldName","fieldNameLower","foldersMap","foldersIndexMap","folderTree","buildFolderTree","flattenFolderTree","template_type","processLogin","sensitive","uuid","parent_uuid","titlePrefix","tree","creditNumber","creditCvv","creditExpiry","keyRing","display_name","secret","attributes","attr","username_value","NotesHeader","ApplicationsHeader","WebsitesHeader","Delimiter","notesData","applicationsData","websitesData","workingData","parseDataCategory","applications","websites","nameKey","itemComment","itemCommentKey","colonIndex","rootGroup","traverse","isRootNode","groupPrefixName","groupName","nameEl","cipherIndex","entryString","valueEl","keyEl","attrs","ProtectInMemory","Title","Group","buildBaseCipher","parseSecureNote","parseCard","parseIdentity","ccnum","cardCipher","profilename","firstname","lastname","ccname","cccsc","ccexp","ccexpParts","middlename","zip","extraParts","processedNote","typeParts","mappedData","parseSecureNoteMapping","monthString","processingNotes","extraPart","DisplayName","UserName","Url","nickname","additionalInfo","twoFactAuthToken","cardName","exp_month","exp_year","firstAddressLine","secondAddressLine","zipCode","record","recordType","evaluateType","cardholdername","cardnumber","cvc","expirydate","processName","full_name","phone_number","line","trashed","processStandardItem","processWinOpVaultItem","overview","URLs","parsePasswordHistory","notesPlain","parseFields","sections","section","openContents","faveIndex","typeName","secureContents","maxSize","designationKey","valueKey","fieldDesignation","street","setIdentityAddress","expSplit","tags","tag","getValue","custom_fields","customField","field_type","tagsJson","Tags","tagJson","__parsed_extra","fieldsJson","extraFields","fieldJson","newVersion","altFormat","login_url","identifiers","valObj","expDate","cf","records","categoryText","accountName","passwordSafe","notesDelimiter","getAttribute","groupText","trash","cardholder","verification","expiryMonth","expMonthNumber","expiryYear","expYearNumber","Name","Pwd","Rf_fields","labelEl","cardEl","labelIdEl","labelId","fieldEl","notesEl","candidates","choice","Comment","parseFieldsToNotes","startIndex","loginNodes","loginNode","accountId","usernameText","passwordText","linkText","notesText","accountLogin","account","parentElement","buildGroupText","PropertiesToIgnore","memo","kind","expiryDate","document_content","ChamberName","parseData","SecretData","CustomData","connected","inactive","reconnectTimer","signalrConnection","off","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","skipNegotiation","transport","HttpTransportType","WebSockets","withHubProtocol","signalRMsgPack","MessagePackHubProtocol","on","processNotification","NotificationResponse","onclose","reconnect","isAuthedAndUnlocked","sync","contextId","payloadUserId","UserId","myUserId","SyncCipherCreate","SyncCipherUpdate","SyncCipherDelete","SyncLoginDelete","SyncFolderCreate","SyncFolderUpdate","SyncFolderDelete","SyncVault","SyncCiphers","SyncSettings","SyncOrgKeys","LogOut","SyncSendCreate","SyncSendUpdate","SyncSendDelete","SyncCipherNotification","SyncFolderNotification","UserNotification","SyncSendNotification","policyCache","toLocaleLowerCase","toLocaleUpperCase","resetPasswordPolicyOptions","ResetPasswordPolicyOptions","policiesResponse","policyFilter","filteredPolicies","policySet","isExemptFromPolicies","indexing","searchableMinLength","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","isArray","every","getIndexForSearch","searchCiphersBasic","ciphersMap","searchResults","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","decryptedSendCache","fileData","Send","ArrayBuffer","encryptFileData","parseFile","decSends","legacyServerSendFileUpload","encFileData","ua","isOldSafari","algorithm","forgeLen","passwordBytes","toByteString","saltBytes","derivedKeyBytes","forge","wcLen","passwordBuf","toBuf","saltBuf","pbkdf2Params","toWebCryptoAlgorithm","importKey","impKey","deriveBits","ikm","outputByteSize","infoBuf","hkdfParams","prk","hashLen","infoArr","runningOkmLength","previousT","okm","md","md5","sha1","valueBytes","update","digest","valueBuf","signingAlgorithm","mac1","mac2","arr1","arr2","getBytes","rand","Uint32Array","util","createBuffer","putInt32","DecryptParameters","meta","encKeyByteString","macKeyByteString","decode64","parameters","dataBuffer","createDecipher","finish","rsaParams","impPrivateKey","exportKey","jwkPrivateKey","jwkPublicKeyParams","kty","ext","impPublicKey","modulusLength","publicExponent","generateKey","getRandomValues","encodeUtf8","modalOpen","modals"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAKlC,IAFGe,GAAqBA,EAAoBhB,GAEtCO,EAASC,QACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrBiB,EAAG,GAGAZ,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU8B,QAGnC,IAAIC,EAASH,EAAiB5B,GAAY,CACzCK,EAAGL,EACHgC,GAAG,EACHF,QAAS,IAUV,OANAhB,EAAQd,GAAUW,KAAKoB,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAG/DK,EAAOC,GAAI,EAGJD,EAAOD,QAKfJ,EAAoBO,EAAInB,EAGxBY,EAAoBQ,EAAIN,EAGxBF,EAAoBS,EAAI,SAASL,EAASM,EAAMC,GAC3CX,EAAoBY,EAAER,EAASM,IAClC5B,OAAO+B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,KAKhEX,EAAoBgB,EAAI,SAASZ,GACX,oBAAXa,QAA0BA,OAAOC,aAC1CpC,OAAO+B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DrC,OAAO+B,eAAeT,EAAS,aAAc,CAAEe,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKzC,OAAO0C,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBzC,OAAO+B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBS,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAL,EAAoBS,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRX,EAAoBY,EAAI,SAASgB,EAAQC,GAAY,OAAO/C,OAAOC,UAAUC,eAAeC,KAAK2C,EAAQC,IAGzG7B,EAAoB8B,EAAI,GAExB,IAAIC,EAAaC,OAAqB,aAAIA,OAAqB,cAAK,GAChEC,EAAmBF,EAAW5C,KAAKuC,KAAKK,GAC5CA,EAAW5C,KAAOf,EAClB2D,EAAaA,EAAWG,QACxB,IAAI,IAAIvD,EAAI,EAAGA,EAAIoD,EAAWlD,OAAQF,IAAKP,EAAqB2D,EAAWpD,IAC3E,IAAIU,EAAsB4C,EAI1B1C,EAAgBJ,KAAK,CAAC,IAAI,IAEnBM,I,sGCvJT,mBAAsB,EAAA0C,e,6GCEtB,mBAAsB,EAAAC,wB,kGC2JtB,mBAAsB,EAAAC,c,oGCtJtB,mBAAsB,EAAAC,e,iGCPtB,W,GAKA,K,aAEA,aAII,WAAoBC,GAAA,KAAAA,c,OAEpB,YAAAC,UAAA,SAAUC,EAAYC,EAAaC,EAAaC,GAC5C,OAAOC,KAAKN,YAAYnB,EAAEqB,EAAIC,EAAIC,EAAIC,I,iCAJjCE,GAAQ,qC,yCAARA,EAAQ,U,EAHrB,GAGa,EAAAA,Y,+DAAAA,EAAQ,E,KAHpB,EAAAC,K,MAAK,CACFrC,KAAM,Y,4JCKV,mBAAsB,EAAAsC,iB,wGCbtB,mBAAsB,EAAAC,oB,0GCAtB,W,OAOA,aAUI,WAAoBC,EAAwBC,GAAxB,KAAAD,KAAwB,KAAAC,W,OAN5C,sBAAa,2BAAY,C,IAAzB,SAA0BC,GACtBP,KAAKO,MAAQA,G,gCAOjB,YAAAC,SAAA,WACSR,KAAKK,GAAGI,cAAcC,aAAa,UACpCV,KAAKM,SAASK,aAAaX,KAAKK,GAAGI,cAAe,QAAST,KAAKO,OAE/DP,KAAKK,GAAGI,cAAcC,aAAa,eACpCV,KAAKM,SAASK,aAAaX,KAAKK,GAAGI,cAAe,aAAcT,KAAKO,Q,iCAdpEK,GAAkB,qE,iCAAlBA,EAAkB,0E,EAH/B,GAGa,EAAAA,sB,+DAAAA,EAAkB,E,KAH9B,EAAAC,U,MAAU,CACPC,SAAU,sB,6DAGGC,aAAY,E,KAAxB,EAAAC,W,2GCXL,WAQA,GAFA,MAEA,Q,GAEA,M,sBAEA,aAMI,WAAoBX,EAAwBY,EAChCC,GADQ,KAAAb,KAAwB,KAAAY,oBAChC,KAAAC,a,OAEZ,YAAAC,YAAA,SAAYC,GAAZ,WAC6B,MAArBpB,KAAKqB,cAAkD,MAA1BrB,KAAKqB,aAAaC,OAInDtB,KAAKK,GAAGI,cAAcc,SAAU,EAEhCvB,KAAKqB,aAAaC,MAAK,SAACE,GACpB,EAAKnB,GAAGI,cAAcc,SAAU,KACjC,SAACE,G,MACA,EAAKpB,GAAGI,cAAcc,SAAU,GAE3BE,aAAa,EAAAC,eAAwC,kBAAvBD,EAAEE,YAAY9D,OAA8B4D,EAAoBG,gBAC/F,EAAKV,WAAWW,MAAM,oCAAsCJ,EAAEK,qBAGnD,QAAf,IAAKZ,kBAAU,SAAEW,MAAM,2BAA2BJ,GAClD,EAAKR,kBAAkBc,UAAUN,S,iCAvBhCO,GAAkB,+G,iCAAlBA,EAAkB,4G,EAH/B,GAGa,EAAAA,sB,+DAAAA,EAAkB,E,KAH9B,EAAAnB,U,MAAU,CACPC,SAAU,sB,yFAGDO,aAAc,CAAF,C,KAApB,EAAAL,W,k/CChBL,WAWA,SAEA,SACA,SACA,S,OAEA,aAEI,KAAAiB,qBAA+B,GAFtB,EAAAC,cAKb,iBAQI,WAAoBC,EAA4DC,EACpEC,GADQ,KAAAF,2BAA4D,KAAAC,iBACpE,KAAAC,WAPF,KAAAC,WAAa,EAIf,KAAAC,iBAA6D,IAAIC,I,OAKnE,YAAAC,YAAN,SAAqBC,EAAwBC,EACzCC,G,YAAA,IAAAA,MAAA,M,6FAQA,OANA5C,KAAKsC,aACC,EAAgCtC,KAAK6C,aAAaH,EAAe,MAAM,GAAtEI,EAAQ,MAAEC,EAAiB,MAChBC,SAASJ,uBAAyBA,EAEpDD,EAAiBM,OAAOF,EAAkBG,UAE1C,GAAMJ,EAASK,UAAUC,KAAK,EAAAC,SAASC,a,OAEvC,OAFA,SAEO,CAAC,EAAD,CAACR,EAAUC,EAAkBC,SAASO,aAAaP,mBAG9D,YAAAQ,KAAA,SAAKd,EAA0Be,G,MAC3B,GAAiC,QAA5B,EAACA,aAAM,EAANA,EAAQxB,2BAAmB,YAAcjC,KAAKsC,WAAa,GAAjE,CAGAtC,KAAKsC,aAEC,MAAgBtC,KAAK6C,aAAaH,EAAee,GAAQ,GAAxDX,EAAQ,KAAG,KAElB,OAAOA,IAGX,YAAAY,iCAAA,SAAoChB,EAAwBP,GACxDnC,KAAKuC,iBAAiBoB,IAAIjB,EAAeP,IAG7C,YAAAyB,wBAAA,SAA2BlB,GACvB,OAAI1C,KAAKuC,iBAAiBsB,IAAInB,GACnB1C,KAAKuC,iBAAiBrE,IAAIwE,GAAekB,wBAAwBlB,GAGrE1C,KAAKmC,yBAAyByB,wBAAwBlB,IAGvD,YAAAG,aAAV,SAAuBH,EAA0Be,EAAsBK,GAAvE,WAGU,EAA2B9D,KAAK+D,qBAAqBN,GAApDX,EAAQ,KAAES,EAAY,KAG7B,GAFAA,EAAaP,SAASgB,mBAAqBtB,EAEvCoB,EAAa,CACb9D,KAAKoC,eAAe6B,WAAWV,EAAaL,UAC5C,IAAMgB,EAAWX,EAAaL,SAAkCiB,UAAU,GAC1EC,SAASC,KAAKC,YAAYJ,GAa9B,OAVApB,EAASyB,SAASnB,KAAK,EAAAC,SAASmB,WAAU,WAClCV,GACA,EAAK1B,eAAeqC,WAAWlB,EAAaL,UAEhDK,EAAamB,UACb,EAAKpC,gBAGTtC,KAAK2E,cAAc7B,GAEZ,CAACA,EAAUS,IAGZ,YAAAoB,cAAV,SAAwB7B,GAAxB,WACQ8B,EAAwB,KAG5B9B,EAASK,UAAUC,KAAK,EAAAC,SAASmB,WAAU,SAAAnE,GACvC+D,SAASC,KAAKQ,UAAUC,IAAI,eAE5BF,EAAWR,SAASW,cAAc,QACzBC,UAAY,sBACrBJ,EAASK,MAAMC,OAAY,EAAK5C,WAAU,MAC1C8B,SAASC,KAAKC,YAAYM,GAE1BvE,EAAG8E,cAAc,iBAAiBC,iBAAiB,SAAS,SAAC3D,GACzDA,EAAE4D,qBAGuBhF,EAAG8E,cAAc,UACtCF,MAAMC,OAAY,EAAK5C,WAAU,MAGzC,IADA,IAC2B,MADZgD,MAAMC,KAAKlF,EAAGmF,iBAAiB,2CACnB,eAAQ,CAAZ,KACNJ,iBAAiB,SAAS,SAAAK,GACnC3C,EAAS4C,eAMrB5C,EAAS6C,QAAQvC,KAAK,EAAAC,SAASmB,WAAU,WACrC1B,EAAS8C,SAEe,IAApB,EAAKtD,YACL8B,SAASC,KAAKQ,UAAUgB,OAAO,cAGnB,MAAZjB,GACAR,SAASC,KAAKyB,YAAYlB,OAK5B,YAAAb,qBAAV,SAA+BN,GAC3B,IAAMX,EAAW,IAAI,EAAAiD,SAEfC,EAAM,IAAIC,QAOhB,OANAD,EAAIrC,IAAIzB,EAAauB,GACrBuC,EAAIrC,IAAI,EAAAoC,SAAUjD,GAKX,CAACA,EAHiB9C,KAAKmC,yBAAyByB,wBAAwB,EAAAsC,uBACzCvH,OAAO,IAAI,EAAAwH,cAAcnG,KAAKqC,SAAU2D,M,iCAzHzEI,GAAY,6F,oCAAZA,EAAY,QAAZA,EAAY,O,EADzB,GACa,EAAAA,gB,+DAAAA,EAAY,E,KADxB,EAAAC,c,6MCVD,mBAAsB,EAAAC,iB,wGCZtB,W,GAMA,KAEA,O,mDCR4I,qB,8BAAG,2C,yBAA9C,2BAA2C,4CAA4D,YAAU,kB,6BAA9C,2CAAoC,sD,yBAAmH,yBAAsD,Y,mBAA0E,kB,8BAA1E,gI,yBAAgF,yBAAkD,Y,mBAAmF,kB,8BAAnF,2K,sBAAyF,yBAAiD,Y,mBAAoC,kB,MAApC,0F,sBAA0C,yBAAiD,Y,mBAAoC,kB,MAApC,0F,sBAA0C,yBAAmD,Y,mBAAkC,kB,MAAlC,wF,sBAAwC,yBAAmD,Y,mBAA+C,kB,MAA/C,mG,yBAAxrB,4BAAoE,YAA0B,yBAAK,6CAAsI,6CAA2I,6CAA2F,8CAA2F,+CAA2F,+CAAwG,kCAAM,mC,6BAA/qB,qEAAoC,iHAAsI,6GAA2I,4GAA2F,4GAA2F,8GAA2F,+G,+CDUl2B,aAcI,WAAoB5G,GAAA,KAAAA,cATX,KAAA6G,KAAO,O,OAWhB,YAAA/F,SAAA,WACIR,KAAKwG,aAAexG,KAAKuG,UAEUE,IAA/BzG,KAAK0G,wBACL1G,KAAK0G,sBAAwB1G,KAAKN,YAAYnB,EAAE,iCAGlC,YAAdyB,KAAKuG,MAAoC,WAAdvG,KAAKuG,MACd,WAAdvG,KAAKuG,OACLvG,KAAKwG,aAAe,eAELC,IAAfzG,KAAKO,QACLP,KAAKO,MAAQP,KAAKN,YAAYnB,EAAE,iBAElBkI,IAAdzG,KAAK2G,OACL3G,KAAK2G,KAAO,eAEK,UAAd3G,KAAKuG,MACZvG,KAAKwG,aAAe,cACDC,IAAfzG,KAAKO,QACLP,KAAKO,MAAQP,KAAKN,YAAYnB,EAAE,eAElBkI,IAAdzG,KAAK2G,OACL3G,KAAK2G,KAAO,YAEK,QAAd3G,KAAKuG,OACZvG,KAAKwG,aAAe,eACDC,IAAfzG,KAAKO,QACLP,KAAKO,MAAQP,KAAKN,YAAYnB,EAAE,aAElBkI,IAAdzG,KAAK2G,OACL3G,KAAK2G,KAAO,oBAKxB,YAAAC,6BAAA,WACI,GAAkC,MAA9B5G,KAAK6G,sBACL,MAAO,GAGX,IAAIC,EACJ,OAAQ9G,KAAK6G,sBAAsBE,eAC/B,KAAK,EACDD,EAAM9G,KAAKN,YAAYnB,EAAE,UACzB,MACJ,KAAK,EACDuI,EAAM9G,KAAKN,YAAYnB,EAAE,QACzB,MACJ,QACIuI,EAAM9G,KAAKN,YAAYnB,EAAE,QAGjC,OAAOuI,EAAM,KAAO9G,KAAK6G,sBAAsBE,cAAgB,K,iCAjE1DC,GAAgB,qC,iCAAhBA,EAAgB,sf,oBCd7B,4BAAiG,6CAAuH,+CAA0vB,kCAA0B,iCAAO,iB,MAA9+B,+DAAyC,2DAAgF,4CAAgI,8D,qEDU9P,GAIa,EAAAA,oB,+DAAAA,EAAgB,E,KAJ5B,EAAAC,U,MAAU,CACPnG,SAAU,cACVoG,YAAa,8B,2CAGJX,KAAI,E,KAAZ,EAAAvF,QACQ2F,KAAM,CAAF,C,KAAZ,EAAA3F,QACQT,MAAO,CAAF,C,KAAb,EAAAS,QACQmG,UAAW,CAAF,C,KAAjB,EAAAnG,QACQ6F,sBAAuB,CAAF,C,KAA7B,EAAA7F,QACQ0F,sBAAuB,CAAF,C,KAA7B,EAAA1F,W,oGEpBL,iBAGI,WAAYQ,GACRxB,KAAKwB,SAAWA,EAkCxB,OA/Bc,YAAA4F,oBAAV,SAA8BC,EAAsB7F,EAAsB8F,GACtE,QADgD,IAAA9F,MAAA,WAAsB,IAAA8F,OAAA,GAClD,MAAhBD,GAAyC,KAAjBA,EACxB,MAAM,IAAIE,MAAM,wCAKpB,GAHgB,MAAZ/F,GAAqC,MAAjBxB,KAAKwB,WACzBA,EAAWxB,KAAKwB,UAEJ,MAAZA,EACA,OAAO,KAEX,IAAK8F,QAAwCb,IAA3BjF,EAAS6F,GAA6B,CACpD,IAAIG,EAAgC,KAEhCA,EADAH,EAAaI,OAAO,KAAOJ,EAAaI,OAAO,GAAGC,cAC1BL,EAAaI,OAAO,GAAGE,cAEvBN,EAAaI,OAAO,GAAGC,cAE/CL,EAAarL,OAAS,IACtBwL,GAAyBH,EAAahI,MAAM,SAIjBoH,IAA3BjF,EADJ6F,EAAeG,KAEXH,EAAeA,EAAaM,oBAEDlB,IAA3BjF,EAAS6F,KACTA,EAAeA,EAAaK,eAGpC,OAAOlG,EAAS6F,IAExB,EAtCA,GAAsB,EAAAO,gB,qGCWtB,mBAAsB,EAAAC,iB,+GCXtB,aAKMC,EAA4B,oBAAX3I,OAAyB,EAAQ,KAAS,KAEjE,2BA0WA,OA9VW,EAAA4I,KAAP,WACQC,EAAMC,SAIVD,EAAMC,QAAS,EACfD,EAAME,YAA4B,IAAZC,GAAuD,MAA3BA,EAAgBC,SAC5B,SAAjCD,EAAgBC,QAAQvK,KAC7BmK,EAAMK,UAA8B,oBAAXlJ,OACzB6I,EAAMM,gBAAkBN,EAAME,SAAWF,EAAMK,UAC/CL,EAAMO,gBAAkBP,EAAMK,WAAarI,KAAKwI,SAASrJ,QACzD6I,EAAMS,qBAAuBT,EAAMK,WAAarI,KAAK0I,cAAcvJ,QACnE6I,EAAMW,OAASX,EAAMM,gBAA2BN,EAAME,SAAWF,EAAMK,UAAjCM,EAAsDxJ,SAGzF,EAAAyJ,eAAP,SAAsB9B,GAClB,GAAIkB,EAAME,QAAUF,EAAMM,eACtB,OAAO,IAAIO,WAAWC,EAAOvD,KAAKuB,EAAK,WAIvC,IAFA,IAAMiC,EAAe5J,OAAO6J,KAAKlC,GAC3BmC,EAAQ,IAAIJ,WAAWE,EAAa/M,QACjCF,EAAI,EAAGA,EAAIiN,EAAa/M,OAAQF,IACrCmN,EAAMnN,GAAKiN,EAAaG,WAAWpN,GAEvC,OAAOmN,GAIR,EAAAE,kBAAP,SAAyBrC,GACrB,OAAOkB,EAAMY,eAAeZ,EAAMoB,gBAAgBtC,KAG/C,EAAAuC,eAAP,SAAsBvC,GAClB,GAAIkB,EAAME,QAAUF,EAAMM,eACtB,OAAO,IAAIO,WAAWC,EAAOvD,KAAKuB,EAAK,QAGvC,IADA,IAAMmC,EAAQ,IAAIJ,WAAW/B,EAAI9K,OAAS,GACjCF,EAAI,EAAGA,EAAIgL,EAAI9K,OAAQF,GAAK,EACjCmN,EAAMnN,EAAI,GAAKwN,SAASxC,EAAIyC,OAAOzN,EAAG,GAAI,IAE9C,OAAOmN,GAIR,EAAAO,gBAAP,SAAuB1C,GACnB,GAAIkB,EAAME,QAAUF,EAAMM,eACtB,OAAO,IAAIO,WAAWC,EAAOvD,KAAKuB,EAAK,SAIvC,IAFA,IAAM2C,EAAUC,SAASC,mBAAmB7C,IACtC8C,EAAM,IAAIf,WAAWY,EAAQzN,QAC1BF,EAAI,EAAGA,EAAI2N,EAAQzN,OAAQF,IAChC8N,EAAI9N,GAAK2N,EAAQP,WAAWpN,GAEhC,OAAO8N,GAIR,EAAAC,sBAAP,SAA6B/C,GAEzB,IADA,IAAM8C,EAAM,IAAIf,WAAW/B,EAAI9K,QACtBF,EAAI,EAAGA,EAAIgL,EAAI9K,OAAQF,IAC5B8N,EAAI9N,GAAKgL,EAAIoC,WAAWpN,GAE5B,OAAO8N,GAGJ,EAAAE,gBAAP,SAAuBC,GACnB,GAAI/B,EAAME,QAAUF,EAAMM,eACtB,OAAOQ,EAAOvD,KAAKwE,GAAQC,SAAS,UAIpC,IAFA,IAAIC,EAAS,GACPhB,EAAQ,IAAIJ,WAAWkB,GACpBjO,EAAI,EAAGA,EAAImN,EAAMiB,WAAYpO,IAClCmO,GAAUE,OAAOC,aAAanB,EAAMnN,IAExC,OAAOqD,OAAOkL,KAAKJ,IAIpB,EAAAK,mBAAP,SAA0BP,GACtB,OAAO/B,EAAMuC,gBAAgBvC,EAAM8B,gBAAgBC,KAGhD,EAAAQ,gBAAP,SAAuBC,GACnB,OAAOA,EAAOC,QAAQ,MAAO,KACxBA,QAAQ,MAAO,KACfA,QAAQ,KAAM,KAGhB,EAAAC,iBAAP,SAAwBX,GACpB,GAAI/B,EAAME,QAAUF,EAAMM,eACtB,OAAOQ,EAAOvD,KAAKwE,GAAQC,SAAS,QAEpC,IAAMf,EAAQ,IAAIJ,WAAWkB,GACvBY,EAAgBR,OAAOC,aAAazN,MAAM,KAAMsM,GACtD,OAAO2B,mBAAmBC,OAAOF,KAIlC,EAAAG,uBAAP,SAA8Bf,GAC1B,OAAOI,OAAOC,aAAazN,MAAM,KAAM,IAAIkM,WAAWkB,KAInD,EAAAgB,gBAAP,SAAuBhB,GACnB,GAAI/B,EAAME,QAAUF,EAAMM,eACtB,OAAOQ,EAAOvD,KAAKwE,GAAQC,SAAS,OAEpC,IAAMf,EAAQ,IAAIJ,WAAWkB,GAC7B,OAAOzE,MAAMpJ,UAAU8J,IAAI5J,KAAK6M,GAAO,SAAC+B,GAAc,OAAC,KAAOA,EAAEhB,SAAS,KAAK3K,OAAO,MAAI4L,KAAK,KAI/F,EAAA7B,gBAAP,SAAuB8B,GACnB,IAAIC,EAASD,EAAUT,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACxD,OAAQU,EAAOnP,OAAS,GACpB,KAAK,EACD,MACJ,KAAK,EACDmP,GAAU,KACV,MACJ,KAAK,EACDA,GAAU,IACV,MACJ,QACI,MAAM,IAAI5D,MAAM,6BAGxB,OAAO4D,GAGJ,EAAAC,iBAAP,SAAwBF,GACpB,OAAOlD,EAAMqD,cAAcrD,EAAMoB,gBAAgB8B,KAG9C,EAAAI,cAAP,SAAqBC,GACjB,OAAIvD,EAAME,QAAUF,EAAMM,eACfQ,EAAOvD,KAAKgG,EAAQ,QAAQvB,SAAS,UAErCY,mBAAmBC,OAAO1L,OAAOkL,KAAKkB,MAI9C,EAAAC,iBAAP,SAAwBD,GACpB,OAAOvD,EAAMsC,mBAAmBtC,EAAMwB,gBAAgB+B,KAGnD,EAAAF,cAAP,SAAqBb,GACjB,OAAIxC,EAAME,QAAUF,EAAMM,eACfQ,EAAOvD,KAAKiF,EAAQ,UAAUR,SAAS,QAEvCY,mBAAmBC,OAAO1L,OAAO6J,KAAKwB,MAK9C,EAAAiB,QAAP,WACI,MAAO,uCAAuChB,QAAQ,SAAS,SAAA9M,GAE3D,IAAMQ,EAAoB,GAAhBuN,KAAKC,SAAgB,EAG/B,OADgB,MAANhO,EAAYQ,EAAS,EAAJA,EAAU,GAC5B6L,SAAS,QAInB,EAAA4B,OAAP,SAAchM,GACV,OAAOiM,OAAO,4EAA6E,KAAKC,KAAKlM,IAGlG,EAAAmM,YAAP,SAAmBC,GACf,IAAMC,EAAMjE,EAAMkE,OAAOF,GACzB,IACI,OAAc,MAAPC,GAAgC,KAAjBA,EAAIE,SAAkBF,EAAIE,SAAW,KAC7D,SACE,OAAO,OAIR,EAAAC,QAAP,SAAeJ,GACX,IAAMC,EAAMjE,EAAMkE,OAAOF,GACzB,IACI,OAAc,MAAPC,GAA4B,KAAbA,EAAII,KAAcJ,EAAII,KAAO,KACrD,SACE,OAAO,OAIR,EAAAC,UAAP,SAAiBN,GACb,GAAiB,MAAbA,EACA,OAAO,KAIX,GAAkB,MADlBA,EAAYA,EAAUO,QAElB,OAAO,KAGX,GAAIP,EAAUQ,WAAW,SACrB,OAAO,KAGX,IAAIC,EAAUT,EAAUQ,WAAW,YAAcR,EAAUQ,WAAW,YAMtE,IALKC,GAAWT,EAAUU,QAAQ,OAAS,GAAK1E,EAAM2E,eAAeb,KAAKE,KACtEA,EAAY,UAAYA,EACxBS,GAAU,GAGVA,EACA,IACI,IAAMR,EAAMjE,EAAM4E,aAAaZ,GAE/B,KADwC,OAAlBa,aAAK,EAALA,EAAOC,UAAkBD,EAAMC,QAAQb,EAAIE,WAE7D,OAAO,KAGX,GAAqB,cAAjBF,EAAIE,UAA4BnE,EAAM+E,eAAed,EAAIE,UACzD,OAAOF,EAAIE,SAGf,IAAMa,EAAqB,MAATH,GAAoC,MAAnBA,EAAMP,UAAoBO,EAAMP,UAAUL,EAAIE,UAAY,KAC7F,OAAoB,MAAba,EAAoBA,EAAYf,EAAIE,SAC7C,MAAO1K,IAGb,IACI,IAAMwL,EAAkB,MAATJ,GAAoC,MAAnBA,EAAMP,UAAoBO,EAAMP,UAAUN,GAAa,KAEvF,GAAc,MAAViB,EACA,OAAOA,EAEb,SACE,OAAO,KAGX,OAAO,MAGJ,EAAAC,eAAP,SAAsBlB,GAClB,IAAMC,EAAMjE,EAAMkE,OAAOF,GACzB,GAAW,MAAPC,GAA6B,MAAdA,EAAIkB,QAAiC,KAAflB,EAAIkB,OACzC,OAAO,KAEX,IAAMnH,EAAM,IAAIxD,IAShB,OARiC,MAAlByJ,EAAIkB,OAAO,GAAalB,EAAIkB,OAAO5D,OAAO,GAAK0C,EAAIkB,QAAQC,MAAM,KAC1EC,SAAQ,SAAAC,GACV,IAAMC,EAAQD,EAAKF,MAAM,KACrBG,EAAMvR,OAAS,GAGnBgK,EAAIrC,IAAIiH,mBAAmB2C,EAAM,IAAI5F,cAA2B,MAAZ4F,EAAM,GAAa,GAAK3C,mBAAmB2C,EAAM,QAElGvH,GAGJ,EAAAwH,gBAAP,SAAuB9N,EAA0B+N,GAC7C,OAAO,SAACC,EAAQC,GACZ,OAAe,MAAXD,EAAED,IAA4B,MAAXE,EAAEF,IACb,EAEG,MAAXC,EAAED,IAA4B,MAAXE,EAAEF,GACd,EAEI,MAAXC,EAAED,IAA4B,MAAXE,EAAEF,GACd,EAGJ/N,EAAYkO,SAAWlO,EAAYkO,SAASC,QAAQH,EAAED,GAAOE,EAAEF,IAClEC,EAAED,GAAMK,cAAcH,EAAEF,MAI7B,EAAAM,mBAAP,SAA0BjH,GACtB,OAAc,MAAPA,GAA8B,iBAARA,GAAmC,KAAfA,EAAIyF,QAGlD,EAAAyB,OAAP,SAAiBnQ,GACb,OAAOA,GAGJ,EAAAoQ,OAAP,SAAiBC,EAAWC,GACxB,OAAOlS,OAAOgS,OAAOC,EAAQC,IAG1B,EAAAC,YAAP,SAAkEC,GAC9D,OAAQpS,OAAOqS,KAAKD,GAAKE,QAAO,SAAAC,GAAK,OAAAC,OAAOC,OAAOF,MAAYxI,KAAI,SAAAwI,GAAK,OAAAH,EAAIG,OAIzE,EAAAtC,OAAP,SAAcF,GACV,GAAiB,MAAbA,EACA,OAAO,KAIX,GAAkB,MADlBA,EAAYA,EAAUO,QAElB,OAAO,KAGX,IAAIN,EAAMjE,EAAM4E,aAAaZ,GAClB,MAAPC,MACyD,IAAjCD,EAAUU,QAAQ,YAAsD,IAAlCV,EAAUU,QAAQ,cACxDV,EAAUU,QAAQ,MAAQ,IAC9CT,EAAMjE,EAAM4E,aAAa,UAAYZ,KAG7C,OAAOC,GAGI,EAAAc,eAAf,SAA8B4B,GAG1B,MADgB,mKACD7C,KAAK6C,IAGT,EAAAnG,SAAf,SAAwBoG,GACpB,IACClB,EADGmB,GAAS,EAOb,OANCnB,EAKEkB,EAAIE,UAAUC,WAAaH,EAAIE,UAAUE,QAAWJ,EAAYK,OAH3D,2TAA2TnD,KAAK4B,IAAM,0kDAA0kD5B,KAAK4B,EAAEnE,OAAO,EAAG,OACj6DsF,GAAS,GAGVA,GAAoD,MAA1CD,EAAIE,UAAUC,UAAUG,MAAM,UAGpC,EAAAxG,cAAf,SAA6BkG,GACzB,OAAmD,MAA5CA,EAAIE,UAAUC,UAAUG,MAAM,YAAgE,MAA1CN,EAAIE,UAAUC,UAAUG,MAAM,UAG9E,EAAAtC,aAAf,SAA4BZ,GACxB,IACI,GAAe,MAAXlE,EACA,OAAOA,EAAQqH,IAAM,IAAIrH,EAAQqH,IAAInD,GAAalE,EAAQsH,MAAMpD,GAC7D,GAAmB,mBAARmD,IACd,OAAO,IAAIA,IAAInD,GACZ,GAAc,MAAV7M,OAAgB,CACvB,IAAMkQ,EAAcrD,EAAUU,QAAQ,QAAU,EAChD,IAAK2C,GAAerD,EAAUU,QAAQ,MAAQ,EAC1CV,EAAY,UAAYA,OACrB,IAAKqD,EACR,OAAO,KAEX,IAAMC,EAASnQ,OAAOiF,SAASW,cAAc,KAE7C,OADAuK,EAAOC,KAAOvD,EACPsD,GAEb,MAAO7N,IAET,OAAO,MAvWJ,EAAAwG,QAAS,EACT,EAAAK,gBAAiB,EACjB,EAAAJ,QAAS,EACT,EAAAG,WAAY,EACZ,EAAAE,iBAAkB,EAClB,EAAAE,sBAAuB,EACvB,EAAAE,OAAc,KACd,EAAAgE,eAAiB,iFAEjB,EAAA6C,wBAA2B,02BAgWtC,EA1WA,GAAa,EAAAxH,QA4WbA,EAAMD,S,uJC9WN,mBAAsB,EAAA0H,6B,oGCLtB,aAMA,SACA,SACA,SAEA,QAEA,SACA,SACA,SACA,QAGA,QACA,SACA,QAEA,SAEA,0BACI,KAAAC,eAAyB,KAEf,KAAAxO,WAAyB,IAAI,EAAAyO,mBAAkB,GAE/C,KAAAC,aAAe,iBAEf,KAAAC,mBAAqB,CAC3B,WAAY,YAAa,aAAc,cACvC,OAAQ,OAAQ,YAAa,WAC7B,SAAU,cAAe,YACzB,MAAO,UAAW,WAAY,YAAa,aAC3C,UAAW,aAAc,MAAO,MAAO,KAAM,QAAS,SACtD,IAAK,SAAU,UAAW,cAAe,QAGzC,YAGM,KAAAC,mBAAqB,CAC3B,OAAQ,OAAQ,YAAa,WAAY,aACzC,QAAS,SAAU,KAAM,SAAU,UACnC,QAAS,iBAAkB,SAAU,OACrC,UAAW,WAAY,MAAO,cAC9B,aAAc,YAAa,QAAS,YACpC,SAAU,WAGV,MAAO,gBAGD,KAAAC,gBAAkB,CACxB,OAAQ,QAAS,UAAW,WAAY,OACxC,cAAe,YAAa,WAC5B,YAAa,WAAY,OAGzB,aAGM,KAAAC,cAA0B,CAChC,MAAO,aAAc,YAAa,OAClC,OAAQ,WAAY,YAAa,SAAU,UAC3C,YAAa,OAAQ,MAAO,UAAW,WAAY,OACnD,WAAY,MAGZ,MAAO,WAGD,KAAAC,gBAAkB,CACxBC,SAAU,QACVC,gBAAgB,GA4SxB,OAzSI,sBAAc,2BAAY,C,IAA1B,WACI,OAA8B,MAAvBnQ,KAAK0P,gB,gCAGN,YAAAU,SAAV,SAAmB5U,GACf,IACM6U,GADS,IAAIC,WACAC,gBAAgB/U,EAAM,mBACzC,OAAc,MAAP6U,GAAmD,MAApCA,EAAIlL,cAAc,eAAyBkL,EAAM,MAGjE,YAAAG,SAAV,SAAmBhV,EAAciV,EAAiBC,GAAlD,gBAAkD,IAAAA,MAAA,IAC9C,IAAMC,EAAe1U,OAAOgS,OAAO,CAAEwC,OAAQA,GAAUzQ,KAAKiQ,gBAAiBS,GAC7ElV,EAAOwE,KAAK4Q,aAAapV,GAAMyP,KAAK,MAAMsB,OAC1C,IAAM1P,EAASgU,EAAKzB,MAAM5T,EAAMmV,GAShC,OARqB,MAAjB9T,EAAOiU,QAAkBjU,EAAOiU,OAAO9U,OAAS,GAChDa,EAAOiU,OAAOzD,SAAQ,SAAA5L,GACL,MAATA,EAAEsP,KAEF,EAAK7P,WAAW8P,QAAQ,qBAAuBvP,EAAEsP,IAAM,KAAOtP,EAAEwP,YAIrEpU,EAAOrB,MAAQqB,EAAOrB,KAAKQ,OAAS,EAAIa,EAAOrB,KAAO,MAGvD,YAAA0V,kBAAV,SAA4BC,GACxB,GAAInR,KAAK+N,mBAAmBoD,GACxB,OAAO,KAEX,IAAMC,EAAYpR,KAAKwQ,SAASW,GAAS,GACzC,OAAiB,MAAbC,GAAqBA,EAAUpV,OAAS,GAAKoV,EAAU,GAAGpV,OAAS,EAC5DoV,EAAU,GAEd,MAGD,YAAAC,aAAV,SAAuBC,GAAvB,WACI,GAAW,MAAPA,EACA,OAAO,KAGX,GAAmB,iBAARA,EAAkB,CACzB,IAAMC,EAAW,IAAI,EAAAC,aAErB,OADAD,EAASD,IAAMtR,KAAKyR,OAAOH,GACvBtR,KAAK+N,mBAAmBwD,EAASD,KAC1B,MAEXC,EAASrC,MAAQ,KACV,CAACqC,IAGZ,GAAID,EAAItV,OAAS,EAAG,CAChB,IAAM,EAA4B,GAUlC,OATAsV,EAAIjE,SAAQ,SAAAqE,GACR,IAAMH,EAAW,IAAI,EAAAC,aACrBD,EAASD,IAAM,EAAKG,OAAOC,GACvB,EAAK3D,mBAAmBwD,EAASD,OAGrCC,EAASrC,MAAQ,KACjB,EAAU5S,KAAKiV,OAES,IAArB,EAAUvV,OAAe,KAAO,EAG3C,OAAO,MAGD,YAAAyV,OAAV,SAAiBH,GACb,OAAW,MAAPA,EACO,OAGiB,KAD5BA,EAAMA,EAAI/E,QACFG,QAAQ,QAAiB4E,EAAI5E,QAAQ,MAAQ,IACjD4E,EAAM,UAAYA,GAElBA,EAAItV,OAAS,IACNsV,EAAIK,UAAU,EAAG,KAErBL,IAGD,YAAAM,YAAV,SAAsB3F,GAClB,IAAME,EAAW,EAAAnE,MAAM+D,YAAYE,GACnC,OAAIjM,KAAK+N,mBAAmB5B,GACjB,KAEJA,EAASK,WAAW,QAAUL,EAAS1B,QAAQ,OAAQ,IAAM0B,GAG9D,YAAA4B,mBAAV,SAA6BjH,GACzB,OAAO,EAAAkB,MAAM+F,mBAAmBjH,IAG1B,YAAA+K,kBAAV,SAA4B/K,EAAagL,GACrC,YADqC,IAAAA,MAAA,MACjC9R,KAAK+N,mBAAmBjH,GACjBgL,EAEJhL,GAGD,YAAA8J,aAAV,SAAuB9J,GACnB,OAAOA,EAAIsG,MAAMpN,KAAK4P,eAIhB,YAAAmC,aAAV,SAAuBC,GACnB,GAAIhS,KAAK+N,mBAAmBiE,GACxB,OAAO,KAIX,IAAIC,EAAK,IAAIpG,OAAO,MACpB,OAAyB,MAArBmG,EAAQ9C,MAAM+C,GACP,OAKP,sGACCnG,KAAKkG,GACC,cAIXC,EAAK,IAAIpG,OAAO,UACS,MAArBmG,EAAQ9C,MAAM+C,GACP,QAIXA,EAAK,IAAIpG,OAAO,iFACS,MAArBmG,EAAQ9C,MAAM+C,GACP,YAIXA,EAAK,IAAIpG,OAAO,OACS,MAArBmG,EAAQ9C,MAAM+C,GACP,eAIXA,EAAK,IAAIpG,OAAO,YACS,MAArBmG,EAAQ9C,MAAM+C,GACP,eAIXA,EAAK,IAAIpG,OAAO,yBACS,MAArBmG,EAAQ9C,MAAM+C,GACP,OAIXA,EAAK,IAAIpG,OAAO,qCACS,MAArBmG,EAAQ9C,MAAM+C,GACP,OAGJ,YAGD,YAAAC,kBAAV,SAA4BC,EAAoBC,GAC5C,IAAKpS,KAAK+N,mBAAmBqE,GAAa,CAEtC,IAAM7E,GADN6E,EAAaA,EAAW3H,QAAQ,MAAO,KACd2C,MAAM,KAC/B,GAAqB,IAAjBG,EAAMvR,OAAc,CACpB,IAAIqW,EAAgB,KAChBC,EAAe,KAUnB,GATwB,IAApB/E,EAAM,GAAGvR,QAAoC,IAApBuR,EAAM,GAAGvR,QAEb,KADrBqW,EAAQ9E,EAAM,IACJvR,QAA6B,MAAbqW,EAAM,KAC5BA,EAAQA,EAAM9I,OAAO,EAAG,IAGR,IAApBgE,EAAM,GAAGvR,QAAoC,IAApBuR,EAAM,GAAGvR,SAClCsW,EAAwB,IAAjBD,EAAMrW,OAAe,KAAOuR,EAAM,GAAKA,EAAM,IAE3C,MAAT8E,GAAyB,MAARC,EAGjB,OAFAH,EAAOI,KAAKC,SAAWH,EACvBF,EAAOI,KAAKE,QAAUH,GACf,GAInB,OAAO,GAGD,YAAAI,yBAAV,SAAmC7V,GAC/BA,EAAO8V,oBAAoBtF,SAAQ,SAAAlP,GAAK,OAAAtB,EAAO+V,wBAAwBtW,KAAK6B,MAC5EtB,EAAOgW,YAAchW,EAAOiW,QAAQ9M,KAAI,SAAA+M,GACpC,IAAMC,EAAa,IAAI,EAAAC,eAEvB,OADAD,EAAWnV,KAAOkV,EAAElV,KACbmV,KAEXnW,EAAO8V,oBAAsB,GAC7B9V,EAAOiW,QAAU,IAGX,YAAAI,yBAAV,SAAmCC,EAAmBC,GAClD,IAAMC,EAAMrT,KAAKsT,4BAA4BH,EAAUC,GACvD,OAAsB,IAAfC,EAAIrX,OAAe,KAAOqX,EAAI,IAG/B,YAAAC,4BAAV,SAAsCH,EAAmBC,GACrD,OAAO9N,MAAMC,KAAK4N,EAAS3N,iBAAiB4N,IAAQ7E,QAAO,SAAAlO,GAAM,OAAAA,EAAGkT,aAAeJ,MAG7E,YAAAK,gBAAV,WACI,IAAMrB,EAAS,IAAI,EAAAsB,WAMnB,OALAtB,EAAOuB,UAAW,EAClBvB,EAAOwB,MAAQ,GACfxB,EAAOyB,OAAS,GAChBzB,EAAO0B,MAAQ,IAAI,EAAAC,UACnB3B,EAAO5L,KAAO,EAAAwN,WAAWC,MAClB7B,GAGD,YAAA8B,cAAV,SAAwB9B,GACN,MAAVA,IAGAA,EAAO5L,OAAS,EAAAwN,WAAWC,QAC3B7B,EAAO0B,MAAQ,MAEf7T,KAAK+N,mBAAmBoE,EAAOtU,QAC/BsU,EAAOtU,KAAO,MAEdmC,KAAK+N,mBAAmBoE,EAAOwB,OAC/BxB,EAAOwB,MAAQ,KAEfxB,EAAOwB,MAAQxB,EAAOwB,MAAMpH,OAEX,MAAjB4F,EAAOyB,QAA2C,IAAzBzB,EAAOyB,OAAO5X,SACvCmW,EAAOyB,OAAS,QAId,YAAAM,WAAV,SAAqB/B,EAAoBvT,EAAaN,EAAeiI,GACjE,QADiE,IAAAA,MAAkB,EAAA4N,UAAUC,OACzFpU,KAAK+N,mBAAmBzP,GAM5B,GAHI0B,KAAK+N,mBAAmBnP,KACxBA,EAAM,IAENN,EAAMtC,OAAS,KAAOsC,EAAMiO,OAAOY,OAAOnN,KAAK4P,eAAiB,EAC5C,MAAhBuC,EAAOwB,QACPxB,EAAOwB,MAAQ,IAEnBxB,EAAOwB,OAAU/U,EAAM,KAAOoB,KAAK4Q,aAAatS,GAAO2M,KAAK,MAAQ,SACjE,CACkB,MAAjBkH,EAAOyB,SACPzB,EAAOyB,OAAS,IAEpB,IAAMS,EAAQ,IAAI,EAAAC,UAClBD,EAAM9N,KAAOA,EACb8N,EAAMxW,KAAOe,EACbyV,EAAM/V,MAAQA,EACd6T,EAAOyB,OAAOtX,KAAK+X,KAIjB,YAAAE,cAAV,SAAwB1X,EAAsB2X,GAC1C,IAAIC,EAAc5X,EAAOiW,QAAQ9W,OAC3B0Y,GAAa1U,KAAK+N,mBAAmByG,GACvCG,EAAYD,EAEhB,GAAIA,EACA,IAAK,IAAI5Y,EAAI,EAAGA,EAAIe,EAAOiW,QAAQ9W,OAAQF,IACvC,GAAIe,EAAOiW,QAAQhX,GAAG+B,OAAS2W,EAAY,CACvCG,GAAY,EACZF,EAAc3Y,EACd,MAKZ,GAAI6Y,EAAW,CACX,IAAM5B,EAAI,IAAI,EAAA6B,WACd7B,EAAElV,KAAO2W,EACT3X,EAAOiW,QAAQxW,KAAKyW,GAEpB2B,GACA7X,EAAO8V,oBAAoBrW,KAAK,CAACO,EAAOgY,QAAQ7Y,OAAQyY,KAItD,YAAAK,sBAAV,SAAgC3C,GACxBA,EAAO5L,OAAS,EAAAwN,WAAWC,OAAShU,KAAK+N,mBAAmBoE,EAAO0B,MAAMkB,WACzE/U,KAAK+N,mBAAmBoE,EAAO0B,MAAMmB,YACf,MAArB7C,EAAO0B,MAAMoB,MAA6C,IAA7B9C,EAAO0B,MAAMoB,KAAKjZ,UAChDmW,EAAO5L,KAAO,EAAAwN,WAAWmB,WACzB/C,EAAOgD,WAAa,IAAI,EAAAC,eACxBjD,EAAOgD,WAAW5O,KAAO,EAAA8O,eAAeC,UAGpD,EAhWA,GAAsB,EAAAC,gB,oGCpBtB,iBACI,KAAAC,SAAU,EAEV,KAAAX,QAAwB,GACxB,KAAA/B,QAAwB,GACxB,KAAAH,oBAA0C,GAC1C,KAAAE,YAAgC,GAChC,KAAAD,wBAA8C,IAPrC,EAAA6C,gB,sGCJb,mBAAsB,EAAAC,gB,4GCAtB,W,OAKA,2B,OAIuC,YAAAC,QAAnC,SAA2CC,GACvCA,EAAOC,kB,iCAFFC,I,iCAAAA,EAAkB,mE,yCAAlB,mB,EAHb,GAGa,EAAAA,sB,+DAAAA,EAAkB,E,KAH9B,EAAAjV,U,MAAU,CACPC,SAAU,qB,MAGyB6U,QAAO,E,KAAzC,EAAAI,a,MAAa,QAAS,CAAC,gB,sGCT5B,mBAAsB,EAAAC,kB,4GCkBtB,mBAAsB,EAAAC,sB,kGClBtB,SAAYlC,GACR,qBACA,+BACA,mBACA,2BAJJ,CAAY,EAAAA,aAAA,EAAAA,WAAU,M,0GCOtB,mBAAsB,EAAAmC,qB,qGCDtB,mBAAsB,EAAAC,e,8GCNtB,W,OAOA,aAUI,WAAoB9V,EAAwBC,GAAxB,KAAAD,KAAwB,KAAAC,W,OAN5C,sBAAa,+BAAgB,C,IAA7B,SAA8B8V,GAC1BpW,KAAKqW,gBAAgC,KAAdD,IAAkC,IAAdA,G,gCAO/C,YAAA5V,SAAA,WACQR,KAAKqW,kBAAoBrW,KAAKK,GAAGI,cAAcC,aAAa,iBAC5DV,KAAKM,SAASK,aAAaX,KAAKK,GAAGI,cAAe,eAAgB,OAEjET,KAAKK,GAAGI,cAAcC,aAAa,mBACpCV,KAAKM,SAASK,aAAaX,KAAKK,GAAGI,cAAe,iBAAkB,QAEnET,KAAKK,GAAGI,cAAcC,aAAa,gBACpCV,KAAKM,SAASK,aAAaX,KAAKK,GAAGI,cAAe,cAAe,QAEhET,KAAKK,GAAGI,cAAcC,aAAa,eACpCV,KAAKM,SAASK,aAAaX,KAAKK,GAAGI,cAAe,aAAc,SAE/DT,KAAKK,GAAGI,cAAcC,aAAa,cACpCV,KAAKM,SAASK,aAAaX,KAAKK,GAAGI,cAAe,YAAa,a,iCAvB9D6V,GAAsB,qE,iCAAtBA,EAAsB,sF,EAHnC,GAGa,EAAAA,0B,+DAAAA,EAAsB,E,KAHlC,EAAAzV,U,MAAU,CACPC,SAAU,0B,6DAGGyV,iBAAgB,E,KAA5B,EAAAvV,W,kHCXL,W,OAKA,2B,OAIuC,YAAA2U,QAAnC,SAA2CC,GACvCA,EAAOvQ,mB,iCAFFmR,I,iCAAAA,EAAiB,kE,yCAAjB,mB,EAHb,GAGa,EAAAA,qB,+DAAAA,EAAiB,E,KAH7B,EAAA3V,U,MAAU,CACPC,SAAU,oB,MAGyB6U,QAAO,E,KAAzC,EAAAI,a,MAAa,QAAS,CAAC,gB,mGCJ5B,mBAAsB,EAAAU,e,qGCGtB,mBAAsB,EAAAC,iB,sGCLtB,iBACI,KAAAC,gBAA2B,MADT,EAAAC,iB,6GCHtB,WAMA,Q,OAEA,aAUI,WAAoBvW,GAAA,KAAAA,K,OANpB,sBAAa,2BAAY,C,IAAzB,SAA0B+V,GACtBpW,KAAK6W,UAA0B,KAAdT,IAAkC,IAAdA,G,gCAOzC,YAAA5V,SAAA,YACS,EAAAwH,MAAMO,iBAAmBvI,KAAK6W,WAC/B7W,KAAKK,GAAGI,cAAcqW,S,iCAXrBC,GAAkB,oC,iCAAlBA,EAAkB,0E,EAH/B,GAGa,EAAAA,sB,+DAAAA,EAAkB,E,KAH9B,EAAAlW,U,MAAU,CACPC,SAAU,sB,0CAGGkW,aAAY,E,KAAxB,EAAAhW,W,qGCZL,W,OAUA,2B,OAII,YAAArB,UAAA,SAAUsX,GACN,OAAY,MAARA,EACO,KAGS,MAAbA,EAAKpZ,MAAqC,KAArBoZ,EAAKpZ,KAAK0O,OAAgB0K,EAAKC,MAAQD,EAAKpZ,M,iCANnEsZ,I,6CAAAA,EAAY,U,EAHzB,GAGa,EAAAA,gB,+DAAAA,EAAY,E,KAHxB,EAAAjX,K,MAAK,CACFrC,KAAM,e,gHCXV,SAAYuZ,GACR,yDACA,uCACA,6CACA,6BACA,+BACA,6CACA,iCACA,iCACA,qCATJ,CAAY,EAAAA,aAAA,EAAAA,WAAU,M,wGCAtB,8BAkCa,KAAAC,mBAA6BC,EAAiBD,mBAC9C,KAAAE,aAAuBD,EAAiBC,aACxC,KAAAC,+BAAyCF,EAAiBE,+BAC1D,KAAAC,0BAAoCH,EAAiBG,0BACrD,KAAAC,kBAA4BJ,EAAiBI,kBAC7C,KAAAC,uBAAiCL,EAAiBK,uBAClD,KAAAC,uBAAiCN,EAAiBM,uBAClD,KAAAC,4BAAsCP,EAAiBO,4BACvD,KAAAC,6BAAuCR,EAAiBQ,6BACxD,KAAAC,gBAA0BT,EAAiBS,gBAC3C,KAAAC,sBAAgCV,EAAiBU,sBACjD,KAAAC,cAAwBX,EAAiBW,cACzC,KAAAC,gBAA0BZ,EAAiBY,gBAC3C,KAAAC,oBAA8Bb,EAAiBa,oBAC/C,KAAAC,UAAoBd,EAAiBc,UACrC,KAAAC,SAAmBf,EAAiBe,SACpC,KAAAC,sBAAgChB,EAAiBgB,sBACjD,KAAAC,wBAAkCjB,EAAiBiB,wBACnD,KAAAC,wBAAkClB,EAAiBkB,wBACnD,KAAAC,6BAAuCnB,EAAiBmB,6BACxD,KAAAC,gBAA0BpB,EAAiBoB,gBAC3C,KAAAC,gBAA0BrB,EAAiBqB,gBAC3C,KAAAC,aAAuBtB,EAAiBsB,aACxC,KAAAC,kBAA4BvB,EAAiBuB,kBAC7C,KAAAC,mBAA6BxB,EAAiBwB,mBAC9C,KAAAC,mBAA6BzB,EAAiByB,mBAC9C,KAAAC,YAAsB1B,EAAiB0B,YACvC,KAAAC,mBAA6B3B,EAAiB2B,mBAC9C,KAAAC,cAAwB5B,EAAiB4B,cACzC,KAAAC,4BAAsC7B,EAAiB6B,4BACvD,KAAAC,8BAAwC9B,EAAiB8B,8BACtE,OAhEoB,EAAA/B,mBAA6B,kBAC7B,EAAAE,aAAuB,YACvB,EAAAC,+BAAyC,8BACzC,EAAA6B,sCAAgD,qCAChD,EAAA5B,0BAAoC,yBACpC,EAAAC,kBAA4B,iBAC5B,EAAAC,uBAAiC,sBACjC,EAAAC,uBAAiC,sBACjC,EAAAC,4BAAsC,2BACtC,EAAAC,6BAAuC,4BACvC,EAAAC,gBAA0B,aAC1B,EAAAC,sBAAgC,qBAChC,EAAAC,cAAwB,aACxB,EAAAC,gBAA0B,eAC1B,EAAAC,oBAA8B,mBAC9B,EAAAC,UAAoB,SACpB,EAAAC,SAAmB,QACnB,EAAAC,sBAAgC,qBAChC,EAAAC,wBAAkC,0BAClC,EAAAC,wBAAkC,0BAClC,EAAAC,6BAAuC,+BACvC,EAAAC,gBAA0B,kBAC1B,EAAAC,gBAA0B,kBAC1B,EAAAC,aAAuB,eACvB,EAAAC,kBAA4B,oBAC5B,EAAAC,mBAA6B,kBAC7B,EAAAC,mBAA6B,kBAC7B,EAAAC,YAAsB,WACtB,EAAAC,mBAA6B,YAC7B,EAAAC,cAAwB,gBACxB,EAAAC,4BAAsC,8BACtC,EAAAC,8BAAwC,gCAiC5D,EAjEA,GAAa,EAAA9B,oB,oGCEb,mBAAsB,EAAAgC,gB,u+CCFtB,WAWA,GALA,MAEA,MACA,MAEA,O,gFAEA,aAkBI,WAAmB,EAAiC,EACxC,GADO,iBAAiC,6BACxC,oBAXH,UAAO,GACP,eAAY,EACZ,eAAY,UACZ,cAAW,GACX,gBAAa,IACb,cAAU,EACV,aAAS,E,OAOlB,gCACS,KAAK,SACN,KAAK,YAIb,mCACQ,KAAK,SACL,KAAK,YAIC,qBAAd,W,gHAC4B,SAAM,KAAK,aAAa,IAAa,oB,cAArC,UACa,MAAd,KAAK,MACN,GAAM,KAAK,sBAAsB,KAAK,KAAK,MAAM,cAAc,OAAQ,QADzF,M,cACM,EAAY,SACZ,EAAO,QAAM,gBAAgB,GAAW,cAC9C,KAAK,IAAM,mCAAqC,EAAO,MAAQ,KAAK,KAAO,gB,aAEvE,EAAgB,KACd,EAAY,KAAK,KAAK,cAExB,KAAK,UAAY,IACjB,EAAQ,KAAK,gBAAgB,EAAW,KAAK,YAEpC,MAAT,IACA,EAAQ,KAAK,qBAAqB,EAAW,KAAK,YAIlD,EAAM,MAAM,QAAM,2BAClB,EAAQ,EAAM,MAAM,QAAM,yBAAyB,IAGjD,EAAU,KAAK,YAAY,GAC3B,EAAQ,KAAK,cAAc,IAC3B,EAAM,KAAK,OAAO,KAAK,KAAM,IAC/B,YAAY,GACV,EAAO,OAAO,SAAS,cAAc,OAAO,YAAY,GAAK,UAC7D,EAAU,OAAO,KAAK,SAAS,mBAAmB,KACxD,KAAK,IAAM,6BAA+B,E,mCAI1C,0BAAR,SAAsB,GAElB,IADA,IAAI,EAAO,EACF,EAAI,EAAG,EAAI,EAAI,OAAQ,IAE5B,EAAO,EAAI,WAAW,KAAO,GAAQ,GAAK,GAE9C,IAAI,EAAQ,IACZ,IAAS,EAAI,EAAG,EAAI,EAAG,IAAK,CAGxB,IAAU,MADK,GAAa,EAAJ,EAAU,KACX,SAAS,KAAK,QAAQ,GAEjD,OAAO,GAGH,4BAAR,SAAwB,EAAc,GAClC,IAAM,EAAQ,EAAK,MAAM,KACzB,GAAI,EAAM,OAAS,EAAG,CAElB,IADA,IAAI,EAAO,GACF,EAAI,EAAG,EAAI,EAAO,IACvB,GAAQ,KAAK,qBAAqB,EAAM,GAAI,GAEhD,OAAO,EAEX,OAAO,MAGH,mBAAR,SAAe,EAAc,GACzB,IAAM,EAAS,OAAO,SAAS,cAAc,OAQ7C,OAPA,EAAO,aAAa,QAAS,8BAC7B,EAAO,aAAa,iBAAkB,QACtC,EAAO,aAAa,QAAS,EAAK,YAClC,EAAO,aAAa,SAAU,EAAK,YACnC,EAAO,MAAM,gBAAkB,EAC/B,EAAO,MAAM,MAAQ,EAAO,KAC5B,EAAO,MAAM,OAAS,EAAO,KACtB,GAGH,wBAAR,SAAoB,GAChB,IAAM,EAAU,OAAO,SAAS,cAAc,QAY9C,OAXA,EAAQ,aAAa,cAAe,UACpC,EAAQ,aAAa,IAAK,OAC1B,EAAQ,aAAa,IAAK,OAC1B,EAAQ,aAAa,KAAM,UAC3B,EAAQ,aAAa,iBAAkB,QACvC,EAAQ,aAAa,OAAQ,KAAK,WAClC,EAAQ,aAAa,cAAe,kHAEpC,EAAQ,YAAc,EACtB,EAAQ,MAAM,WAAa,KAAK,WAAW,WAC3C,EAAQ,MAAM,SAAW,KAAK,SAAW,KAClC,GAGH,iCAAR,SAA6B,EAAa,GACtC,IAAM,EAAa,EAAI,MAAM,OAC7B,OAAqB,MAAd,EAAqB,EAAW,MAAM,EAAG,GAAO,KAAK,IAAM,I,iCArH7D,GAAe,uH,iCAAf,EAAe,sTAlB5B,uB,MAA2D,wCAAtD,sFAAqD,6C,2CAa1D,GAKa,qB,+DAAA,EAAe,E,KAL3B,Y,MAAU,CACP,SAAU,aACV,SAAU,6H,iGAID,KAAI,E,KAAZ,UACQ,MAAK,E,KAAb,UACQ,KAAI,E,KAAZ,UACQ,UAAS,E,KAAjB,UACQ,UAAS,E,KAAjB,UACQ,SAAQ,E,KAAhB,UACQ,WAAU,E,KAAlB,UACQ,QAAO,E,KAAf,UACQ,OAAM,E,KAAd,a,88CC3BL,YAMA,2BA2DA,OA1Dc,YAAAC,iBAAV,SAA6CtM,EAAWuM,EAAcxT,EAClEyT,EAA2BC,GAC3B,IAAK,IAAMjM,UADgB,IAAAiM,MAAA,IACR1T,EACf,GAAKA,EAAI7J,eAAesR,GAAxB,CAIA,IAAMkM,EAAUH,EAASxT,EAAIyH,IAASA,IACb,IAArBgM,GAA6BC,EAAWhN,QAAQe,IAAS,EACxDR,EAAeQ,GAAQkM,GAAoB,KAE3C1M,EAAeQ,GAAQkM,EAAU,IAAI,EAAAC,UAAUD,GAAW,OAI7D,YAAAE,eAAV,SAA2C5M,EAAWuM,EAAcxT,EAAU8T,GAC1E,IAAK,IAAMrM,UAD+D,IAAAqM,MAAA,IACvD9T,EACf,GAAKA,EAAI7J,eAAesR,GAAxB,CAIA,IAAMkM,EAAW1M,EAAgBjH,EAAIyH,IAASA,GAC1CqM,EAAiBpN,QAAQe,IAAS,EACjC+L,EAAgB/L,GAAmB,MAAXkM,EAAkBA,EAAU,KAEpDH,EAAgB/L,GAAmB,MAAXkM,EAAmBA,EAAsBI,gBAAkB,OAKhF,YAAAC,WAAhB,SAA2CC,EAAcjU,EAAUkU,EAC/Dtb,G,YAAA,IAAAA,MAAA,M,6FAIA,IAAW6O,KAHL0M,EAAW,GACXC,EAAYpa,KAECgG,EACVA,EAAI7J,eAAesR,IAKxB,SAAW4M,GACP,IAAMpb,EAAIqb,QAAQC,UAAUjZ,MAAK,WAC7B,IAAMkZ,EAAUxU,EAAIqU,IAAYA,EAChC,OAAID,EAAKI,GACEJ,EAAKI,GAASC,QAAQP,EAAOtb,GAEjC,QACR0C,MAAK,SAACoZ,GACJT,EAAkBI,GAAWK,KAElCP,EAAS7d,KAAK2C,GAVlB,CAWGwO,GAGP,SAAM6M,QAAQK,IAAIR,I,OAClB,OADA,SACO,CAAP,EAAOF,WAEf,EA3DA,G,gICNA,mBAAa,EAAAW,+B,mGCEb,mBAAsB,EAAAC,c,iHCAtB,mBAAsB,EAAAC,uB,g+CCFtB,aAIA,QAIA,aAQI,WAAYC,EAAgDvf,EAAewf,EAAaC,GACpF,GAAY,MAARzf,EAAc,CAEd,IAAM0f,EAAUH,EAkBhB,OAfI/a,KAAK+Z,gBADC,MAANiB,EACuBE,EAAU,IAAMF,EAAK,IAAMxf,EAE3B0f,EAAU,IAAM1f,EAIhC,MAAPyf,IACAjb,KAAK+Z,iBAAoB,IAAMkB,GAGnCjb,KAAKmb,eAAiBD,EACtBlb,KAAKxE,KAAOA,EACZwE,KAAKgb,GAAKA,OACVhb,KAAKib,IAAMA,GAMf,GADAjb,KAAK+Z,gBAAkBgB,EAClB/a,KAAK+Z,gBAAV,CAIA,IAAMqB,EAAepb,KAAK+Z,gBAAgB3M,MAAM,KAC5CiO,EAAsB,KAE1B,GAA4B,IAAxBD,EAAapf,OACb,IACIgE,KAAKmb,eAAiB7R,SAAS8R,EAAa,GAAI,MAChDC,EAAYD,EAAa,GAAGhO,MAAM,KACpC,MAAO3L,GACL,YAGJ4Z,EAAYrb,KAAK+Z,gBAAgB3M,MAAM,KACvCpN,KAAKmb,eAAsC,IAArBE,EAAUrf,OAAe,EAAAsf,eAAeC,yBAC1D,EAAAD,eAAeE,cAGvB,OAAQxb,KAAKmb,gBACT,KAAK,EAAAG,eAAeC,yBACpB,KAAK,EAAAD,eAAeG,yBAChB,GAAyB,IAArBJ,EAAUrf,OACV,OAGJgE,KAAKgb,GAAKK,EAAU,GACpBrb,KAAKxE,KAAO6f,EAAU,GACtBrb,KAAKib,IAAMI,EAAU,GACrB,MACJ,KAAK,EAAAC,eAAeE,cAChB,GAAyB,IAArBH,EAAUrf,OACV,OAGJgE,KAAKgb,GAAKK,EAAU,GACpBrb,KAAKxE,KAAO6f,EAAU,GACtB,MACJ,KAAK,EAAAC,eAAeI,uBACpB,KAAK,EAAAJ,eAAeK,qBAChB,GAAyB,IAArBN,EAAUrf,OACV,OAGJgE,KAAKxE,KAAO6f,EAAU,GACtB,MACJ,QACI,SA2BhB,OAvBU,YAAAZ,QAAN,SAAcP,EAAetb,G,YAAA,IAAAA,MAAA,M,6FACzB,GAA2B,MAAvBoB,KAAK4b,eACL,MAAO,CAAP,EAAO5b,KAAK4b,gBAKhB,KADMC,EAAoB,EAAA7T,MAAMW,OAAemT,2BAI3C,MAAM,IAAIvU,MAAM,qDAFhBwU,EAAgBF,EAAiBG,mB,8CAMtB,MAAPpd,EAAA,MACM,GAAMmd,EAAcE,UAAU/B,I,OAApCtb,EAAM,S,iBAEY,OAAtB,EAAAoB,KAAsB,GAAM+b,EAAcG,cAAclc,KAAMpB,I,cAA9D,EAAKgd,eAAiB,S,6BAEtB5b,KAAK4b,eAAiB,0B,aAE1B,MAAO,CAAP,EAAO5b,KAAK4b,wBAEpB,EA5GA,GAAa,EAAAhC,a,oGCNb,mBAAsB,EAAAuC,gB,gGCEtB,iBAYI,WAAYxe,GAXZ,KAAAye,eAAyB,KACzB,KAAA5J,SAAmB,KACnB,KAAAC,QAAkB,KAClB,KAAA4J,KAAe,KAGP,KAAAC,OAAiB,KACjB,KAAAC,QAAkB,KAClB,KAAAC,UAAoB,KA8DhC,OAvDI,sBAAI,yBAAU,C,IAAd,WACI,OAAoB,MAAbxc,KAAKqc,KAAe,IAAII,OAAOzc,KAAKqc,KAAKrgB,QAAU,M,gCAG9D,sBAAI,2BAAY,C,IAAhB,WACI,OAAsB,MAAfgE,KAAK0c,OAAiB,IAAID,OAAOzc,KAAK0c,OAAO1gB,QAAU,M,gCAGlE,sBAAI,oBAAK,C,IAAT,WACI,OAAOgE,KAAKsc,Q,IAEhB,SAAUhe,GACN0B,KAAKsc,OAAShe,EACd0B,KAAKwc,UAAY,M,gCAGrB,sBAAI,qBAAM,C,IAAV,WACI,OAAOxc,KAAKuc,S,IAEhB,SAAWje,GACP0B,KAAKuc,QAAUje,EACf0B,KAAKwc,UAAY,M,gCAGrB,sBAAI,uBAAQ,C,IAAZ,WACI,GAAsB,MAAlBxc,KAAKwc,YACLxc,KAAKwc,UAAYxc,KAAK2c,MACH,MAAf3c,KAAK0c,QAAkB1c,KAAK0c,OAAO1gB,QAAU,GAAG,CAC1B,MAAlBgE,KAAKwc,WAAwC,KAAnBxc,KAAKwc,UAC/Bxc,KAAKwc,WAAa,KAElBxc,KAAKwc,UAAY,GAIrB,IAAMI,EAAQ5c,KAAK0c,OAAO1gB,QAAU,GAAgD,MAA3CgE,KAAK0c,OAAOxN,MAAM,IAAIrD,OAAO,WAAqB,EAAI,EAC/F7L,KAAKwc,WAAc,IAAMxc,KAAK0c,OAAOnT,OAAOvJ,KAAK0c,OAAO1gB,OAAS4gB,GAGzE,OAAO5c,KAAKwc,W,gCAGhB,sBAAI,yBAAU,C,IAAd,WACI,IAAKxc,KAAKwS,WAAaxS,KAAKyS,QACxB,OAAO,KAGX,IAAIoK,EAAuB,MAAjB7c,KAAKwS,UAAoB,IAAMxS,KAAKwS,UAAUnT,OAAO,GAAK,KAEpE,OADAwd,GAAQ,OAAyB,MAAhB7c,KAAKyS,QAAkBzS,KAAK8c,WAAW9c,KAAKyS,SAAW,S,gCAIpE,YAAAqK,WAAR,SAAmBxK,GACf,OAAuB,IAAhBA,EAAKtW,OAAe,KAAOsW,EAAOA,GAEjD,EAvEA,GAAa,EAAAyK,Y,kHCDb,mBAAsB,EAAAC,yB,yGCHtB,W,GAEA,KACA,K,oBAIA,aAEI,WAAoBtd,EAAkCud,GAAlC,KAAAvd,cAAkC,KAAAud,uB,OAEtD,YAAAlb,UAAA,SAAUvG,GACN,IAAM0hB,EAAsBld,KAAKN,YAAYnB,EAAE,mBAC3CuS,EAAmB,GAoBvB,OAlBY,MAARtV,GAAgC,iBAATA,EACvBsV,EAAOxU,KAAKd,GACG,MAARA,GAAgC,iBAATA,EAC9BsV,EAAOxU,KAAK4gB,GACoB,MAAzB1hB,EAAK2hB,iBACZrM,EAASA,EAAOsM,OAAQ5hB,EAAuB6hB,kBAE/CvM,EAAOxU,KAAKd,EAAKyV,QAAUzV,EAAKyV,QAAUiM,GAGxB,IAAlBpM,EAAO9U,OACPgE,KAAKid,qBAAqBK,UAAU,QAAStd,KAAKN,YAAYnB,EAAE,iBAAkBuS,EAAO,IAClFA,EAAO9U,OAAS,GACvBgE,KAAKid,qBAAqBK,UAAU,QAAStd,KAAKN,YAAYnB,EAAE,iBAAkBuS,EAAQ,CACtFyM,QAAS,IAAOzM,EAAO9U,SAIxB8U,G,iCAzBF0M,GAAiB,+D,oCAAjBA,EAAiB,QAAjBA,EAAiB,O,EAD9B,GACa,EAAAA,qB,+DAAAA,EAAiB,E,KAD7B,EAAAnX,c,qLCDD,iBAGI,WAAYvH,GAFZ,KAAAyH,KAAuB,KAGdzH,IAILkB,KAAKuG,KAAOzH,EAAEyH,MAMtB,OAHI,sBAAI,uBAAQ,C,IAAZ,WACI,OAAO,M,gCAEf,EAdA,GAAa,EAAA6O,kB,sGCNb,SAAYC,GACR,yBADJ,CAAY,EAAAA,iBAAA,EAAAA,eAAc,M,wGCA1B,mBAAsB,EAAAoI,gB,o+CCAtB,WAMA,QAOA,GALA,OAEA,MACA,MAEA,OAEA,Q,+DCfsC,uB,6BAAmB,0DAAd,6C,wBAAwF,mB,6BAAG,uDDiBtI,IAAMC,EAAe,CACjB,WAAYvT,OAAOC,aAAa,OAChC,mBAAoBD,OAAOC,aAAa,OACxC,eAAgBD,OAAOC,aAAa,OACpC,iBAAkBD,OAAOC,aAAa,OACtC,aAAcD,OAAOC,aAAa,OAClC,WAAYD,OAAOC,aAAa,QAGpC,aAaI,WAAYuT,EAAkDC,GAAA,KAAAA,eAC1D5d,KAAK6d,SAAWF,EAAmBG,c,OAGjC,YAAA3c,YAAN,W,gGAK0B,OAFtBnB,KAAK+d,MAAQ,KACb/d,KAAKge,cAAgB,KACrB,EAAAhe,KAAsB,GAAMA,KAAK4d,aAAa1f,IAAa,EAAAoZ,iBAAiBI,oB,cAA5E,EAAKuG,cAAiB,SACtBje,KAAKke,O,YAGT,sBAAI,uBAAQ,C,IAAZ,WACI,OAAOR,EAAQ1d,KAAK2G,O,gCAGd,YAAAuX,KAAV,WACI,OAAQle,KAAKmS,OAAO5L,MAChB,KAAK,EAAAwN,WAAWC,MACZhU,KAAK2G,KAAO,WACZ3G,KAAKme,eACL,MACJ,KAAK,EAAApK,WAAWmB,WACZlV,KAAK2G,KAAO,mBACZ,MACJ,KAAK,EAAAoN,WAAWqK,KACZpe,KAAK2G,KAAO,iBACZ,MACJ,KAAK,EAAAoN,WAAWsK,SACZre,KAAK2G,KAAO,iBAOhB,YAAAwX,aAAR,WACI,GAAIne,KAAKmS,OAAO0B,MAAMvC,IAAK,CACvB,IAAIgN,EAActe,KAAKmS,OAAO0B,MAAMvC,IAChCiN,GAAY,EAehB,GAb6C,IAAzCD,EAAY5R,QAAQ,kBACpB1M,KAAK2G,KAAO,aACZ3G,KAAK+d,MAAQ,MAC+B,IAArCO,EAAY5R,QAAQ,cAC3B1M,KAAK2G,KAAO,WACZ3G,KAAK+d,MAAQ,MACN/d,KAAKie,eAAgD,IAAhCK,EAAY5R,QAAQ,QAAiB4R,EAAY5R,QAAQ,MAAQ,GAC7F4R,EAAc,UAAYA,EAC1BC,GAAY,GACLve,KAAKie,eACZM,EAA4C,IAAhCD,EAAY5R,QAAQ,SAAiB4R,EAAY5R,QAAQ,MAAQ,GAG7E1M,KAAKie,cAAgBM,EACrB,IACIve,KAAK+d,MAAQ/d,KAAK6d,SAAW,IAAM,EAAA7V,MAAM+D,YAAYuS,GAAe,YACpEte,KAAKge,cAAgB,sBACvB,MAAOvc,UAGbzB,KAAK+d,MAAQ,M,iCAvEZS,GAAa,gF,iCAAbA,EAAa,qRC9B1B,4BAAsC,8CAA6F,4CAAwE,iCAAO,iB,MAArH,4DAA0E,gE,+DD0BvK,GAIa,EAAAA,iB,+DAAAA,EAAa,E,KAJzB,EAAAvX,U,MAAU,CACPnG,SAAU,iBACVoG,YAAa,2B,wEAGJiL,OAAQ,CAAF,C,KAAd,EAAAnR,W,4GE7BL,mBAAsB,EAAAyd,iB,gdCFtB,WAEA,U,OAEA,2B,sDACwC,O,+BAA3BC,I,oCAAAA,EAAkB,QAAlBA,EAAkB,O,EAD/B,CACwC,sBAA3B,EAAAA,qB,8BAAAA,I,+DAAAA,EAAkB,E,KAD9B,EAAArY,a,yHCJD,SAAYsY,GACR,qCACA,qBACA,iBACA,yBACA,iBACA,2BACA,yCACA,2BARJ,CAAY,EAAAA,wBAAA,EAAAA,sBAAqB,M,yGCAjC,mBAAsB,EAAAC,e,sGCAtB,W,OAKA,2B,OAII,YAAAjf,UAAA,SAAUkf,EAAcC,EAAoBC,EAAgBC,EAAgBC,GACxE,OAAa,MAATJ,GAAkC,IAAjBA,EAAM7iB,OAChB,GAGO,MAAd8iB,GAAsBA,EAAW9iB,OAAS,EACnC6iB,GAGXC,EAAaA,EAAWvS,OAAO5E,cACxBkX,EAAMtQ,QAAO,SAAAzS,GAChB,OAAa,MAATijB,GAA6B,MAAZjjB,EAAEijB,IAAkBjjB,EAAEijB,GAAO/U,WAAWrC,cAAc+E,QAAQoS,IAAe,IAGrF,MAATE,GAA6B,MAAZljB,EAAEkjB,IAAkBljB,EAAEkjB,GAAOhV,WAAWrC,cAAc+E,QAAQoS,IAAe,GAGrF,MAATG,GAA6B,MAAZnjB,EAAEmjB,IAAkBnjB,EAAEmjB,GAAOjV,WAAWrC,cAAc+E,QAAQoS,IAAe,Q,iCAlBjGI,I,2CAAAA,EAAU,U,EAHvB,GAGa,EAAAA,c,+DAAAA,EAAU,E,KAHtB,EAAAhf,K,MAAK,CACFrC,KAAM,a,m/CCNV,WAMA,SAKA,GAHA,KACA,KAEA,Q,sHCXga,4BAAkE,8CAAoH,mGAAoB,oFAAxI,iBAAoK,+CAAmD,sCAA0D,Y,mBAAwB,iBAAS,iC,iCAAtO,qEAAuC,oBAA8J,8E,mDAAwC,6BAA+D,+CAAiH,mGAAoB,oFAArI,iBAAiK,+CAAqD,sCAAsD,sBAAM,iBAAS,iC,iCAA7M,gEAAkC,qB,mDAAkL,6BAA+D,+CAAiH,mGAAoB,oFAArI,iBAAiK,+CAAqD,sCAAsD,Y,mBAA0B,iBAAS,iC,iCAAjO,gEAAkC,oBAA4J,gF,mDAAv8C,4BAA8D,4CAAgD,8CAA6G,kGAAoB,mFAAjI,iBAA6J,8CAAmD,qCAA2D,Y,oBAAuB,iBAAS,kCAAO,iDAA2X,gDAAiW,iDAAqX,kC,gCAAvzC,8DAAgC,oBAA+J,6EAAuF,gDAAsX,kDAAiW,mD,sBAAiV,6BAAwE,6CAAkB,6CAA+B,+CAAwC,Y,mBAAmB,iBAAS,yCAAqF,kCAAO,+CAAsD,0CAAwH,kCAAO,+CAA+B,iDAAwC,a,oBAAuB,iBAAS,0CAAqF,kCAAO,+CAA+B,+CAAqB,iDAAsC,a,oBAA0B,iBAAS,6C,oBAA4J,wCAA2D,kCAAK,kCAAO,0CAAkF,kCAAO,kCAAO,4C,MAAh7B,gEAAoX,sEAAsN,iFAAwJ,yF,mDAA8N,6BAA+E,qD,mBAAoE,Y,sCAAuF,iBAAe,6CAAkB,8CAA+B,iDAA4B,a,oBAA0B,iBAAS,iDAAkF,+GAAlF,iBAA+I,kCAAO,+CAA+B,iDAA4B,a,oBAA0B,iBAAS,iDAAkF,+GAAlF,iBAA+I,kCAAO,+CAA+B,iDAAiC,a,oBAA8B,iBAAS,iDAA4F,oHAA5F,iBAA6I,kCAAO,+CAA+B,iDAAiC,a,oBAA4B,iBAAS,kDAAiF,oHAAiD,kDAAiB,a,oBAAyB,iBAAU,kDAAwB,a,oBAAmC,iBAAU,kDAA2B,a,oBAAsC,iBAAU,kCAAU,kCAAO,kCAAO,2C,gCAAt0C,wFAAwC,0JAAmL,yEAAqH,6DAA+H,yEAAqH,6DAAoI,6EAAmI,kEAAwH,2EAAsH,kEAAkE,+EAA2D,kFAAwE,sF,sBAAwF,6BAA0E,6CAAmB,wCAAkD,+CAA0B,Y,mBAA8B,iBAAS,iCAAO,4C,MAA9C,4E,sBAA8D,6BAA0E,qDAA0B,Y,mBAAkC,iBAAe,2C,MAAjD,wFDar2I,IAAMshB,EAAqB,CACvBC,KAAM,CACFC,MAAO,UACPC,WAAY,wHAEZC,SAAU,OACVC,cAAe,eAEnBC,QAAS,CACLJ,MAAO,YAITK,EAAuB,CACzB5I,MAAO,aACP6I,MAAO,WACPF,QAAS,cAGb,aAgCI,WAAoBxC,EAAoD2C,GAAxE,WAAoB,KAAA3C,uBAAoD,KAAA2C,aA3B/D,KAAAC,aAAc,EACd,KAAAC,aAAc,EACd,KAAAC,OAAS,EAAAC,kBAAkB5B,KAC3B,KAAA6B,UAAW,EACX,KAAAC,YAAa,EACb,KAAAC,YAAa,EAEtB,KAAAC,KAAY,CACRC,eAAgB,KAChBC,eAAgB,KAChBC,oBAAqB,KACrBC,oBAAqB,GACrBC,SAAU,MACVC,QAAS,MAGb,KAAAC,kBAAoB,EAAAX,kBAGZ,KAAAY,WAAkB,KAElB,KAAAC,OAAc,KACd,KAAAC,eAAsB,KACtB,KAAAC,wBAA+B,KAC/B,KAAAC,wBAA+B,KAC/B,KAAAC,qBAA4B,KAGhCjhB,KAAKkhB,aAAe/hB,OAAOiF,SAASW,cAAc,UAClD/E,KAAKkhB,aAAaC,IAAM,4BACxBnhB,KAAKkhB,aAAaE,OAAQ,EAC1BphB,KAAKkhB,aAAaG,OAAS,WACvB,EAAKR,OAAU1hB,OAAemiB,OAAuCrE,EAAqBsE,QACzD,EAAAC,aAAaC,cAA1C,EAAAD,aAAaE,eACjB,EAAKZ,eAAiB,EAAKD,OAAOc,WAClC,EAAKC,oBAET5hB,KAAK6hB,SAAW1iB,OAAOiF,SAASW,cAAc,UAC9C/E,KAAK6hB,SAASV,IAAM,iCACpBnhB,KAAK6hB,SAAST,OAAQ,E,OAG1B,YAAA5gB,SAAA,WACSR,KAAK8f,cACN9f,KAAKkgB,WAAalgB,KAAK+f,SAAW,EAAAC,kBAAkB8B,OACpD9hB,KAAKigB,SAAWjgB,KAAK+f,SAAW,EAAAC,kBAAkB+B,YAClD/hB,KAAKmgB,WAAangB,KAAK+f,SAAW,EAAAC,kBAAkBgC,QAExD7iB,OAAOiF,SAAS6d,KAAK3d,YAAYtE,KAAKkhB,cACjClhB,KAAKkgB,YACN/gB,OAAOiF,SAAS6d,KAAK3d,YAAYtE,KAAK6hB,WAI9C,YAAAK,YAAA,WACI/iB,OAAOiF,SAAS6d,KAAKnc,YAAY9F,KAAKkhB,cACtC/hB,OAAOgjB,YAAW,WACd7c,MAAMC,KAAKpG,OAAOiF,SAASoB,iBAAiB,WAAW6H,SAAQ,SAAAhN,GAC3D,GAAc,MAAVA,EAAG8gB,KAAe9gB,EAAG8gB,IAAIzU,QAAQ,WAAa,EAC9C,IACIvN,OAAOiF,SAASC,KAAKyB,YAAYzF,GACnC,gBAGX,KACEL,KAAKkgB,aACN/gB,OAAOiF,SAAS6d,KAAKnc,YAAY9F,KAAK6hB,UACtC1iB,OAAOgjB,YAAW,WACd7c,MAAMC,KAAKpG,OAAOiF,SAAS6d,KAAKzc,iBAAiB,WAAW6H,SAAQ,SAAAhN,GAChE,GAAc,MAAVA,EAAG8gB,KAAe9gB,EAAG8gB,IAAIzU,QAAQ,WAAa,EAC9C,IACIvN,OAAOiF,SAAS6d,KAAKnc,YAAYzF,GACnC,cAGV,IAAM+hB,EAAejjB,OAAOiF,SAAS6d,KAAK9c,cAAc,gCACxD,GAAoB,MAAhBid,EACA,IACIjjB,OAAOiF,SAAS6d,KAAKnc,YAAYsc,GACnC,aAEP,OAIX,YAAAC,aAAA,sBACIriB,KAAK4gB,WAAa,KAEd5gB,KAAK+f,SAAW,EAAAC,kBAAkB8B,OAClC3iB,OAAOgjB,YAAW,WACbhjB,OAAemjB,UAAUC,OAAO5jB,OAAO,CACpC6jB,cACI,EAAAhB,aAAaiB,gBACjBC,UAAW,uBACXC,sBAAuB,CAAC,UACxBC,OAAQ,CACJC,KAAM,QACNC,YAAa,CACTC,MAAO,MACPC,KAAM,SACNC,MAAO,OACP5D,MAAO,WAGhB,SAAC6D,EAAgBlgB,GACC,MAAbkgB,EAKJ,EAAKtC,WAAa5d,EAHdmgB,QAAQthB,MAAMqhB,QAKvB,KAEHljB,KAAK4hB,oBAIb,YAAAwB,mBAAA,sBACI,OAAO,IAAI9I,SAAQ,SAACC,EAAS8I,GACrB,EAAKtD,SAAW,EAAAC,kBAAkBgC,OAClCzH,EAAQ,CAAC,KAAM,EAAKwF,SACb,EAAKA,SAAW,EAAAC,kBAAkB8B,OACzC,EAAKlB,WAAW0C,uBAAuBhiB,MAAK,SAACiiB,GACzChJ,EAAQ,CAACgJ,EAAQC,MAAO,EAAKzD,YAC9B0D,OAAM,SAACC,GACNL,EAAOK,EAAIzS,YAER,EAAK8O,SAAW,EAAAC,kBAAkB5B,MAAQ,EAAK2B,SAAW,EAAAC,kBAAkB+B,cAC/E,EAAKhC,SAAW,EAAAC,kBAAkB5B,KAClC,EAAKwB,WAAW+D,mBAAmBriB,MAAK,SAAAsiB,GACpC,SAAK/C,OAAOgD,gBAAgBD,EAAc,EAAK7C,4BAC9Czf,MAAK,SAACzE,GACCA,EAAOgF,MACPwhB,EAAOxmB,EAAOgF,MAAMoP,SACbpU,EAAOinB,aAA6C,cAA9BjnB,EAAOinB,YAAYC,OAChDxJ,EAAQ,CAAC1d,EAAOinB,YAAYE,eAAgB,EAAKjE,SAEjDsD,OAIZ,EAAKxC,OAAOoD,YAAY,eAAgB,EAAK7D,MAAM9e,MAAK,SAACzE,GACjDA,EAAOgF,MACPwhB,EAAOxmB,EAAOgF,MAAMoP,SACbpU,EAAOqnB,OAA4B,MAAnBrnB,EAAOqnB,MAAMtkB,GACpC2a,EAAQ,CAAC1d,EAAOqnB,MAAMtkB,GAAI,EAAKmgB,SAE/BsD,YAQxB,YAAAc,wBAAA,SAAwBP,EAAsBQ,GAA9C,WACI,OAAO,IAAI9J,SAAc,SAACC,EAAS8I,GAC/B,IAAI,EAAKxD,aAA+C,MAAhC,EAAKkB,wBAA7B,CAOA,OAHgC,EAAKlB,YACjC,EAAKgB,OAAOgD,gBAAgBD,EAAc,EAAK7C,yBAC/C,EAAKF,OAAOgD,gBAAgBD,IACLtiB,MAAK,SAAOzE,GAAW,qC,yDAC1CA,EAAOgF,OACPwhB,EAAOxmB,EAAOgF,MAAMoP,S,OADpB,M,cAEOpU,EAAOwnB,eAAiD,cAAhCxnB,EAAOwnB,cAAcN,OAC7B,MAAnBK,EAAA,MACA,GAAMA,KAFH,M,OAEH,S,wBAEJ7J,I,aAEA8I,I,qCAfJA,QAqBJ,YAAAzB,iBAAR,sBACIziB,OAAOgjB,YAAW,WACV,EAAKtC,aAAe,EAAKE,SAAW,EAAAC,kBAAkB5B,OAClB,MAAhC,EAAK2C,0BACL,EAAKA,wBAA0B,EAAKD,eAAeniB,OAAO,aAAc,CACpEsG,MAAOka,EACPmF,QAAS5E,EACT6E,YAAa,MAGe,MAAhC,EAAKvD,0BACL,EAAKA,wBAA0B,EAAKF,eAAeniB,OAAO,aAAc,CACpEsG,MAAOka,EACPmF,QAAS5E,KAGgB,MAA7B,EAAKuB,uBACL,EAAKA,qBAAuB,EAAKH,eAAeniB,OAAO,UAAW,CAC9DsG,MAAOka,EACPmF,QAAS5E,EACT6E,YAAa,MAGrB,EAAKxD,wBAAwByD,MAAM,+BACnC,EAAKxD,wBAAwBwD,MAAM,+BACnC,EAAKvD,qBAAqBuD,MAAM,+BAErC,K,iCAhNEC,GAAgB,gF,iCAAhBA,EAAgB,w2FCpC7B,+BAAw/C,yDAAimC,yDAAi8C,wDAAuO,uDAAqK,iB,MAA34I,kDAA4+C,uFAAimC,8FAAi8C,yFAAuO,2F,+SDgChxI,GAIa,EAAAA,oB,+DAAAA,EAAgB,E,KAJ5B,EAAAxd,U,MAAU,CACPnG,SAAU,cACVoG,YAAa,8B,wEAGJ2Y,YAAW,E,KAAnB,EAAA7e,QACQ8e,YAAW,E,KAAnB,EAAA9e,QACQ+e,OAAM,E,KAAd,EAAA/e,QACQif,SAAQ,E,KAAhB,EAAAjf,QACQkf,WAAU,E,KAAlB,EAAAlf,QACQmf,WAAU,E,KAAlB,EAAAnf,W,iGE1CL,SAAYmT,GACR,mBACA,uBACA,yBAHJ,CAAY,EAAAA,YAAA,EAAAA,UAAS,M,mGCQrB,mBAAsB,EAAAuQ,e,gICRtB,WAKA,QAMA,U,GAEA,O,MAEA,2BASA,OAHI,YAAAC,QAAA,SAAQC,GACJ,OAAO,GAEf,EATA,GAAsB,EAAAC,aAWtB,8BAKI,KAAAC,QAAU,IAAI,EAAAC,aAAY,GAC1B,KAAAvpB,KAAkB,K,OAElB,YAAAgF,SAAA,W,MACIR,KAAK8kB,QAAQE,SAAShlB,KAAKilB,eAAeH,SAEzB,MAAb9kB,KAAKxE,MACLwE,KAAKxE,KAAK0pB,WAAmC,QAAzB,EAACllB,KAAKilB,eAAezpB,YAAI,QAAI,KAIzD,YAAA2pB,aAAA,SAAaC,GACT,IAAMC,EAAU,IAAI,EAAAC,cAQpB,OAPAD,EAAQP,QAAU9kB,KAAK8kB,QAAQxmB,MAC/B+mB,EAAQ9e,KAAOvG,KAAKulB,OAAOhf,KAEV,MAAbvG,KAAKxE,OACL6pB,EAAQ7pB,KAAOwE,KAAKxE,KAAK8C,OAGtBgc,QAAQC,QAAQ8K,I,iCAxBTG,I,iCAAAA,EAAmB,2D,EADzC,GACsB,EAAAA,uB,+DAAAA,EAAmB,E,KADxC,EAAA3kB,Y,MAEYokB,eAAgB,CAAF,C,KAAtB,EAAAjkB,QACQukB,OAAQ,CAAF,C,KAAd,EAAAvkB,W,kGC7BL,aACA,QAKA,QAEA,SACA,SAEA,QAGA,aAwBI,WAAYrD,G,MAvBZ,KAAAiC,GAAa,KACb,KAAA8P,eAAyB,KACzB,KAAA+V,SAAmB,KACnB,KAAA5nB,KAAe,KACf,KAAA8V,MAAgB,KAChB,KAAApN,KAAmB,KACnB,KAAAmN,UAAW,EACX,KAAAgS,qBAAsB,EACtB,KAAAC,MAAO,EACP,KAAAC,cAAe,EAEf,KAAA/R,MAAQ,IAAI,EAAAC,UACZ,KAAA+R,SAAW,IAAI,EAAAC,aACf,KAAAvT,KAAO,IAAI,EAAAwK,SACX,KAAA5H,WAAa,IAAI,EAAAC,eACjB,KAAA2Q,YAAgC,KAChC,KAAAnS,OAAsB,KACtB,KAAAoS,gBAAyC,KACzC,KAAAC,cAA0B,KAC1B,KAAAC,aAAqB,KACrB,KAAAC,YAAoB,KACpB,KAAAC,SAA+B,EAAAC,mBAAmBC,KAGzC3oB,IAILqC,KAAKJ,GAAKjC,EAAEiC,GACZI,KAAK0P,eAAiB/R,EAAE+R,eACxB1P,KAAKylB,SAAW9nB,EAAE8nB,SAClBzlB,KAAK0T,SAAW/V,EAAE+V,SAClB1T,KAAK0lB,oBAAsB/nB,EAAE+nB,oBAC7B1lB,KAAK2lB,KAAOhoB,EAAEgoB,KACd3lB,KAAK4lB,aAAejoB,EAAEioB,aACtB5lB,KAAKuG,KAAO5I,EAAE4I,KACdvG,KAAKumB,UAAY5oB,EAAE4oB,UACnBvmB,KAAKimB,cAAgBtoB,EAAEsoB,cACvBjmB,KAAKkmB,aAAevoB,EAAEuoB,aACtBlmB,KAAKmmB,YAAcxoB,EAAEwoB,YAErBnmB,KAAKomB,SAAqB,QAAb,EAAGzoB,EAAEyoB,gBAAQ,QAAI,EAAAC,mBAAmBC,MAuDzD,OApDI,sBAAI,uBAAQ,C,IAAZ,WACI,OAAQtmB,KAAKuG,MACT,KAAK,EAAAwN,WAAWC,MACZ,OAAOhU,KAAK6T,MAAM2S,SACtB,KAAK,EAAAzS,WAAWmB,WACZ,OAAOlV,KAAKmV,WAAWqR,SAC3B,KAAK,EAAAzS,WAAWqK,KACZ,OAAOpe,KAAKuS,KAAKiU,SACrB,KAAK,EAAAzS,WAAWsK,SACZ,OAAOre,KAAK6lB,SAASW,SAK7B,OAAO,M,gCAGX,sBAAI,iCAAkB,C,IAAtB,WACI,OAAOxmB,KAAKgmB,iBAAmBhmB,KAAKgmB,gBAAgBhqB,OAAS,G,gCAGjE,sBAAI,6BAAc,C,IAAlB,WACI,OAAOgE,KAAK+lB,aAAe/lB,KAAK+lB,YAAY/pB,OAAS,G,gCAGzD,sBAAI,gCAAiB,C,IAArB,WACI,GAAIgE,KAAKymB,eACL,IAAK,IAAI3qB,EAAI,EAAGA,EAAIkE,KAAK+lB,YAAY/pB,OAAQF,IACzC,GAA+B,MAA3BkE,KAAK+lB,YAAYjqB,GAAG8C,IACpB,OAAO,EAInB,OAAO,G,gCAGX,sBAAI,wBAAS,C,IAAb,WACI,OAAOoB,KAAK4T,QAAU5T,KAAK4T,OAAO5X,OAAS,G,gCAG/C,sBAAI,0CAA2B,C,IAA/B,WACI,OAAIgE,KAAKuG,OAAS,EAAAwN,WAAWC,OAAuB,MAAdhU,KAAK6T,OAET,MAAvB7T,KAAK6T,MAAMmB,UAA4C,KAAxBhV,KAAK6T,MAAMmB,SAD1C,KAIJhV,KAAK6T,MAAM6S,sB,gCAGtB,sBAAI,wBAAS,C,IAAb,WACI,OAA2B,MAApB1mB,KAAKmmB,a,gCAEpB,EAjGA,GAAa,EAAA1S,c,kGCTb,MAKI,SAAYV,GAJZ,KAAAnT,GAAa,KACb,KAAA/B,KAAe,KACf,KAAAqoB,aAAqB,KAGZnT,IAIL/S,KAAKJ,GAAKmT,EAAEnT,GACZI,KAAKkmB,aAAenT,EAAEmT,eAXjB,EAAAtR,c,s/CCLb,WAOA,GAFA,KACA,KACA,QACA,S,8FCRy/U,4BAAuE,8CAAoC,gDAAoG,gHAApG,iBAAwI,gDAA0D,Y,mBAAuB,iBAAS,iCAAO,kC,gCAArI,8DAA8F,qE,mDAAqD,4BAAiE,4CAAoB,4CAAyB,gDAAmB,Y,mBAAwB,iBAAS,iDAAgE,yGAAhE,iBAA6F,kCAAO,kCAAO,kC,gCAA5I,qEAAiG,wD,mDAAkD,4BAAiE,4CAAoB,4CAAyB,gDAA0B,Y,mBAAqB,iBAAS,iDAA8E,yGAA9E,iBAAwI,kCAAO,kCAAO,8CAAoB,8CAAyB,kDAA0B,a,oBAAqB,iBAAS,kDAA8E,yGAA9E,iBAAwI,kCAAO,kCAAO,8CAAoB,8CAAyB,kDAAyB,a,oBAAqB,iBAAS,kDAA4E,wGAA5E,iBAAsI,kCAAO,kCAAO,8CAAoB,8CAAyB,kDAA0B,a,oBAA0B,iBAAS,kDAA8E,yGAA9E,iBAAyI,kCAAO,kCAAO,kC,gCAAx6B,kEAA4G,uDAA+I,oEAA4G,uDAA8I,oEAA0G,sDAA+I,yEAAiH,wDDWtlY,iBAiCI,WAAoBgL,EAAgC+G,GAAhC,KAAA/G,aAAgC,KAAA+G,QA5B1C,KAAAC,iBAAmB,IAAI,EAAAC,aAEjC,KAAAtlB,SAAmB,EAEnB,KAAAulB,QAAe,CACXC,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZ1G,QAAS,KACT2G,cAAc,GAKV,KAAAC,SAAgB,CACpBP,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,KAAM,KACNC,MAAO,KACPC,WAAY,KACZ1G,QAAS,KACT2G,cAAc,G,OAKZ,YAAA7mB,SAAN,W,uGAqCqB,OApCjBR,KAAK2mB,MAAMY,OAAOA,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,2DAClDxnB,KAAK0P,eAAiB8X,EAAO9X,gBACzB1P,KAAK0P,eAAL,Y,iBAEoB,O,sBAAA,GAAM1P,KAAK4f,WAAW6H,uBAAuBznB,KAAK0P,iB,cAA5DoX,EAAU,YAEZ9mB,KAAK8mB,QAAQC,MAAQD,EAAQC,MAC7B/mB,KAAK8mB,QAAQK,MAAQL,EAAQK,MAC7BnnB,KAAK8mB,QAAQE,MAAQF,EAAQE,MAC7BhnB,KAAK8mB,QAAQG,MAAQH,EAAQG,MAC7BjnB,KAAK8mB,QAAQI,KAAOJ,EAAQI,KAC5BlnB,KAAK8mB,QAAQK,MAAQL,EAAQK,MAC7BnnB,KAAK8mB,QAAQM,WAAaN,EAAQM,WAClCpnB,KAAK8mB,QAAQpG,QAAUoG,EAAQpG,SAAW,KAC1C1gB,KAAK8mB,QAAQO,eAAwC,OAAzBrnB,KAAK8mB,QAAQpG,UACnCoG,EAAQC,QACLD,EAAQE,QACRF,EAAQG,QACRH,EAAQI,OACRJ,EAAQK,Q,6DAIT,SAAMnnB,KAAK4f,WAAW8H,c,QAAhCZ,EAAU,YAEZ9mB,KAAK8mB,QAAQM,WAAaN,EAAQM,WAClCpnB,KAAK8mB,QAAQpG,QAAUoG,EAAQpG,SAAW,M,wBAGlD1gB,KAAKsnB,SAAWrrB,OAAOgS,OAAO,GAAIjO,KAAK8mB,SAEV,OAAzB9mB,KAAK8mB,QAAQpG,SACb1gB,KAAK4mB,iBAAiBe,O,cAIb,GAAM3nB,KAAK4f,WAAWgI,e,cAAjCC,EAAW,SACjB7nB,KAAK6nB,SAAWA,EAASrsB,KACzBwE,KAAKuB,SAAU,E,YAGnB,sBAAI,sBAAO,C,IAAX,e,EAAA,OACI,GAAqB,MAAjBvB,KAAK6nB,SAAkB,CACvB,IAAMC,EAAe9nB,KAAK6nB,SAASE,MAAK,SAAA/c,GACpC,OAAAA,EAAE0V,UAAY,EAAKoG,QAAQpG,SAC3B1V,EAAEoc,aAAe,EAAKN,QAAQM,cAElC,OAAyB,QAAzB,EAAOU,aAAY,EAAZA,EAAcE,YAAI,QAAI,O,gCAIrC,YAAAC,kBAAA,WAEQ,IAWM5C,EAZV,OAAIrlB,KAAK0P,iBACC2V,EAAU,IAAI,EAAA6C,kCACZnB,MAAQ/mB,KAAK8mB,QAAQC,MAC7B1B,EAAQ8B,MAAQnnB,KAAK8mB,QAAQK,MAC7B9B,EAAQ2B,MAAQhnB,KAAK8mB,QAAQE,MAC7B3B,EAAQ4B,MAAQjnB,KAAK8mB,QAAQG,MAC7B5B,EAAQ6B,KAAOlnB,KAAK8mB,QAAQI,KAC5B7B,EAAQ8B,MAAQnnB,KAAK8mB,QAAQK,MAC7B9B,EAAQ+B,WAAapnB,KAAK8mB,QAAQM,WAClC/B,EAAQ3E,QAAU1gB,KAAK8mB,QAAQpG,QACxB2E,KAEDA,EAAU,IAAI,EAAA8C,sBACZf,WAAapnB,KAAK8mB,QAAQM,WAClC/B,EAAQ3E,QAAU1gB,KAAK8mB,QAAQpG,QACxB2E,IAIf,YAAA+C,cAAA,WACI,IAAKpoB,KAAKqoB,aACN,OAAO,IAAI/N,SAAc,SAAAC,GAAaA,OAE1C,IAAM8K,EAAUrlB,KAAKioB,oBACrB,OAAOjoB,KAAK0P,eAAiB1P,KAAK4f,WAAW0I,uBAAuBtoB,KAAK0P,eACrE2V,GAA+CrlB,KAAK4f,WAAW2I,WAAWlD,IAGlF,YAAAmD,cAAA,WACiC,OAAzBxoB,KAAK8mB,QAAQpG,UACb1gB,KAAK8mB,QAAQO,cAAe,EAC5BrnB,KAAK8mB,QAAQC,MAAQ,KACrB/mB,KAAK8mB,QAAQE,MAAQ,KACrBhnB,KAAK8mB,QAAQG,MAAQ,KACrBjnB,KAAK8mB,QAAQI,KAAO,KACpBlnB,KAAK8mB,QAAQK,MAAQ,MAEzBnnB,KAAK4mB,iBAAiBe,QAGlB,YAAAU,WAAR,WACI,IAAK,IAAMzpB,KAAOoB,KAAK8mB,QACnB,GAAI9mB,KAAKsnB,SAASnrB,eAAeyC,IAAQoB,KAAKsnB,SAAS1oB,KAASoB,KAAK8mB,QAAQloB,GACzE,OAAO,EAGf,OAAO,G,iCAlIF6pB,GAAgB,0E,iCAAhBA,EAAgB,yrKCf7B,4BAAkB,4CAAoB,4CAAyB,8CAA4B,Y,mBAAoB,iBAAS,gDAAiD,wEAA6B,4BAAiE,EAAAD,mBAAkB,iDAAiB,4BAAY,iBAAU,iDAAmB,6BAAa,iBAAU,iDAAmB,qBAAK,iBAAU,iDAAmB,sBAAM,iBAAU,iDAAmB,uBAAO,iBAAU,kDAAmB,sBAAM,iBAAU,kDAAmB,8BAAc,iBAAU,kDAAmB,yBAAS,iBAAU,kDAAmB,qBAAK,iBAAU,6CAAgD,kDAAmB,2BAAW,iBAAU,kDAAmB,6BAAa,iBAAU,kDAAmB,uBAAO,iBAAU,kDAAmB,uBAAO,iBAAU,kDAAmB,8BAAc,iBAAU,kDAAmB,uBAAO,iBAAU,kDAAmB,sBAAM,iBAAU,kDAAmB,wBAAQ,iBAAU,kDAAmB,0BAAU,iBAAU,kDAAmB,mCAAmB,iBAAU,kDAAmB,yBAAS,iBAAU,kDAAmB,uBAAO,iBAAU,kDAAmB,qBAAK,iBAAU,kDAAmB,uBAAO,iBAAU,kDAAmB,0BAAU,iBAAU,kDAAmB,uBAAO,iBAAU,kDAAmB,uBAAO,iBAAU,kDAAmB,0BAAU,iBAAU,kDAAmB,wBAAQ,iBAAU,kDAAmB,uBAAO,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,uBAAM,iBAAU,oDAAmB,sBAAK,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,uBAAM,iBAAU,oDAAmB,gDAA+B,iBAAU,oDAAmB,iDAAgC,iBAAU,oDAAmB,uCAAsB,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,8BAAa,iBAAU,oDAAmB,uBAAM,iBAAU,oDAAmB,+CAA8B,iBAAU,oDAAmB,kCAAiB,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,6BAAY,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,2BAAU,iBAAU,oDAAmB,+BAAc,iBAAU,oDAAmB,yCAAwB,iBAAU,oDAAmB,qBAAI,iBAAU,oDAAmB,sBAAK,iBAAU,oDAAmB,iCAAgB,iBAAU,oDAAmB,wCAAuB,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,sBAAK,iBAAU,oDAAmB,sDAAqC,iBAAU,oDAAmB,6BAAY,iBAAU,oDAAmB,2BAAU,iBAAU,oDAAmB,8BAAa,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,qBAAI,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,uBAAM,iBAAU,oDAAmB,+BAAc,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,mCAAkB,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,sBAAK,iBAAU,oDAAmB,4BAAW,iBAAU,oDAAmB,kCAAiB,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,yBAAQ,iBAAU,oDAAmB,4CAA2B,iBAAU,oDAAmB,8BAAa,iBAAU,oDAAmB,qBAAI,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,8BAAa,iBAAU,oDAAmB,iCAAgB,iBAAU,oDAAmB,4CAA2B,iBAAU,oDAAmB,sBAAK,iBAAU,oDAAmB,uBAAM,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,sBAAK,iBAAU,oDAAmB,0BAAS,iBAAU,oDAAmB,uBAAM,iBAAU,oDAAmB,0BAAS,iBAAU,oDAAmB,wBAAO,iBAAU,oDAAmB,2BAAU,iBAAU,oDAAmB,qBAAI,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,8BAAa,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,kDAAiC,iBAAU,qDAAmB,8CAA6B,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,0CAAyB,iBAAU,qDAAmB,qBAAI,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,uDAAsC,iBAAU,qDAAmB,mCAAkB,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,iDAAgC,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,8BAAa,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,2DAA0C,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,qBAAI,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,iCAAgB,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,gDAA+B,iBAAU,qDAAmB,qCAAoB,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,8BAAa,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,qBAAI,iBAAU,qDAAmB,+BAAc,iBAAU,qDAAmB,yCAAwB,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,qBAAI,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,gDAA+B,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,iCAAgB,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,qBAAI,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,mCAAkB,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,iCAAgB,iBAAU,qDAAmB,6DAA4C,iBAAU,qDAAmB,sCAAqB,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,2CAA0B,iBAAU,qDAAmB,0CAAyB,iBAAU,qDAAmB,iDAAgC,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,sCAAqB,iBAAU,qDAAmB,6BAAY,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,6BAAY,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,0CAAyB,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,gCAAe,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,6BAAY,iBAAU,qDAAmB,6DAA4C,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,uCAAsB,iBAAU,qDAAmB,0BAAS,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,qCAAoB,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,6CAA4B,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,4BAAW,iBAAU,qDAAmB,qBAAI,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,oCAAmB,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,6BAAY,iBAAU,qDAAmB,yCAAwB,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,qCAAoB,iBAAU,qDAAmB,qDAAoC,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,2BAAU,iBAAU,qDAAmB,wBAAO,iBAAU,qDAAmB,kDAAiC,iBAAU,qDAAmB,yBAAQ,iBAAU,qDAAmB,wCAAuB,iBAAU,qDAAmB,qCAAoB,iBAAU,qDAAmB,kCAAiB,iBAAU,qDAAmB,+BAAc,iBAAU,qDAAmB,sBAAK,iBAAU,qDAAmB,uBAAM,iBAAU,qDAAmB,yBAAQ,iBAAU,mCAAU,mCAAO,mCAAO,kDAAoB,gDAAyB,oDAA+B,c,qBAA0B,iBAAS,oDAAwF,2EAAxF,iBAA2L,mCAAO,mCAAO,qDAA2V,mCAAO,qDAAoR,sDAAujC,kB,MAA3kY,iEAA8E,yDAAomU,4EAA2H,4DAAgC,qCAAqG,+EAAgW,6EAAoR,+E,iPDWjoW,GAIa,EAAAC,oB,+DAAAA,EAAgB,E,KAJ5B,EAAAxhB,U,MAAU,CACPnG,SAAU,eACVoG,YAAa,+B,kEAGH0f,iBAAgB,E,KAAzB,EAAA8B,Y,8/CEhBL,WAKA,GAHA,KACA,MAEA,QACA,SACA,Q,sBAKA,aAEI,WAAoBhpB,EAAkCipB,GAAlC,KAAAjpB,cAAkC,KAAAipB,gB,OAEtD,YAAAC,sBAAA,WACI,IAAMhrB,EAAI,IAAIirB,KACRC,EAAM,IAAID,KAAKjrB,EAAEmrB,cAAenrB,EAAEorB,WAAYprB,EAAEqrB,UAAW,GAAI,IACrErrB,EAAEsrB,QAAQtrB,EAAEqrB,UAAY,IACxB,IAAME,EAAQ,IAAIN,KAAKjrB,EAAEmrB,cAAenrB,EAAEorB,WAAYprB,EAAEqrB,UAAW,EAAG,GACtE,MAAO,CAACjpB,KAAKopB,sBAAsBD,GAAQnpB,KAAKopB,sBAAsBN,KAG1E,YAAAO,kBAAA,SAAkBC,EAAqBC,GACnC,IAAMJ,EAAc,IAAIN,KAAKS,GACvBR,EAAY,IAAID,KAAKU,EAAY,WACvC,GAAI7a,MAAMya,EAAMK,YAAc9a,MAAMoa,EAAIU,YAAcV,EAAMK,EACxD,MAAM,IAAI5hB,MAAM,uBAEpB,MAAO,CAAC4hB,EAAMM,cAAeX,EAAIW,gBAG/B,YAAAC,aAAN,SAAmBC,EAAmBjZ,G,YAAA,IAAAA,MAAA,IAAckZ,G,+FAEN,OADpCC,EAAU7pB,KAAK8pB,WAAWH,EAAGI,YACO,GAAM/pB,KAAKgqB,gBAAgBL,EAAIjZ,I,OACzE,OADM,EAAoC,SAAlCO,EAAO,UAAEgZ,EAAoB,uBAC9B,CAAP,EAAO,CACHhZ,QAASA,EACTgZ,qBAAsBA,EACtBC,QAASL,EAAQ,GACjBM,QAASN,EAAQ,aAIX,YAAAG,gBAAd,SAA8BL,EAAmBjZ,G,+GACzC0Z,EAAM,GACNC,EAAmB,GACfV,EAAGpjB,M,KAEF,EAAA+jB,UAAUC,cAAV,Y,KAGA,EAAAD,UAAUE,qBAAV,Y,KAGA,EAAAF,UAAUG,gBAAV,Y,KAGA,EAAAH,UAAUI,iBAAV,Y,KAGA,EAAAJ,UAAUK,kBAAV,Y,KAGA,EAAAL,UAAUM,iBAAV,Y,KAGA,EAAAN,UAAUO,oBAAV,Y,KAGA,EAAAP,UAAUQ,yBAAV,Y,KAGA,EAAAR,UAAUS,yBAAV,Y,KAIA,EAAAT,UAAUU,eAAV,a,KAIA,EAAAV,UAAUW,eAAV,a,KAIA,EAAAX,UAAUY,eAAV,a,KAIA,EAAAZ,UAAUa,mBAAV,a,KAIA,EAAAb,UAAUc,gBAAV,a,KAIA,EAAAd,UAAUe,yBAAV,a,KAIA,EAAAf,UAAUgB,yBAAV,a,KAIA,EAAAhB,UAAUiB,cAAV,a,KAIA,EAAAjB,UAAUkB,oBAAV,a,KAIA,EAAAlB,UAAUmB,oCAAV,a,KAIA,EAAAnB,UAAUoB,uCAAV,a,KAIA,EAAApB,UAAUqB,oCAAV,a,KAIA,EAAArB,UAAUsB,+BAAV,a,KAIA,EAAAtB,UAAUuB,4BAAV,a,KAIA,EAAAvB,UAAUwB,4BAAV,a,KAIA,EAAAxB,UAAUyB,wBAAV,a,KAIA,EAAAzB,UAAU0B,0BAAV,a,KAKA,EAAA1B,UAAU2B,mBAAV,a,KAIA,EAAA3B,UAAU4B,mBAAV,a,KAIA,EAAA5B,UAAU6B,mBAAV,a,KAKA,EAAA7B,UAAU8B,cAAV,a,KAIA,EAAA9B,UAAU+B,cAAV,a,KAIA,EAAA/B,UAAUgC,cAAV,a,KAKA,EAAAhC,UAAUiC,yBAAV,a,KAIA,EAAAjC,UAAUkC,2BAAV,a,KAIA,EAAAlC,UAAUmC,yBAAV,a,KAIA,EAAAnC,UAAUoC,yBAAV,a,KAIA,EAAApC,UAAUqC,+BAAV,a,KAIA,EAAArC,UAAUsC,6BAAV,a,KAIA,EAAAtC,UAAUuC,sCAAV,a,KAIA,EAAAvC,UAAUwC,wCAAV,a,KAIA,EAAAxC,UAAUyC,oCAAV,a,KAIA,EAAAzC,UAAU0C,8BAAV,a,KAKA,EAAA1C,UAAU2C,qBAAV,a,KAGA,EAAA3C,UAAU4C,yBAAV,a,KAQA,EAAA5C,UAAU6C,2BAAV,a,KAIA,EAAA7C,UAAU8C,eAAV,a,KAaA,EAAA9C,UAAU+C,qBAAV,a,KAIA,EAAA/C,UAAUgD,uBAAV,a,KAIA,EAAAhD,UAAUiD,qBAAV,a,KAIA,EAAAjD,UAAUkD,qBAAV,a,KAIA,EAAAlD,UAAUmD,6BAAV,a,KAIA,EAAAnD,UAAUoD,2BAAV,a,KAIA,EAAApD,UAAUqD,6BAAV,a,KAIA,EAAArD,UAAUsD,mCAAV,a,oBA1ND,OADAxD,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,YAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,mBAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,qBAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,eAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,eAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,kBAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,iBAC5C,O,OAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,yBAC5C,O,QAKA,OAFA6rB,EAAMpqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK6tB,eAAelE,EAAIjZ,IAClE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK8tB,WAAWnE,EAAGoE,WAC1E,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAK6tB,eAAelE,EAAIjZ,IACjE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAK8tB,WAAWnE,EAAGoE,WACzE,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK6tB,eAAelE,EAAIjZ,IAC7E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK8tB,WAAWnE,EAAGoE,WACrF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK6tB,eAAelE,EAAIjZ,IAClE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK8tB,WAAWnE,EAAGoE,WAC1E,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,iBAAkByB,KAAK6tB,eAAelE,EAAIjZ,IACnE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,iBAAkByB,KAAK6tB,eAAelE,EAAIjZ,IAChF,O,QAIA,OAFA0Z,EAAMpqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK6tB,eAAelE,EAAIjZ,IAC7E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK8tB,WAAWnE,EAAGoE,WACrF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK6tB,eAAelE,EAAIjZ,IAC7E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK8tB,WAAWnE,EAAGoE,WACrF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,mBAAoByB,KAAK6tB,eAAelE,EAAIjZ,IACrE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,mBAAoByB,KAAK8tB,WAAWnE,EAAGoE,WAC7E,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAK6tB,eAAelE,EAAIjZ,IACjE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAK8tB,WAAWnE,EAAGoE,WACzE,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,uBAAwByB,KAAK6tB,eAAelE,EAAIjZ,IACzE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,uBAAwByB,KAAK8tB,WAAWnE,EAAGoE,WACjF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAK6tB,eAAelE,EAAIjZ,IAC5E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAK8tB,WAAWnE,EAAGoE,WACpF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK6tB,eAAelE,EAAIjZ,IAC7E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK8tB,WAAWnE,EAAGoE,WACrF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAK6tB,eAAelE,EAAIjZ,IAC5E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAK8tB,WAAWnE,EAAGoE,WACpF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,uBAAwByB,KAAK6tB,eAAelE,EAAIjZ,IACzE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,uBAAwByB,KAAK8tB,WAAWnE,EAAGoE,WACjF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK6tB,eAAelE,EAAIjZ,IAC7E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK8tB,WAAWnE,EAAGoE,WACrF,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,mBAAoByB,KAAK6tB,eAAelE,EAAIjZ,IACrE2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,mBAAoByB,KAAK8tB,WAAWnE,EAAGoE,WAC7E,O,QAIA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK6tB,eAAelE,EAAIjZ,IAC7E2Z,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK8tB,WAAWnE,EAAGoE,WACrF,O,QAKA,OAFA3D,EAAMpqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAKguB,mBAAmBrE,IACxEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAK8tB,WAAWnE,EAAGsE,eAChF,O,QAIA,OAFA7D,EAAMpqB,KAAKN,YAAYnB,EAAE,qBAAsByB,KAAKguB,mBAAmBrE,IACvEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,qBAAsByB,KAAK8tB,WAAWnE,EAAGsE,eAC/E,O,QAIA,OAFA7D,EAAMpqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAKguB,mBAAmBrE,IACxEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAK8tB,WAAWnE,EAAGsE,eAChF,O,QAKA,OAFA7D,EAAMpqB,KAAKN,YAAYnB,EAAE,iBAAkByB,KAAKkuB,cAAcvE,IAC9DU,EAAmBrqB,KAAKN,YAAYnB,EAAE,iBAAkByB,KAAK8tB,WAAWnE,EAAGwE,UAC3E,O,QAIA,OAFA/D,EAAMpqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAKkuB,cAAcvE,IAC7DU,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK8tB,WAAWnE,EAAGwE,UAC1E,O,QAIA,OAFA/D,EAAMpqB,KAAKN,YAAYnB,EAAE,iBAAkByB,KAAKkuB,cAAcvE,IAC9DU,EAAmBrqB,KAAKN,YAAYnB,EAAE,iBAAkByB,KAAK8tB,WAAWnE,EAAGwE,UAC3E,O,QAKA,OAFA/D,EAAMpqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAKouB,gBAAgBzE,IAC/DU,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK8tB,WAAWnE,EAAG0E,qBAC1E,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,kBAAmByB,KAAKouB,gBAAgBzE,IACjEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,kBAAmByB,KAAK8tB,WAAWnE,EAAG0E,qBAC5E,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAKouB,gBAAgBzE,IAC9DU,EAAmBrqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAK8tB,WAAWnE,EAAG0E,qBACzE,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAKouB,gBAAgBzE,IAC/DU,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK8tB,WAAWnE,EAAG0E,qBAC1E,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAKouB,gBAAgBzE,IACrEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAK8tB,WAAWnE,EAAG0E,qBAChF,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,kBAAmByB,KAAKouB,gBAAgBzE,IACjEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,kBAAmByB,KAAK8tB,WAAWnE,EAAG0E,qBAC5E,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAKouB,gBAAgBzE,IAC1EU,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAA4ByB,KAAK8tB,WAAWnE,EAAG0E,qBACrF,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,6BAA8ByB,KAAKouB,gBAAgBzE,IAC5EU,EAAmBrqB,KAAKN,YAAYnB,EAAE,6BAA8ByB,KAAK8tB,WAAWnE,EAAG0E,qBACvF,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAKouB,gBAAgBzE,IACzEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAK8tB,WAAWnE,EAAG0E,qBACpF,O,QAIA,OAFAjE,EAAMpqB,KAAKN,YAAYnB,EAAE,oBAAqByB,KAAKouB,gBAAgBzE,IACnEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,oBAAqByB,KAAK8tB,WAAWnE,EAAG0E,qBAC9E,O,QAIA,OADAjE,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,qBAC5C,O,QAGA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAC5C,O,QAQA,OADA6rB,EAAMC,EAAmBrqB,KAAKN,YAAYnB,EAAE,2BAC5C,O,QAKiB,OAFjB6rB,EAAMpqB,KAAKN,YAAYnB,EAAE,mBAAoByB,KAAKsuB,eAAe3E,IAEhD,GAAM3pB,KAAK2oB,cAAc4F,U,QAQ1C,OARMC,EAAW,SACXjJ,EAASiJ,EAASjgB,QAAO,SAAAtP,GAAK,OAAAA,EAAEW,KAAO+pB,EAAG8E,YAAU,GACtD5uB,EAAKG,KAAK8tB,WAAWnE,EAAG8E,UACd,MAAVlJ,IACA1lB,EAAK,EAAAuX,WAAWmO,EAAOhf,OAG3B8jB,EAAmBrqB,KAAKN,YAAYnB,EAAE,mBAAoBsB,GAC1D,O,QAKA,OAFAuqB,EAAMpqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK0uB,qBAAqB/E,IACpEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK8tB,WAAWnE,EAAGgF,iBAC1E,O,QAIA,OAFAvE,EAAMpqB,KAAKN,YAAYnB,EAAE,kBAAmByB,KAAK0uB,qBAAqB/E,IACtEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,kBAAmByB,KAAK8tB,WAAWnE,EAAGgF,iBAC5E,O,QAIA,OAFAvE,EAAMpqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAK0uB,qBAAqB/E,IACnEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,eAAgByB,KAAK8tB,WAAWnE,EAAGgF,iBACzE,O,QAIA,OAFAvE,EAAMpqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK0uB,qBAAqB/E,IACpEU,EAAmBrqB,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK8tB,WAAWnE,EAAGgF,iBAC1E,O,QAIA,OAFAvE,EAAMpqB,KAAKN,YAAYnB,EAAE,wBAAyByB,KAAK4uB,6BAA6BjF,IACpFU,EAAmBrqB,KAAKN,YAAYnB,EAAE,wBAAyByB,KAAK8tB,WAAWnE,EAAGkF,yBAClF,O,QAIA,OAFAzE,EAAMpqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAK4uB,6BAA6BjF,IAClFU,EAAmBrqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAK8tB,WAAWnE,EAAGkF,yBAChF,O,QAIA,OAFAzE,EAAMpqB,KAAKN,YAAYnB,EAAE,wBAAyByB,KAAK4uB,6BAA6BjF,IACpFU,EAAmBrqB,KAAKN,YAAYnB,EAAE,wBAAyByB,KAAK8tB,WAAWnE,EAAGkF,yBAClF,O,QAIA,OAFAzE,EAAMpqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAK4uB,6BAA6BjF,IAClFU,EAAmBrqB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAK8tB,WAAWnE,EAAGkF,yBAChF,O,QAEA,a,QAER,MAAO,CAAP,EAAO,CACH5d,QAAiB,KAARmZ,EAAa,KAAOA,EAC7BH,qBAA2C,KAArBI,EAA0B,KAAOA,YAIvD,YAAAP,WAAR,SAAmBC,GACf,OAAQA,GACJ,KAAK,EAAA+E,WAAWC,QACZ,MAAO,CAAC,aAAc/uB,KAAKN,YAAYnB,EAAE,UAAY,cACzD,KAAK,EAAAuwB,WAAWE,IACZ,MAAO,CAAC,WAAYhvB,KAAKN,YAAYnB,EAAE,UAAY,UACvD,KAAK,EAAAuwB,WAAWG,IACZ,MAAO,CAAC,aAAcjvB,KAAKN,YAAYnB,EAAE,UAAY,cACzD,KAAK,EAAAuwB,WAAWI,gBACZ,MAAO,CAAC,YAAalvB,KAAKN,YAAYnB,EAAE,aAAe,aAC3D,KAAK,EAAAuwB,WAAWK,iBACZ,MAAO,CAAC,aAAcnvB,KAAKN,YAAYnB,EAAE,aAAe,cAC5D,KAAK,EAAAuwB,WAAWM,eACZ,MAAO,CAAC,WAAYpvB,KAAKN,YAAYnB,EAAE,aAAe,YAC1D,KAAK,EAAAuwB,WAAWO,cACZ,MAAO,CAAC,UAAWrvB,KAAKN,YAAYnB,EAAE,aAAe,WACzD,KAAK,EAAAuwB,WAAWQ,iBACZ,MAAO,CAAC,kBAAmBtvB,KAAKN,YAAYnB,EAAE,aAAe,cACjE,KAAK,EAAAuwB,WAAWS,gBACZ,MAAO,CAAC,YAAavvB,KAAKN,YAAYnB,EAAE,aAAe,aAC3D,KAAK,EAAAuwB,WAAWU,eACZ,MAAO,CAAC,aAAcxvB,KAAKN,YAAYnB,EAAE,WAAa,cAC1D,KAAK,EAAAuwB,WAAWW,aACZ,MAAO,CAAC,WAAYzvB,KAAKN,YAAYnB,EAAE,WAAa,YACxD,KAAK,EAAAuwB,WAAWY,aACZ,MAAO,CAAC,WAAY1vB,KAAKN,YAAYnB,EAAE,WAAa,YACxD,KAAK,EAAAuwB,WAAWa,cACZ,MAAO,CAAC,WAAY3vB,KAAKN,YAAYnB,EAAE,YAAc,aACzD,KAAK,EAAAuwB,WAAWc,eACZ,MAAO,CAAC,WAAY5vB,KAAKN,YAAYnB,EAAE,YAAc,cACzD,KAAK,EAAAuwB,WAAWe,aACZ,MAAO,CAAC,WAAY7vB,KAAKN,YAAYnB,EAAE,YAAc,YACzD,KAAK,EAAAuwB,WAAWgB,cACZ,MAAO,CAAC,WAAY9vB,KAAKN,YAAYnB,EAAE,YAAc,aACzD,KAAK,EAAAuwB,WAAWiB,eACZ,MAAO,CAAC,WAAY/vB,KAAKN,YAAYnB,EAAE,YAAc,cACzD,KAAK,EAAAuwB,WAAWkB,YACZ,MAAO,CAAC,WAAYhwB,KAAKN,YAAYnB,EAAE,YAAc,WACzD,KAAK,EAAAuwB,WAAWmB,UACZ,MAAO,CAAC,WAAYjwB,KAAKN,YAAYnB,EAAE,YAAc,SACzD,KAAK,EAAAuwB,WAAWoB,eACZ,MAAO,CAAC,WAAYlwB,KAAKN,YAAYnB,EAAE,YAAc,MAAQyB,KAAKN,YAAYnB,EAAE,YACpF,QACI,MAAO,CAAC,WAAYyB,KAAKN,YAAYnB,EAAE,cAI3C,YAAAsvB,eAAR,SAAuBlE,EAAmBjZ,GACtC,IAAMyf,EAAUnwB,KAAK8tB,WAAWnE,EAAGoE,UACnC,GAAyB,MAArBpE,EAAGja,iBAA2BgB,EAAQ0f,WACtC,MAAO,SAAWD,EAAU,UAEhC,IAAMziB,EAAI1N,KAAKqwB,WAAWF,GAG1B,OAFAziB,EAAE/M,aAAa,OAAQ,mBAAqBgpB,EAAGja,eAAiB,iBAAmBygB,EAC/E,eAAiBxG,EAAGoE,UACjBrgB,EAAE4iB,WAGL,YAAApC,cAAR,SAAsBvE,GAClB,IAAMwG,EAAUnwB,KAAK8tB,WAAWnE,EAAGwE,SAC7BzgB,EAAI1N,KAAKqwB,WAAWF,GAE1B,OADAziB,EAAE/M,aAAa,OAAQ,mBAAqBgpB,EAAGja,eAAiB,yBAA2BygB,GACpFziB,EAAE4iB,WAGL,YAAAtC,mBAAR,SAA2BrE,GACvB,IAAMwG,EAAUnwB,KAAK8tB,WAAWnE,EAAGsE,cAC7BvgB,EAAI1N,KAAKqwB,WAAWF,GAE1B,OADAziB,EAAE/M,aAAa,OAAQ,mBAAqBgpB,EAAGja,eAAiB,8BAAgCygB,GACzFziB,EAAE4iB,WAGL,YAAAlC,gBAAR,SAAwBzE,GACpB,IAAMwG,EAAUnwB,KAAK8tB,WAAWnE,EAAG0E,oBAC7B3gB,EAAI1N,KAAKqwB,WAAWF,GAG1B,OAFAziB,EAAE/M,aAAa,OAAQ,mBAAqBgpB,EAAGja,eAAiB,yBAA2BygB,EACvF,eAAiBxG,EAAG0E,oBACjB3gB,EAAE4iB,WAGL,YAAA5B,qBAAR,SAA6B/E,GACzB,IAAMwG,EAAUnwB,KAAK8tB,WAAWnE,EAAGgF,gBAC7BjhB,EAAI1N,KAAKqwB,WAAWF,GAG1B,OAFAziB,EAAE/M,aAAa,OAAQ,eAAiBgpB,EAAG4G,WAAa,yBAA2BJ,EAC/E,eAAiBxG,EAAGgF,gBACjBjhB,EAAE4iB,WAGL,YAAA1B,6BAAR,SAAqCjF,GACjC,IAAMwG,EAAUnwB,KAAK8tB,WAAWnE,EAAGkF,wBAC7BnhB,EAAI1N,KAAKqwB,WAAWF,GAE1B,OADAziB,EAAE/M,aAAa,OAAQ,eAAiBgpB,EAAG4G,WAAa,mBAAqBJ,GACtEziB,EAAE4iB,WAGL,YAAAhC,eAAR,SAAuB3E,GACnB,IAAMwG,EAAUnwB,KAAK8tB,WAAWnE,EAAG8E,UAC7B/gB,EAAI1N,KAAKqwB,WAAWF,GAE1B,OADAziB,EAAE/M,aAAa,OAAQ,mBAAqBgpB,EAAGja,eAAiB,6BAA+Bia,EAAG8E,UAC3F/gB,EAAE4iB,WAGL,YAAAD,WAAR,SAAmBF,GACf,IAAMziB,EAAItJ,SAASW,cAAc,KAGjC,OAFA2I,EAAEnN,MAAQP,KAAKN,YAAYnB,EAAE,QAC7BmP,EAAE8iB,UAAY,SAAWL,EAAU,UAC5BziB,GAGH,YAAAogB,WAAR,SAAmBluB,GACf,OAAOA,aAAE,EAAFA,EAAI+R,UAAU,EAAG,IAGpB,YAAAyX,sBAAR,SAA8BqH,GAC1B,OAAOA,EAAK1H,cACR,IAAM/oB,KAAK0wB,IAAID,EAAKzH,WAAa,GACjC,IAAMhpB,KAAK0wB,IAAID,EAAKxH,WACpB,IAAMjpB,KAAK0wB,IAAID,EAAKE,YACpB,IAAM3wB,KAAK0wB,IAAID,EAAKG,eAGpB,YAAAF,IAAR,SAAYG,GACR,IAAMC,EAAOplB,KAAKqlB,MAAMrlB,KAAKslB,IAAIH,IACjC,OAAQC,EAAO,GAAK,IAAM,IAAMA,G,iCAxY3BxX,GAAY,wD,oCAAZA,EAAY,QAAZA,EAAY,O,EADzB,GACa,EAAAA,gB,+DAAAA,EAAY,E,KADxB,EAAAjT,c,uEA6YD,mBAAa,EAAA4qB,YAOb,iBACI,KAAAb,YAAa,GADJ,EAAAxG,gB,wcC9Zb,aAKA,cAQI,WAAYvb,EAAsBoL,QAAA,IAAAA,OAAA,GAAlC,MACI,cAAO,KACP,OAAW,MAAPpL,GAIJ,EAAKkL,iBAAiB,EAAMlL,EAAK,CAC7BzO,GAAI,KACJ8P,eAAgB,KAChB7R,KAAM,KACNqzB,WAAY,KACZC,SAAU,KACVC,cAAe,MAChB3X,EAAkB,CAAC,KAAM,iBAAkB,aAAc,WAAY,kB,EAQhF,OA7BgC,OAwB5B,YAAAgB,QAAA,WACI,OAAOza,KAAKga,WAAW,IAAI,EAAA/G,eAAejT,MAAO,CAC7CnC,KAAM,MACPmC,KAAK0P,iBAEhB,EA7BA,CAHA,MAGgC,SAAnB,EAAA2hB,c,oGCHb,YAEA,aAwBI,WAAYv1B,GAvBZ,KAAAyE,MAAgB,KAChB,KAAA+wB,WAAqB,KACrB,KAAAC,SAAmB,KACnB,KAAAC,SAAmB,KACnB,KAAAC,SAAmB,KACnB,KAAAvK,KAAe,KACf,KAAAC,MAAgB,KAChB,KAAAC,WAAqB,KACrB,KAAA1G,QAAkB,KAClB,KAAAgR,QAAkB,KAClB,KAAAxa,MAAgB,KAChB,KAAAya,MAAgB,KAChB,KAAAC,IAAc,KACd,KAAA7c,SAAmB,KACnB,KAAA8c,eAAyB,KACzB,KAAAC,cAAwB,KAGhB,KAAAC,WAAqB,KACrB,KAAAC,UAAoB,KACpB,KAAAxV,UAAoB,KA4FhC,OArFI,sBAAI,wBAAS,C,IAAb,WACI,OAAOxc,KAAK+xB,Y,IAEhB,SAAczzB,GACV0B,KAAK+xB,WAAazzB,EAClB0B,KAAKwc,UAAY,M,gCAGrB,sBAAI,uBAAQ,C,IAAZ,WACI,OAAOxc,KAAKgyB,W,IAEhB,SAAa1zB,GACT0B,KAAKgyB,UAAY1zB,EACjB0B,KAAKwc,UAAY,M,gCAGrB,sBAAI,uBAAQ,C,IAAZ,WAcI,OAbsB,MAAlBxc,KAAKwc,WAAwC,MAAlBxc,KAAKiyB,WAAsC,MAAjBjyB,KAAKkyB,WAC1DlyB,KAAKwc,UAAY,GACK,MAAlBxc,KAAKiyB,YACLjyB,KAAKwc,UAAYxc,KAAKiyB,WAEL,MAAjBjyB,KAAKkyB,WACkB,KAAnBlyB,KAAKwc,YACLxc,KAAKwc,WAAa,KAEtBxc,KAAKwc,WAAaxc,KAAKkyB,WAIxBlyB,KAAKwc,W,gCAGhB,sBAAI,uBAAQ,C,IAAZ,WACI,GAAkB,MAAdxc,KAAKO,OAAmC,MAAlBP,KAAKiyB,WAAwC,MAAnBjyB,KAAKsxB,YAAuC,MAAjBtxB,KAAKkyB,SAAkB,CAClG,IAAI,EAAO,GAaX,OAZkB,MAAdlyB,KAAKO,QACL,GAASP,KAAKO,MAAQ,KAEJ,MAAlBP,KAAKiyB,YACL,GAASjyB,KAAKiyB,UAAY,KAEP,MAAnBjyB,KAAKsxB,aACL,GAAStxB,KAAKsxB,WAAa,KAEV,MAAjBtxB,KAAKkyB,WACL,GAAQlyB,KAAKkyB,UAEV,EAAK3lB,OAGhB,OAAO,M,gCAGX,sBAAI,0BAAW,C,IAAf,WACI,IAAI4lB,EAAUnyB,KAAKuxB,SAanB,OAZK,EAAAvpB,MAAM+F,mBAAmB/N,KAAKwxB,YAC1B,EAAAxpB,MAAM+F,mBAAmBokB,KAC1BA,GAAW,MAEfA,GAAWnyB,KAAKwxB,UAEf,EAAAxpB,MAAM+F,mBAAmB/N,KAAKyxB,YAC1B,EAAAzpB,MAAM+F,mBAAmBokB,KAC1BA,GAAW,MAEfA,GAAWnyB,KAAKyxB,UAEbU,G,gCAGX,sBAAI,+BAAgB,C,IAApB,WACI,GAAiB,MAAbnyB,KAAKknB,MAA8B,MAAdlnB,KAAKmnB,OAAoC,MAAnBnnB,KAAKonB,WAChD,OAAO,KAEX,IAAMF,EAAOlnB,KAAKknB,MAAQ,IACpBC,EAAQnnB,KAAKmnB,MACbC,EAAapnB,KAAKonB,YAAc,IAClCgL,EAAelL,EAKnB,OAJK,EAAAlf,MAAM+F,mBAAmBoZ,KAC1BiL,GAAgB,KAAOjL,GAE3BiL,GAAgB,KAAOhL,G,gCAG/B,EAjHA,GAAa,EAAAtB,gB,iGCHb,YAGA,aAQI,WAAYroB,GAPZ,KAAAsX,SAAmB,KACnB,KAAAC,SAAmB,KACnB,KAAA0R,qBAA8B,KAC9B,KAAA2L,KAAe,KACf,KAAApd,KAAuB,KACvB,KAAAqd,mBAA8B,KAGrB70B,IAILuC,KAAK0mB,qBAAuBjpB,EAAEipB,qBAC9B1mB,KAAKsyB,mBAAqB70B,EAAE60B,oBAoCpC,OAjCI,sBAAI,kBAAG,C,IAAP,WACI,OAAOtyB,KAAKuyB,QAAUvyB,KAAKiV,KAAK,GAAG3D,IAAM,M,gCAG7C,sBAAI,6BAAc,C,IAAlB,WACI,OAAwB,MAAjBtR,KAAKgV,SAAmB,WAAa,M,gCAGhD,sBAAI,uBAAQ,C,IAAZ,WACI,OAAOhV,KAAK+U,U,gCAGhB,sBAAI,wBAAS,C,IAAb,WACI,OAAO/U,KAAKuyB,SAAWvyB,KAAKiV,KAAKud,MAAK,SAAA9gB,GAAK,OAAAA,EAAE+gB,c,gCAGjD,sBAAI,sBAAO,C,IAAX,WACI,OAAQ,EAAAzqB,MAAM+F,mBAAmB/N,KAAKqyB,O,gCAG1C,sBAAI,wBAAS,C,IAAb,WACI,GAAIryB,KAAKuyB,QAAS,CACd,IAAMjhB,EAAMtR,KAAKiV,KAAK8S,MAAK,SAAArW,GAAK,OAAAA,EAAE+gB,aAClC,GAAW,MAAPnhB,EACA,OAAOA,EAAIohB,UAGnB,OAAO,M,gCAGX,sBAAI,sBAAO,C,IAAX,WACI,OAAoB,MAAb1yB,KAAKiV,MAAgBjV,KAAKiV,KAAKjZ,OAAS,G,gCAEvD,EAlDA,GAAa,EAAA8X,a,oHCJb,MAOI,SAAYtS,GACRxB,KAAKJ,GAAK4B,EAAS5B,GACnBI,KAAK0P,eAAiBlO,EAASkO,eAC/B1P,KAAKnC,KAAO2D,EAAS3D,KACrBmC,KAAKkxB,WAAa1vB,EAAS0vB,WAC3BlxB,KAAKmxB,SAAW3vB,EAAS2vB,UAZpB,EAAAwB,kB,sGCAb,aAKA,EAQI,SAAYh1B,GAPZ,KAAAiC,GAAa,KACb,KAAA8P,eAAyB,KACzB,KAAA7R,KAAe,KACf,KAAAqzB,WAAqB,KACrB,KAAAC,SAAoB,KACpB,KAAAC,cAAyB,KAGhBzzB,IAILqC,KAAKJ,GAAKjC,EAAEiC,GACZI,KAAK0P,eAAiB/R,EAAE+R,eACxB1P,KAAKkxB,WAAavzB,EAAEuzB,WAChBvzB,aAAa,EAAA0zB,aACbrxB,KAAKmxB,SAAWxzB,EAAEwzB,SAClBnxB,KAAKoxB,cAAgBzzB,EAAEyzB,iBAlBtB,EAAAne,kB,kGCNb,YAEA,SACA,SACA,SACA,SACA,SACA,SACA,SAIA,EAyBI,SAAYzR,EAA2BoxB,EAAiB3M,GACpD,GAAgB,MAAZzkB,EAAJ,CAoBA,OAhBAxB,KAAKJ,GAAK4B,EAAS5B,GACnBI,KAAK0P,eAAiBlO,EAASkO,eAC/B1P,KAAKylB,SAAWjkB,EAASikB,SACzBzlB,KAAK4yB,OAASA,EACd5yB,KAAK2lB,KAAOnkB,EAASmkB,KACrB3lB,KAAK4lB,aAAepkB,EAASokB,aAC7B5lB,KAAK0lB,oBAAsBlkB,EAASkkB,oBACpC1lB,KAAK0T,SAAWlS,EAASkS,SACzB1T,KAAKkmB,aAAe1kB,EAAS0kB,aAC7BlmB,KAAKuG,KAAO/E,EAAS+E,KACrBvG,KAAKnC,KAAO2D,EAAS3D,KACrBmC,KAAK2T,MAAQnS,EAASmS,MACtB3T,KAAKimB,cAAiC,MAAjBA,EAAwBA,EAAgBzkB,EAASykB,cACtEjmB,KAAKmmB,YAAc3kB,EAAS2kB,YAC5BnmB,KAAKomB,SAAW5kB,EAAS4kB,SAEjBpmB,KAAKuG,MACT,KAAK,EAAAwN,WAAWC,MACZhU,KAAK6T,MAAQ,IAAI,EAAAgf,UAAUrxB,EAASqS,OACpC,MACJ,KAAK,EAAAE,WAAWmB,WACZlV,KAAKmV,WAAa,IAAI,EAAA2d,eAAetxB,EAAS2T,YAC9C,MACJ,KAAK,EAAApB,WAAWqK,KACZpe,KAAKuS,KAAO,IAAI,EAAAwgB,SAASvxB,EAAS+Q,MAClC,MACJ,KAAK,EAAAwB,WAAWsK,SACZre,KAAK6lB,SAAW,IAAI,EAAAmN,aAAaxxB,EAASqkB,UAM3B,MAAnBrkB,EAASoS,SACT5T,KAAK4T,OAASpS,EAASoS,OAAO5N,KAAI,SAAA+M,GAAK,WAAI,EAAAkgB,UAAUlgB,OAE7B,MAAxBvR,EAASukB,cACT/lB,KAAK+lB,YAAcvkB,EAASukB,YAAY/f,KAAI,SAAA0H,GAAK,WAAI,EAAAwlB,eAAexlB,OAExC,MAA5BlM,EAASwkB,kBACThmB,KAAKgmB,gBAAkBxkB,EAASwkB,gBAAgBhgB,KAAI,SAAAmtB,GAAM,WAAI,EAAAC,oBAAoBD,SAtEjF,EAAAE,c,gGCbb,SAAYC,GACR,mBACA,mBAFJ,CAAY,EAAAA,WAAA,EAAAA,SAAQ,M,qHCApB,SAAYjN,GACR,mBACA,2BAFJ,CAAY,EAAAA,qBAAA,EAAAA,mBAAkB,M,4cCA9B,IAEA,cAcI,WAAY7qB,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAK+3B,qBAAuB,EAAKnsB,oBAAoB,wBACrD,EAAKosB,gBAAkB,EAAKpsB,oBAAoB,mBAChD,EAAKqsB,mBAAqB,EAAKrsB,oBAAoB,sBACnD,EAAKssB,cAAgB,EAAKtsB,oBAAoB,iBAC9C,EAAKusB,qBAAuB,EAAKvsB,oBAAoB,wBACrD,EAAKwsB,0BAA4B,EAAKxsB,oBAAoB,6BAC1D,EAAKysB,cAAgB,EAAKzsB,oBAAoB,iBAC9C,EAAK0sB,aAAe,EAAK1sB,oBAAoB,gBAC7C,EAAK2sB,UAAY,EAAK3sB,oBAAoB,aAC1C,EAAK4sB,eAAiB,EAAK5sB,oBAAoB,kBAC/C,EAAK6sB,YAAc,EAAK7sB,oBAAoB,eAC5C,EAAK8sB,oBAAsB,EAAK9sB,oBAAoB,wBAbzC,EAenB,OAhCoC,OAgCpC,EAhCA,CAFA,MAEoCQ,cAAvB,EAAAusB,kB,kHCFb,SAAYC,GACR,yBACA,2BACA,6BAHJ,CAAY,EAAAA,6BAAA,EAAAA,2BAA0B,M,iHCAtC,W,GAMA,K,6CCNiM,6BAAwC,YAAS,2B,6BAAT,qD,mCDQzO,aAYI,WAAoB10B,GAAA,KAAAA,cANX,KAAA20B,UAAW,EAEpB,KAAAC,WAAa,EACb,KAAAjV,MAAQ,Y,OAKR,YAAAle,YAAA,WAEI,OADAnB,KAAKs0B,WAA2B,MAAdt0B,KAAKu0B,MAAgB,EAAuB,IAAlBv0B,KAAKu0B,MAAQ,GACjDv0B,KAAKu0B,OACT,KAAK,EACDv0B,KAAKqf,MAAQ,aACbrf,KAAKw0B,KAAOx0B,KAAKN,YAAYnB,EAAE,UAC/B,MACJ,KAAK,EACDyB,KAAKqf,MAAQ,aACbrf,KAAKw0B,KAAOx0B,KAAKN,YAAYnB,EAAE,QAC/B,MACJ,KAAK,EACDyB,KAAKqf,MAAQ,aACbrf,KAAKw0B,KAAOx0B,KAAKN,YAAYnB,EAAE,QAC/B,MACJ,QACIyB,KAAKqf,MAAQ,YACbrf,KAAKw0B,KAAqB,MAAdx0B,KAAKu0B,MAAgBv0B,KAAKN,YAAYnB,EAAE,QAAU,O,iCA3BjEk2B,GAAyB,qC,iCAAzBA,EAAyB,+QCZtC,4BAAuB,4CAA0K,uDAAiE,iCAAO,iCAAO,iB,MAApP,oEAAkD,gEAAwC,4CAA0F,yD,kDDQhN,GAIa,EAAAA,6B,+DAAAA,EAAyB,E,KAJrC,EAAAxtB,U,MAAU,CACPnG,SAAU,wBACVoG,YAAa,wC,2CAGJqtB,MAAK,E,KAAb,EAAAvzB,QACQqzB,SAAQ,E,KAAhB,EAAArzB,W,++CEdL,WASA,GAFA,KAEA,QAMA,GAJA,KACA,MACA,KAEA,O,mEAEA,aAcI,WAAoB4e,EAAgClgB,EACxCg1B,EAAwC3Y,GADhC,KAAA6D,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBAAwC,KAAA3Y,gBAR1C,KAAA4Y,SAAW,IAAI,EAAA9N,a,OAUnB,YAAA+N,OAAN,W,sGACI,OAA2B,MAAvB50B,KAAK60B,gBAAkD,KAAxB70B,KAAK60B,gBACpC70B,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,uBACvB,MAGE8mB,EAAU,IAAI,EAAAzK,4BACpB,EAAAyK,EAA6B,EAAArlB,KACzB,GAAMA,KAAK+b,cAAcgZ,aAAa/0B,KAAK60B,eAAgB,Q,OAD/D,EAAQG,mBAAqB,EAAKA,mBAC9B,S,iBAGA,O,sBAAQh1B,KAAKuG,MACT,KAAM,EACFvG,KAAKi1B,YAAcj1B,KAAK4f,WAAWsV,oBAAoB7P,GACvD,MACJ,KAAK,EAAA1G,sBAAsBwW,IAC3B,KAAK,EAAAxW,sBAAsByW,gBACI,MAAvBp1B,KAAK0P,eACL1P,KAAKi1B,YAAcj1B,KAAK4f,WAAWyV,4BAA4Br1B,KAAK0P,eAAgB2V,GAEpFrlB,KAAKi1B,YAAcj1B,KAAK4f,WAAW0V,gBAAgBjQ,GAEvD,MACJ,KAAK,EAAA1G,sBAAsB4W,MACvBv1B,KAAKi1B,YAAcj1B,KAAK4f,WAAW4V,kBAAkBnQ,GACrD,MACJ,KAAK,EAAA1G,sBAAsB8W,SACvBz1B,KAAKi1B,YAAcj1B,KAAK4f,WAAW8V,qBAAqBrQ,GACxD,MACJ,KAAK,EAAA1G,sBAAsBgX,cACvB31B,KAAKi1B,YAAcj1B,KAAK4f,WAAWgW,0BAA0BvQ,GAC7D,MACJ,KAAK,EAAA1G,sBAAsBkX,QACvB71B,KAAKi1B,YAAcj1B,KAAK4f,WAAWkW,oBAAoBzQ,GAI9C,SAAMrlB,KAAKi1B,a,cAAtBzzB,EAAW,SACjBxB,KAAK20B,SAAShN,KAAK,CACfnmB,SAAUA,EACVwzB,mBAAoBh1B,KAAKg1B,qB,6FAtD5Be,GAAwB,kJ,iCAAxBA,EAAwB,0pB,GAAA,MCrBrC,+BAAY,2CAAY,EAAAnB,YAAyD,4CAAyB,wCAAG,Y,mBAAiC,iBAAK,8CAA4B,a,oBAAuB,iBAAS,gDAA0F,uEAA1F,iBAA+J,kCAAO,8CAA2B,iDAAoF,uC,oBAAsF,6CAAM,a,oBAAqB,iBAAQ,kCAAU,iDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAQ,kB,4BAA7rB,2CAA2E,8EAAkE,sEAA0H,wDAAgK,kDAA4D,+EAA2D,oEAAoH,mE,yMDiBprB,GAIa,EAAAmB,4B,+DAAAA,EAAwB,E,KAJpC,EAAA9uB,U,MAAU,CACPnG,SAAU,wBACVoG,YAAa,wC,8GAGJX,KAAM,CAAF,C,KAAZ,EAAAvF,QACQ0O,eAAgB,CAAF,C,KAAtB,EAAA1O,QACS2zB,SAAQ,E,KAAjB,EAAAjM,Y,+zDEvBL,YAEA,SAEA,SAEA,SACA,SACA,QAEA,SACA,SACA,SACA,SACA,SAGA,cAwBI,WAAYra,EAAkBoL,EAAmC8M,QAAnC,IAAA9M,OAAA,QAAmC,IAAA8M,MAAA,MAAjE,MACI,cAAO,KACP,GAAW,MAAPlY,E,SA4BJ,OAxBA,EAAKkL,iBAAiB,EAAMlL,EAAK,CAC7BzO,GAAI,KACJgzB,OAAQ,KACRljB,eAAgB,KAChB+V,SAAU,KACV5nB,KAAM,KACN8V,MAAO,MACR8F,EAAkB,CAAC,KAAM,SAAU,iBAAkB,aAExD,EAAKlT,KAAO8H,EAAI9H,KAChB,EAAKmN,SAAWrF,EAAIqF,SACpB,EAAKgS,oBAAsBrX,EAAIqX,oBAC/B,EAAKC,KAAOtX,EAAIsX,KACQ,MAApBtX,EAAIuX,aACJ,EAAKA,aAAevX,EAAIuX,aAExB,EAAKA,cAAe,EAExB,EAAKM,aAAmC,MAApB7X,EAAI6X,aAAuB,IAAI2C,KAAKxa,EAAI6X,cAAgB,KAC5E,EAAKD,cAAgB5X,EAAI4X,cACzB,EAAKM,UAAYA,EACjB,EAAKJ,YAAiC,MAAnB9X,EAAI8X,YAAsB,IAAI0C,KAAKxa,EAAI8X,aAAe,KACzE,EAAKC,SAAW/X,EAAI+X,SAEZ,EAAK7f,MACT,KAAK,EAAAwN,WAAWC,MACZ,EAAKH,MAAQ,IAAI,EAAAG,MAAM3F,EAAIwF,MAAO4F,GAClC,MACJ,KAAK,EAAA1F,WAAWmB,WACZ,EAAKC,WAAa,IAAI,EAAAD,WAAW7G,EAAI8G,WAAYsE,GACjD,MACJ,KAAK,EAAA1F,WAAWqK,KACZ,EAAK7L,KAAO,IAAI,EAAA6L,KAAK/P,EAAIkE,KAAMkH,GAC/B,MACJ,KAAK,EAAA1F,WAAWsK,SACZ,EAAKwH,SAAW,IAAI,EAAAxH,SAAShQ,EAAIwX,SAAUpM,G,OAM5B,MAAnBpL,EAAI0X,YACJ,EAAKA,YAAc1X,EAAI0X,YAAY/f,KAAI,SAAA0H,GAAK,WAAI,EAAAsoB,WAAWtoB,EAAG+L,MAE9D,EAAKsM,YAAc,KAGL,MAAd1X,EAAIuF,OACJ,EAAKA,OAASvF,EAAIuF,OAAO5N,KAAI,SAAA+M,GAAK,WAAI,EAAAkjB,MAAMljB,EAAG0G,MAE/C,EAAK7F,OAAS,KAGS,MAAvBvF,EAAI2X,gBACJ,EAAKA,gBAAkB3X,EAAI2X,gBAAgBhgB,KAAI,SAAAmtB,GAAM,WAAI,EAAA+C,SAAS/C,EAAI1Z,MAEtE,EAAKuM,gBAAkB,K,EAuHnC,OA7M4B,OA0FlB,YAAAvL,QAAN,SAAc0b,G,gHAGV,OAFMC,EAAQ,IAAI,EAAA3iB,WAAWzT,MAE7B,GAAMA,KAAKga,WAAWoc,EAAO,CACzBv4B,KAAM,KACN8V,MAAO,MACR3T,KAAK0P,eAAgBymB,I,cAHxB,SAKQn2B,KAAKuG,M,KACJ,EAAAwN,WAAWC,MAAX,Y,KAGA,EAAAD,WAAWmB,WAAX,Y,KAGA,EAAAnB,WAAWqK,KAAX,Y,KAGA,EAAArK,WAAWsK,SAAX,Y,oBARa,OAAd,EAAA+X,EAAc,GAAMp2B,KAAK6T,MAAM4G,QAAQza,KAAK0P,eAAgBymB,I,OAC5D,OADA,EAAMtiB,MAAQ,SACd,O,OAEmB,OAAnB,EAAAuiB,EAAmB,GAAMp2B,KAAKmV,WAAWsF,QAAQza,KAAK0P,eAAgBymB,I,OACtE,OADA,EAAMhhB,WAAa,SACnB,O,OAEa,OAAb,EAAAihB,EAAa,GAAMp2B,KAAKuS,KAAKkI,QAAQza,KAAK0P,eAAgBymB,I,OAC1D,OADA,EAAM5jB,KAAO,SACb,O,OAEiB,OAAjB,EAAA6jB,EAAiB,GAAMp2B,KAAK6lB,SAASpL,QAAQza,KAAK0P,eAAgBymB,I,OAClE,OADA,EAAMtQ,SAAW,SACjB,O,QAEA,a,eAGF3L,EAAQla,KAAK0P,eAEK,MAApB1P,KAAK+lB,aAAuB/lB,KAAK+lB,YAAY/pB,OAAS,GAChD,EAAqB,GAC3B,GAAMgE,KAAK+lB,YAAYsQ,QAAO,SAACC,EAASC,GACpC,OAAOD,EAAQh1B,MAAK,WAChB,OAAOi1B,EAAW9b,QAAQP,EAAOic,MAClC70B,MAAK,SAAAk1B,GACJ,EAAYl6B,KAAKk6B,QAEtBlc,QAAQC,aARX,O,QAEA,SAOA6b,EAAMrQ,YAAc,E,0BAGL,MAAf/lB,KAAK4T,QAAkB5T,KAAK4T,OAAO5X,OAAS,GACtC,EAAgB,GACtB,GAAMgE,KAAK4T,OAAOyiB,QAAO,SAACC,EAASjiB,GAC/B,OAAOiiB,EAAQh1B,MAAK,WAChB,OAAO+S,EAAMoG,QAAQP,EAAOic,MAC7B70B,MAAK,SAAAm1B,GACJ,EAAOn6B,KAAKm6B,QAEjBnc,QAAQC,aARX,O,QAEA,SAOA6b,EAAMxiB,OAAS,E,0BAGS,MAAxB5T,KAAKgmB,iBAA2BhmB,KAAKgmB,gBAAgBhqB,OAAS,GACxD,EAAyB,GAC/B,GAAMgE,KAAKgmB,gBAAgBqQ,QAAO,SAACC,EAASnD,GACxC,OAAOmD,EAAQh1B,MAAK,WAChB,OAAO6xB,EAAG1Y,QAAQP,EAAOic,MAC1B70B,MAAK,SAAAo1B,GACJ,EAAgBp6B,KAAKo6B,QAE1Bpc,QAAQC,aARX,O,QAEA,SAOA6b,EAAMpQ,gBAAkB,E,mBAG5B,MAAO,CAAP,EAAOoQ,WAGX,YAAAO,aAAA,SAAa/D,GACT,IAAMj1B,EAAI,IAAI,EAAA01B,WAoBd,OAnBA11B,EAAEiC,GAAKI,KAAKJ,GACZjC,EAAE+R,eAAiB1P,KAAK0P,eACxB/R,EAAE8nB,SAAWzlB,KAAKylB,SAClB9nB,EAAEi1B,OAAgC,MAAvB5yB,KAAK0P,eAAyBkjB,EAAS,KAClDj1B,EAAEgoB,KAAO3lB,KAAK2lB,KACdhoB,EAAEioB,aAAe5lB,KAAK4lB,aACtBjoB,EAAE+nB,oBAAsB1lB,KAAK0lB,oBAC7B/nB,EAAE+V,SAAW1T,KAAK0T,SAClB/V,EAAEuoB,aAAoC,MAArBlmB,KAAKkmB,aAAuBlmB,KAAKkmB,aAAauD,cAAgB,KAC/E9rB,EAAE4I,KAAOvG,KAAKuG,KACd5I,EAAEsoB,cAAgBjmB,KAAKimB,cACvBtoB,EAAEwoB,YAAkC,MAApBnmB,KAAKmmB,YAAsBnmB,KAAKmmB,YAAYsD,cAAgB,KAC5E9rB,EAAEyoB,SAAWpmB,KAAKomB,SAElBpmB,KAAK6Z,eAAe7Z,KAAMrC,EAAG,CACzBE,KAAM,KACN8V,MAAO,OAGHhW,EAAE4I,MACN,KAAK,EAAAwN,WAAWC,MACZrW,EAAEkW,MAAQ7T,KAAK6T,MAAM+iB,cACrB,MACJ,KAAK,EAAA7iB,WAAWmB,WACZvX,EAAEwX,WAAanV,KAAKmV,WAAW0hB,mBAC/B,MACJ,KAAK,EAAA9iB,WAAWqK,KACZzgB,EAAE4U,KAAOvS,KAAKuS,KAAKukB,aACnB,MACJ,KAAK,EAAA/iB,WAAWsK,SACZ1gB,EAAEkoB,SAAW7lB,KAAK6lB,SAASkR,iBAenC,OATmB,MAAf/2B,KAAK4T,SACLjW,EAAEiW,OAAS5T,KAAK4T,OAAO5N,KAAI,SAAA+M,GAAK,OAAAA,EAAEikB,kBAEd,MAApBh3B,KAAK+lB,cACLpoB,EAAEooB,YAAc/lB,KAAK+lB,YAAY/f,KAAI,SAAA0H,GAAK,OAAAA,EAAEupB,uBAEpB,MAAxBj3B,KAAKgmB,kBACLroB,EAAEqoB,gBAAkBhmB,KAAKgmB,gBAAgBhgB,KAAI,SAAAmtB,GAAM,OAAAA,EAAG+D,4BAEnDv5B,GAEf,EA7MA,CAA4B,WAAf,EAAAw5B,U,+GClBb,mBAAsB,EAAAC,2B,w/CCAtB,W,GAKA,MACA,KACA,MACA,OACA,K,yJCTumB,2BAA8E,2CAAmE,Y,mBAAqB,iBAAK,kC,8BAAzE,mFAA+C,mE,sBAAgC,2BAA6E,2CAA4C,Y,mBAAqB,iBAAK,kC,MAA1B,mE,yBAAvV,6BAA6C,8CAAiL,8CAAyJ,2C,6BAA1R,0DAAiL,0D,yBAA0uB,6BAAoF,+CAAgG,6CAAmC,2CAAM,Y,mBAAuB,iBAAQ,gDAA0B,aAAQ,iBAAS,kCAAO,mC,6BAA9M,2CAAa,gBAAb,CAAa,aAAgH,oEAAyD,4C,gDDax0D,aAUI,WAAoBC,EAA4Cpa,EACpDqa,EAAoCC,EAAkCC,GAD9D,KAAAH,mBAA4C,KAAApa,uBACpD,KAAAqa,eAAoC,KAAAC,cAAkC,KAAAC,cANlF,KAAAC,YAAa,EAGb,KAAAC,UAAwB,GAIpB13B,KAAKy3B,WAAaz3B,KAAKid,qBAAqB0a,a,OAG1C,YAAAn3B,SAAN,W,oGACgB,OAAZ,EAAAR,KAAY,GAAMA,KAAKs3B,aAAaM,W,OACvB,OADb,EAAK/5B,KAAO,SACZ,EAAAmC,KAAa,GAAMA,KAAKs3B,aAAaO,Y,OAMjC,OANJ,EAAK3gB,MAAQ,SACI,MAAblX,KAAKnC,MAAqC,KAArBmC,KAAKnC,KAAK0O,SAC/BvM,KAAKnC,KAAOmC,KAAKkX,OAIjB,GAAMlX,KAAKw3B,YAAYM,e,cAAiB,MAAxC,eACA,GAAM93B,KAAKw3B,YAAYO,UAAS,I,OAAhC,S,iBAEa,OAAjB,EAAA/3B,KAAiB,GAAMA,KAAKu3B,YAAYS,mB,cAAxC,EAAKN,UAAY,S,YAGrB,YAAAO,KAAA,WACIj4B,KAAKq3B,iBAAiBa,KAAK,cAG/B,YAAAC,OAAA,WACIn4B,KAAKq3B,iBAAiBa,KAAK,W,iCA9BtBE,GAAe,gM,iCAAfA,EAAe,o0DCjB5B,4BAAuG,4CAAwB,0C,mBAA4F,qCAAgD,iCAAK,6CAAuC,6CAAwB,6CAAgD,4CAAwC,a,oBAAoB,iBAAK,kCAAM,6CAAgD,4CAAwC,a,oBAAiB,iBAAK,kCAAM,yDAAuY,6CAAgD,6CAAwC,a,oBAAkB,iBAAK,kCAAM,6CAAgD,6CAA2C,a,oBAAqB,iBAAK,kCAAM,kCAAM,kCAAO,8CAA6D,8CAA+B,6CAA0I,wCAA2D,kCAAK,+CAA8E,kDAAqT,0CAAqC,6CAAkE,wCAAoD,a,oBAAuB,iBAAK,6CAA2G,wCAA+D,a,oBAAqB,iBAAK,6CAAgG,wCAAwD,a,oBAAqB,iBAAK,0CAAqC,kDAA4C,wCAAS,EAAAH,UAAS,wCAAoD,a,oBAAqB,iBAAU,kDAA4C,wCAAS,EAAAE,YAAW,wCAAwD,a,oBAAoB,iBAAU,kCAAO,kCAAM,kCAAM,kCAAO,kCAAO,kB,MAAxsF,6DAA6G,mGAAiQ,oEAAuH,gEAA2C,0DAAgd,iEAAwH,oEAA4d,4CAAqZ,8EAAsM,4EAAkL,4EAAiL,4EAAuJ,6E,wKDalsF,GAIa,EAAAC,mB,+DAAAA,EAAe,E,KAJ3B,EAAAnxB,U,MAAU,CACPnG,SAAU,aACVoG,YAAa,6B,0nDEfjB,W,GAKA,K,oBAEA,aAQI,WAAoB+V,GAAA,KAAAA,uBAFpB,KAAA3K,KAAe,O,OAIT,YAAA9R,SAAN,W,gGAEmB,OADfR,KAAKsS,MAAO,IAAIuW,MAAOE,cAAc/e,WACrC,EAAAhK,KAAe,GAAMA,KAAKid,qBAAqBob,yB,cAA/C,EAAKC,QAAU,S,6CARVC,GAAe,8C,iCAAfA,EAAe,0LCX5B,4BAA0C,4CAAkB,4CAAkB,YAAyD,iBAAO,uCAAoC,4CAA6B,a,oBAAqC,iBAAO,kCAAO,kCAAO,kB,MAA3L,+FAAiI,6F,uCDO/M,GAIa,EAAAA,mB,+DAAAA,EAAe,E,KAJ3B,EAAAtxB,U,MAAU,CACPnG,SAAU,aACVoG,YAAa,6B,2iDETjB,WAoBA,GAZA,KAEA,KAEA,KACA,MACA,KACA,KACA,MACA,MACA,KAEA,QACA,SAOA,SACA,SACA,QACA,SAEA,SACA,SACA,SACA,S,uJCpCA,6BAA+B,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,mDAA4C,6BAAwD,wCAAG,Y,mBAAiC,iBAAK,+CAAY,4FAAqE,4CAAyB,gDAAkB,a,oBAAwB,iBAAS,2CAA6E,gDAAoC,a,oBAAoE,iBAAS,kCAAO,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAmB,iBAAQ,kCAAU,kCAAQ,2C,mDAArmB,8EAAwE,0DAA0F,sEAAkJ,iHAA6I,kDAA4D,+EAA2D,mE,mDAA6qB,6BAAoD,+CAAmB,Y,mBAA6B,iBAAS,+CAAgE,6GAAhE,iBAAyG,+CAA0B,Y,oBAAmC,iBAAS,kC,iCAArN,0EAAsG,0DAAmE,gF,mDAA3qB,6BAA6C,6CAA+B,+CAAkB,Y,mBAA6B,iBAAS,+CAA8D,iGAA9D,iBAA2F,iCAAO,+CAA+B,iDAA0B,a,oBAAyB,iBAAS,iDAA8E,yGAA9E,iBAAmH,kCAAO,kDAAmS,kC,iCAAhoB,0EAAoG,8CAA6F,uEAAgH,sDAA2E,oD,mDAAqkB,6BAAwC,6CAA+B,+CAA0B,Y,mBAAyB,iBAAS,+CAA8E,yGAA9E,iBAA0G,iCAAO,kC,iCAAnJ,sEAAgH,uD,mDAA3gB,0BAA0B,6CAAoC,+CAAwF,0GAA2B,4FAAnH,iBAAuJ,+CAAoD,Y,mBAAiC,iBAAS,iCAAO,kDAA2P,kC,iCAA/Z,uDAAmH,8EAAmE,qD,sBAAg7B,4BAA6C,Y,mBAAoC,kB,MAApC,yF,sBAA6C,4BAAwC,Y,mBAAuC,kB,MAAvC,4F,sBAAgD,4BAA6C,Y,mBAAwC,kB,MAAxC,6F,yBAAiD,4BAAuE,Y,mBAAkE,kB,wCAAlE,oG,yBAAhf,6BAAmG,4CAAO,Y,mBAAsC,iBAAS,gDAA0F,gDAAwF,iDAA8F,kDAAkJ,4C,4DAAjd,0FAAuD,kDAA0F,6CAAwF,kDAA8F,6E,yBAAyL,4BAA8D,Y,mBAAyD,kB,wCAAzD,2F,yBAAkE,4BAA4F,Y,mBAAgE,kB,wCAAhE,mG,sBAAyE,4BAA2C,Y,mBAAqC,kB,MAArC,0F,yBAA8C,4BAAgD,Y,mBAAqE,kB,wCAArE,uG,yBAA8E,4BAAoD,Y,mBAA2E,kB,wCAA3E,6G,sBAAoF,4BAAiD,Y,mBAAyC,kB,MAAzC,8F,yBAAkD,4BAA+C,Y,mBAA8E,kB,wCAA9E,+G,sBAAuF,4BAA2C,Y,mBAAsC,kB,MAAtC,2F,sBAA+C,4BAAwC,Y,mBAA6B,kB,MAA7B,kF,sBAAsC,4BAA8C,Y,mBAAqC,kB,MAArC,0F,uBAA8C,4BAA6C,Y,mBAAoC,kB,MAApC,yF,uBAA6C,4BAAiD,Y,mBAA8B,kB,MAA9B,mF,uBAAuC,4BAA8D,Y,mBAAsC,kB,MAAtC,2F,0BAA+C,4BAAuE,Y,mBAAkE,kB,wCAAlE,oG,0BAAv9C,gDAAgI,gDAAqK,gDAAyF,gDAA8H,gDAAwI,kDAAmG,kDAAsI,kDAA0F,kDAA8E,kDAA4F,mDAA0F,mDAAwF,mDAA6G,mDAAkJ,kB,4DAA1hD,mEAAgI,+EAAqK,gDAAyF,qDAA8H,yDAAwI,sDAAmG,oDAAsI,gDAA0F,6CAA8E,mDAA4F,kDAA0F,sDAAwF,mEAA6G,6E,0BAA6Y,6BAAkE,Y,6DAAqH,2B,wCAArH,2K,0BAAxP,6BAAmD,Y,6DAAmI,yCAAuM,2C,wCAA1U,wKAAkJ,gE,0BAAnQ,2BAA8D,yDAA6Y,kC,uCAA9X,iD,0BAAsY,2BAA0F,Y,6DAAiG,kB,uCAAjG,qJ,uBAAyG,2BAA6D,Y,mBAAwB,kB,MAAxB,sE,oDAAn2G,6BAA+F,+CAA0I,oGAAqB,sFAA/J,iBAA6L,+CAA4E,Y,mBAAkD,+BAAoB,Y,mBAA8D,iBAAS,2DAA2kB,0FAAglD,kDAAmd,mDAAmM,kDAA6F,kCAAS,kC,mEAAjvG,qEAA0C,gCAAmC,qBAAoF,sEAA4C,uFAAsE,yFAAsF,0EAA6D,cAAslE,mEAAmd,6EAAmM,oE,oDAAkJ,6BAAwF,4CAAiB,Y,mBAAkB,iBAAM,6CAAkB,6CAAoB,gDAA6B,a,oBAAsB,iBAAS,iDAAsF,4G,oBAAtF,iBAA4L,iDAAoC,a,oBAAiC,iBAAS,kCAAO,kCAAO,2C,iCAAlZ,+DAA2F,oEAAwK,0FAAnD,0CAA0I,iF,oDAAkH,6BAA0F,6CAA+B,+CAA6B,Y,mBAAgC,iBAAS,+CAAsF,4G,mBAAtF,iBAAmL,iDAAoC,a,4CAA+G,iBAAS,kCAAO,kC,iCAA/X,6EAAkL,yFAAnD,0CAAiI,wK,oDAA2pB,6BAA2E,6CAAyB,+CAA6F,+GAA7F,iBAA+H,+CAAyD,Y,mBAA0B,iBAAS,iCAAO,iDAAoC,a,gEAAyE,iBAAS,kC,iCAA3P,4DAA2F,uEAA8E,uI,0BAAohB,4BAAyC,Y,uGAA6K,kB,wCAA7K,2O,uBAA8O,2BAAuC,Y,mBAA6B,kB,MAA7B,kF,uBAAqC,2BAAwC,Y,mBAAmB,kB,MAAnB,wE,0BAA5K,4BAAwD,gDAA4E,gDAAmE,Y,oFAAsL,kB,6DAA9T,gDAA4E,iDAA4D,qO,0BAA+L,4BAA0D,Y,uGAAyP,kB,6DAAzP,oT,0BAAkQ,4BAA4E,Y,uGAAwK,kB,wCAAxK,oP,0BAAljC,6BAA+C,Y,mBAAsB,kCAA+N,mDAAsY,kDAA4T,kDAA6P,4C,4DAAprC,2EAA8B,gDAA+N,+DAAsY,iEAA4T,oF,0BAA0U,4BAAyC,Y,uGAA6J,kB,wCAA7J,oO,uBAA8N,2BAAuC,Y,mBAA6B,kB,MAA7B,kF,uBAAqC,2BAAwC,Y,mBAAmB,kB,MAAnB,wE,0BAA5K,4BAAwD,gDAA4E,gDAAmE,Y,oFAAuK,kB,6DAA/S,gDAA4E,iDAA4D,8N,0BAAgL,4BAA0D,Y,uGAA0O,kB,6DAA1O,6S,0BAAmP,4BAA4E,Y,uGAAyJ,kB,wCAAzJ,6O,0BAApgC,6BAAgD,Y,mBAAqB,kCAA+M,mDAAuX,kDAA6S,kDAA8O,4C,4DAAtnC,0EAA6B,gDAA+M,+DAAuX,iEAA6S,oF,oDAA9+E,6BAAyF,+CAAuI,iGAAvI,iBAA2J,+CAAuE,yDAAmvC,yDAAsrC,iCAAS,kC,+CAAhlF,mEAAqC,6BAA6B,kBAAqD,oEAAsD,+CAAmvC,iD,sBAA6zC,gC,KAAwC,8B,0BAA8e,+BAA+G,Y,sCAAsE,kB,8BAAtE,qI,0BAAwH,+CAAoD,Y,sCAA6D,iBAAS,iB,8BAAtE,4H,uBAAqF,6BAA2C,gDAAkD,2C,MAArC,+C,oDAAx8L,0BAA4C,0DAA2gB,4CAAiB,Y,mBAAmB,iBAAM,kDAA4hB,8CAAkB,+CAA+B,iDAA+B,a,oBAAgC,iBAAS,iDAA4F,8G,oBAA5F,iBAA0M,iDAAoC,a,gEAAqI,iBAAS,kCAAO,kCAAO,+CAAkB,oDAAmc,kCAAO,8CAA0B,a,oBAAoB,iBAAM,mDAAovF,yCAAkB,8CAA+B,a,oBAA+E,iBAAM,0DAA2E,wDAAc,6GAAsC,iBAAgB,+CAA8B,+CAAiC,a,4CAA6D,qBAAM,+CAAe,a,4CAAkE,0BAAgB,kCAAO,yCAA6B,6CAAmB,8BAAQ,a,oBAAmB,iBAAU,a,4CAA4D,iBAAK,kCAAO,oDAA8L,wFAAkL,0DAA6G,kC,qDAAl8L,uGAA6gB,iEAA2C,sGAA0lB,+EAA+L,qGAA1D,4CAAkJ,sMAA6M,0EAAqc,mEAA8F,yDAAiuF,gIAAmG,yDAAgM,2HAAkF,gIAAiJ,yEAA6B,iIAA+G,sEAAuC,cAAiT,2D,uBAAqG,6BAAgD,qDAA8B,Y,mBAAwC,iBAAe,kC,MAAxE,4CAAiB,sF,oDAAsS,gCAAwD,0FAAuC,Y,mBAAoB,iB,MAApB,0E,oDAAl3W,+BAAY,4FAAmH,4CAAiB,Y,mBAA+B,iBAAM,gDAAquB,+CAA4jB,8CAAiB,a,oBAA2B,iBAAM,oDAAm5G,mDAAogM,kDAA4I,+CAAmB,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAmB,iBAAQ,kCAAU,qDAA6H,kCAAO,kC,mDAAr3W,2CAA8G,6EAAuD,yDAAytB,kDAAukB,0EAAoE,4DAAs3G,oEAAogM,2DAAkN,kDAA4D,+EAA2D,kEAAiH,kDDwCjtY,kBAkCI,WAAoB0Y,EAAgClgB,EACxCg1B,EAAgCzX,EAChClB,EAAsCyc,EAAwBhB,EAC9D7O,EAAsC4O,GAH9B,KAAA3X,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBACA,KAAA3Y,gBAAsC,KAAAyc,SAAwB,KAAAhB,cAC9D,KAAA7O,gBAAsC,KAAA4O,cA5BzC,KAAAkB,UAAW,EACX,KAAAC,YAAa,EACb,KAAAC,QAAuB,EAAAC,YAAYC,KACnC,KAAAC,KAAiB,EAAAC,SAASF,KAEzB,KAAAG,UAAY,IAAI,EAAAnS,aAChB,KAAAoS,WAAa,IAAI,EAAApS,aAE3B,KAAAtlB,SAAmB,EACnB,KAAAk2B,YAAsB,EACtB,KAAAyB,eAAyB,EACzB,KAAAC,oBAA8B,EAC9B,KAAAC,kBAA4B,EAC5B,KAAAC,gBAA0B,EAK1B,KAAAC,aAAe,EAAAV,YAEf,KAAAW,sBAAgC,EAChC,KAAAC,WAAqB,EAQjBx5B,KAAKy3B,WAAaxa,EAAqB0a,a,OAGrC,YAAAn3B,SAAN,W,uGACSR,KAAKy3B,WAAN,MACc,GAAMz3B,KAAK4f,WAAW6Z,Y,OAA9BC,EAAQ,SACd15B,KAAK05B,MAAQA,EAAMl+B,KACfwE,KAAK24B,UAAY,EAAAC,YAAYe,YAAc35B,KAAK24B,UAAY,EAAAC,YAAYgB,QACxE55B,KAAKk5B,eAAgB,G,wBAIzBl5B,KAAKuwB,aACLvwB,KAAKk5B,eAAgB,EACrBl5B,KAAK65B,wBAGT75B,KAAKuB,SAAU,E,YAGnB,sBAAI,iCAAkB,C,IAAtB,WACI,OAA8B,MAAvBvB,KAAK0P,gB,gCAGhB,sBAAI,2BAAY,C,IAAhB,sBACI,OAAO1P,KAAK05B,MAAM3R,MAAK,SAAA+Q,GAAQ,OAAAA,EAAKvyB,OAAS,EAAKuyB,S,gCAGtD,sBAAI,mCAAoB,C,IAAxB,WACI,OAAO94B,KAAK85B,aAAaC,SACnB,OACA,S,gCAGV,sBAAI,iCAAkB,C,IAAtB,sBACQC,EAAah6B,KAAK05B,MAAMnrB,QAAO,SAAAuqB,GAAQ,OAAAA,EAAKvyB,OAAS,EAAAwyB,SAASkB,UAelE,OAbIj6B,KAAKk5B,gBACLc,EAAaA,EAAWzrB,QAAO,SAAAuqB,GAAQ,OAAAA,EAAKoB,wBAG3Cl6B,KAAKy4B,WACNuB,EAAaA,EAAWzrB,QAAO,SAAAuqB,GAAQ,OAAAA,EAAKH,UAAY,EAAAC,YAAYC,SAGxEmB,EAAaA,EACRzrB,QAAO,SAAAuqB,GAAQ,OAACA,EAAKqB,aACdrB,EAAKsB,WACLtB,EAAKiB,UAAYjB,EAAKH,UAAY,EAAKW,aAAaT,U,gCAKpE,sBAAI,8BAAe,C,IAAnB,sBACI,OAAO74B,KAAK05B,MAAMnrB,QAAO,SAAAuqB,GAAQ,OAACA,EAAKqB,aAAerB,EAAKsB,UAAYtB,EAAKH,UAAY,EAAKA,Y,gCAGjG,YAAA0B,8BAAA,SAA8BP,GAC1B,OAAKA,EAAaC,SAGXD,EAAaQ,4BAA8B,GAFvCR,EAAaQ,6BAK5B,YAAAC,iBAAA,SAAiBT,GACb,OAAKA,EAAaC,SAGXD,EAAaU,UAAY,GAFrBV,EAAaU,WAK5B,YAAAC,uBAAA,SAAuB3B,GACnB,OAAKA,EAAK4B,2BAIH5B,EAAKwB,4BAA8B5uB,KAAKslB,IAAIhxB,KAAKo5B,mBAAqB,GAHlE,GAMf,YAAAuB,UAAA,SAAU7B,GACN,OAAKA,EAAK8B,yBAIH9B,EAAK0B,UAAY9uB,KAAKslB,IAAIhxB,KAAKq5B,iBAAmB,GAH9C,GAMf,sBAAI,uBAAQ,C,IAAZ,WACI,IAAIwB,EAAW76B,KAAK85B,aAAagB,UAUjC,OATI96B,KAAK85B,aAAac,0BAA4B56B,KAAKq5B,kBACnDwB,GAAY76B,KAAK26B,UAAU36B,KAAK85B,eAEhC95B,KAAK85B,aAAaY,4BAA8B16B,KAAKo5B,oBACrDyB,GAAY76B,KAAKy6B,uBAAuBz6B,KAAK85B,eAE7C95B,KAAK85B,aAAaiB,wBAA0B/6B,KAAKm5B,qBACjD0B,GAAY76B,KAAK85B,aAAakB,0BAE3BH,G,gCAGX,sBAAI,yBAAU,C,IAAd,WACI,OAA4B,MAArB76B,KAAKi7B,cAAqD,MAA7Bj7B,KAAKi7B,aAAaC,QACjDl7B,KAAKi7B,aAAaC,QAAU,IAAOl7B,KAAKm7B,SACzC,G,gCAGR,sBAAI,oBAAK,C,IAAT,WACI,OAAQn7B,KAAKm7B,SAAWn7B,KAAKo7B,YAAe,G,gCAGhD,YAAAC,eAAA,WACIr7B,KAAK84B,KAAO94B,KAAKs7B,gBAAgB,GAAG/0B,KAC/BvG,KAAK85B,aAAaiB,yBACnB/6B,KAAKm5B,oBAAqB,GAEzBn5B,KAAK85B,aAAaY,6BACnB16B,KAAKo5B,kBAAoB,GAExBp5B,KAAK85B,aAAac,yBAEX56B,KAAKq5B,iBAAoBr5B,KAAK85B,aAAayB,YACnDv7B,KAAK85B,aAAac,2BAClB56B,KAAKq5B,gBAAkB,GAHvBr5B,KAAKq5B,gBAAkB,EAK3Br5B,KAAKw5B,UAAiD,MAArCx5B,KAAK85B,aAAa0B,iBAGvC,YAAA3B,qBAAA,WACS75B,KAAKk5B,gBAAiBl5B,KAAK85B,aAAaI,sBAG7Cl6B,KAAK24B,QAAU,EAAAC,YAAYgB,MAC3B55B,KAAK84B,KAAO,EAAAC,SAAS0C,gBAGzB,YAAAC,eAAA,WACI17B,KAAK27B,iBAAiB1b,SAAiD,OAAtCjgB,KAAKi7B,aAAanU,QAAQpG,QAEvD1gB,KAAK27B,iBAAiB1b,UACtBjgB,KAAK27B,iBAAiB5b,SAAW,EAAAC,kBAAkB+B,cACnD/hB,KAAK27B,iBAAiB5b,OAAS,EAAAC,kBAAkB5B,KACjDpe,KAAK27B,iBAAiBtZ,iBAI9B,YAAAuZ,OAAA,WACI57B,KAAKi5B,WAAWtR,QAGd,YAAAiN,OAAN,W,yGACgC,OAA5B,EAAA50B,KAA4B,GAAMA,KAAK67B,kC,OAEvC,GAFA,EAAKtC,qBAAuB,SAExBv5B,KAAKu5B,qBACL,U,iBAgCA,O,sBA5BMuC,EAAW,gD,yEACT5hB,EAAgB,KAChBla,KAAK+7B,mBACY,GAAM/7B,KAAK+b,cAAcigB,gBAD1C,M,OAGmB,OAFbC,EAAW,SACXr9B,EAAMq9B,EAAS,GAAGliB,gBACL,GAAM/Z,KAAK+b,cAAcmgB,QACxCl8B,KAAKN,YAAYnB,EAAE,qBAAsB09B,EAAS,K,OAEtC,OAHVjpB,EAAa,SAEbmpB,EAAenpB,EAAW+G,gBAChB,GAAM/Z,KAAK+b,cAAcqgB,YAAYH,EAAS,K,cAAxDI,EAAU,SAEZr8B,KAAKy3B,WACG,GAAMz3B,KAAKs8B,iBAAiB19B,EAAKu9B,EAAcE,IADvD,M,cACAniB,EAAQ,S,aAEA,SAAMla,KAAKu8B,kBAAkB39B,EAAKu9B,EAAcE,EAASJ,EAAS,K,OAA1E/hB,EAAQ,S,wBAGZla,KAAK00B,eAAeI,SAAS,UAAW90B,KAAKN,YAAYnB,EAAE,uBAAwByB,KAAKN,YAAYnB,EAAE,0B,cAE9F,SAAMyB,KAAKw8B,mBAAmBtiB,I,OAAtCA,EAAQ,SACRla,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,yB,mBAGrE,SAAMyB,KAAK4f,WAAW6c,wB,QACtB,OADA,SACA,GAAMz8B,KAAKw3B,YAAYO,UAAS,I,eAAhC,SACA/3B,KAAKw4B,OAAOkE,SAAS,CAAC,kBAAoBxiB,I,YAG9Cla,KAAKi1B,YAAc6G,IACnB,GAAM97B,KAAKi1B,a,cAAX,SACAj1B,KAAKg5B,UAAUrR,O,4DAIT,YAAAkU,+BAAd,W,mEACI,MAAO,CAAP,EAAO77B,KAAK2oB,cAAcgU,oBAAoB,EAAAvlB,WAAWwlB,mBAG/C,YAAAJ,mBAAd,SAAiCtiB,G,sGAWjB,OAVNmL,EAAU,IAAI,EAAAwX,4BACZC,aAAe98B,KAAKk5B,cAAgBl5B,KAAK88B,aAAe,KAChEzX,EAAQgU,gBAAkBr5B,KAAKq5B,gBAC/BhU,EAAQ0X,oBAAsB/8B,KAAKo5B,kBACnC/T,EAAQ8T,mBAAqBn5B,KAAK85B,aAAaiB,wBAA0B/6B,KAAKm5B,mBAC9E9T,EAAQ2X,SAAWh9B,KAAK85B,aAAavzB,KACrC8e,EAAQ4X,sBAAwBj9B,KAAKi7B,aAAanU,QAAQpG,QAC1D2E,EAAQ6X,yBAA2Bl9B,KAAKi7B,aAAanU,QAAQM,WAGjD,GAAMpnB,KAAKu3B,YAAY4F,gBAAgBn9B,KAAK0P,iB,cAA5C,SACH0tB,wBAAL,MACoB,GAAMp9B,KAAK+b,cAAcE,UAAUjc,KAAK0P,iB,OAC5C,OADV2tB,EAAc,SACJ,GAAMr9B,KAAK+b,cAAcqgB,YAAYiB,I,OAA/ChB,EAAU,SAChBhX,EAAQ/W,KAAO,IAAI,EAAAgvB,wBAAwBjB,EAAQ,GAAIA,EAAQ,GAAGtiB,iB,iBAGvD,SAAM/Z,KAAK4f,WAAW2d,wBAAwBv9B,KAAK0P,eAAgB2V,I,cAA5ExoB,EAAS,UACH2Y,SAA+C,MAApC3Y,EAAO2gC,0BAA1B,MACA,GAAMx9B,KAAK27B,iBAAiBxX,wBAAwBtnB,EAAO2gC,0BAA2B,O,OAAtF,S,iBAEJ,MAAO,CAAP,EAAOx9B,KAAK0P,wBAGF,YAAA6sB,kBAAd,SAAgC39B,EAAau9B,EAAsBE,EAA8BoB,G,+GACvFpY,EAAU,IAAI,EAAAqY,2BACZ9+B,IAAMA,EACdymB,EAAQsY,eAAiBxB,EACzB9W,EAAQxnB,KAAOmC,KAAKnC,KACpBwnB,EAAQuY,aAAe59B,KAAK49B,aAC5BvY,EAAQ/W,KAAO,IAAI,EAAAgvB,wBAAwBjB,EAAQ,GAAIA,EAAQ,GAAGtiB,iBAE9D/Z,KAAK85B,aAAavzB,OAAS,EAAAwyB,SAASF,KAApC,OACAxT,EAAQ2X,SAAW,EAAAjE,SAASF,K,cAER,SAAM74B,KAAK27B,iBAAiBvY,sB,OAA1Cya,EAAc,SAEpBxY,EAAQyY,aAAeD,EAAY,GACnCxY,EAAQ1E,kBAAoBkd,EAAY,GACxCxY,EAAQyX,aAAe98B,KAAKk5B,cAAgBl5B,KAAK88B,aAAe,KAChEzX,EAAQgU,gBAAkBr5B,KAAKq5B,gBAC/BhU,EAAQ0X,oBAAsB/8B,KAAKo5B,kBACnC/T,EAAQ8T,mBAAqBn5B,KAAK85B,aAAaiB,wBAC3C/6B,KAAKm5B,mBACT9T,EAAQ2X,SAAWh9B,KAAK85B,aAAavzB,KACrC8e,EAAQ6X,yBAA2Bl9B,KAAKi7B,aAAanU,QAAQM,WAC7D/B,EAAQ4X,sBAAwBj9B,KAAKi7B,aAAanU,QAAQpG,QACtD1gB,KAAKi7B,aAAanU,QAAQO,eAC1BhC,EAAQ0Y,YAAc/9B,KAAKi7B,aAAanU,QAAQC,MAChD1B,EAAQ2Y,oBAAsBh+B,KAAKi7B,aAAanU,QAAQE,MACxD3B,EAAQ4Y,oBAAsBj+B,KAAKi7B,aAAanU,QAAQG,MACxD5B,EAAQ6Y,mBAAqBl+B,KAAKi7B,aAAanU,QAAQI,KACvD7B,EAAQ8Y,oBAAsBn+B,KAAKi7B,aAAanU,QAAQK,O,wBAI5DnnB,KAAKuwB,YACC6N,EAAkB,IAAI,EAAAC,kCAAkCr+B,KAAKs+B,iBAAkBjZ,GACjE,GAAMrlB,KAAK+b,cAAcwiB,eAAev+B,KAAKuwB,cAFjE,M,OAGiD,OAD3CiO,EAAc,SACpB,EAAAJ,EAAgBK,0BAAiC,GAAMz+B,KAAK+b,cAAcmgB,QAAQuB,EAAO7+B,IAAK4/B,I,OAC/E,OADf,EAA0C5/B,IAAO,SAA2Dmb,gBAC7F,GAAM/Z,KAAK4f,WAAW8e,+BAA+B1+B,KAAKuwB,WAAY6N,I,OAErF,MAAO,CAAP,EAFe,SAAwF1uB,gB,OAI/F,SAAM1P,KAAK4f,WAAW+e,iBAAiBtZ,I,OAA/C,MAAO,CAAP,EAAQ,SAAiDzlB,YAInD,YAAA08B,iBAAd,SAA+B19B,EAAau9B,EAAsBE,G,0GAG9D,GAFMuC,EAASx6B,SAASy6B,eAAe,QAE1B,OADPC,EAAQF,EAAOE,QACiB,IAAjBA,EAAM9iC,OACvB,MAAM,IAAIuL,MAAMvH,KAAKN,YAAYnB,EAAE,eAOtB,OAJXwgC,EAAK,IAAIC,UACZC,OAAO,UAAWH,EAAM,IAC3BC,EAAGE,OAAO,MAAOrgC,GACjBmgC,EAAGE,OAAO,iBAAkB9C,GACX,GAAMn8B,KAAK4f,WAAWsf,wBAAwBH,I,OAK/D,OALMv9B,EAAW,SACX0Y,EAAQ1Y,EAAS5B,GAGjBylB,EAAU,IAAI,EAAAiY,wBAAwBjB,EAAQ,GAAIA,EAAQ,GAAGtiB,iBACnE,GAAM/Z,KAAK4f,WAAWuf,qBAAqBjlB,EAAOmL,I,OAElD,OAFA,SAEO,CAAP,EAAOnL,W,iCA5TFklB,GAA0B,uU,iCAA1BA,EAA0B,+D,GAAA,M,cACxB,EAAA3a,iBAAgB,G,cAChB,EAAAgE,iBAAgB,I,s3GC9C/B,uCAAkM,yDAAgrB,kDAA+5W,iB,MAAlwY,+BAAkM,uEAAkvB,yE,0VDwCn8B,GAIa,EAAA2W,+B,+DAAAA,GAA0B,E,KAJtC,EAAAn4B,U,MAAU,CACPnG,SAAU,yBACVoG,YAAa,yC,6NAGgBy0B,iBAAkB,CAAF,C,KAA5C,EAAA0D,U,MAAU,EAAA5a,oBACkBwW,aAAc,CAAF,C,KAAxC,EAAAoE,U,MAAU,EAAA5W,oBAEF/Y,eAAgB,CAAF,C,KAAtB,EAAA1O,QACQy3B,SAAQ,E,KAAhB,EAAAz3B,QACQ03B,WAAU,E,KAAlB,EAAA13B,QACQ23B,QAAS,CAAF,C,KAAf,EAAA33B,QACQ83B,KAAM,CAAF,C,KAAZ,EAAA93B,QACQuvB,WAAY,CAAF,C,KAAlB,EAAAvvB,QACSg4B,UAAS,E,KAAlB,EAAAtQ,SACSuQ,WAAU,E,KAAnB,EAAAvQ,Y,2cEvDL,YAIA,cAOI,WAAYlnB,EAAeuiB,EAAgBub,G,QAA3C,EACI,YAAM99B,IAAS,KACX+9B,EAAa,KACjB,GAAgB,MAAZ/9B,EAAkB,CAClB,IAAMg+B,EAAqB,EAAKp4B,oBAAoB,cAEhDm4B,EADAC,GAAsBF,EACTE,EAEAh+B,E,OAIjB+9B,GACA,EAAKtuB,QAAU,EAAK7J,oBAAoB,UAAWm4B,GACnD,EAAKpiB,iBAAmB,EAAK/V,oBAAoB,mBAAoBm4B,GACrE,EAAKE,eAAwD,QAA1C,EAAwB,QAAxB,EAAG,EAAKtiB,wBAAgB,eAAEuiB,wBAAgB,eAAG,GAChE,EAAK99B,iBAAmB,EAAAoG,MAAM+F,mBAAmB,EAAK0xB,iBAEvC,MAAX1b,IACA,EAAK9S,QAAU,yCAGvB,EAAK0uB,WAAa5b,E,EAsC1B,OAnEmC,OAgC/B,YAAAjiB,iBAAA,WACI,GAA6B,MAAzB9B,KAAKmd,iBACL,OAAOnd,KAAKiR,QAEhB,IAAK,IAAMrS,KAAOoB,KAAKmd,iBACnB,GAAKnd,KAAKmd,iBAAiBhhB,eAAeyC,IAGtCoB,KAAKmd,iBAAiBve,GAAK5C,OAC3B,OAAOgE,KAAKmd,iBAAiBve,GAAK,GAG1C,OAAOoB,KAAKiR,SAGhB,YAAAoM,eAAA,WACI,IAAMuiB,EAAqB,GAC3B,GAA6B,MAAzB5/B,KAAKmd,iBACL,OAAOyiB,E,eAEAhhC,GACP,IAAK,EAAKue,iBAAiBhhB,eAAeyC,G,iBAG1C,EAAKue,iBAAiBve,GAAKyO,SAAQ,SAACwyB,GAChC,IAAIC,EAAS,GACb,GAAIlhC,EAAI8N,QAAQ,MAAQ,GAAK9N,EAAI8N,QAAQ,MAAQ,EAAG,CAChD,IAAMqzB,EAAUnhC,EAAIohC,YAAY,KAChCF,EAASlhC,EAAI2K,OAAO,EAAGw2B,GAAW,EAAIA,EAAUnhC,EAAI5C,QAAU,KAElE4jC,EAAStjC,KAAKwjC,EAASD,O,OAV/B,IAAK,IAAMjhC,KAAOoB,KAAKmd,iB,EAAZve,GAaX,OAAOghC,GAEf,EAnEA,CAFA,MAEmCh4B,cAAtB,EAAAlG,iB,iGCJb,SAAY4oB,GACR,uCACA,sDACA,4CACA,8CACA,gDACA,8CACA,oDACA,8DACA,8DAEA,0CACA,0CACA,0CACA,8DACA,8DACA,wCACA,gEACA,oDACA,oFACA,0FACA,oFACA,oEACA,0EACA,oEACA,4DACA,kDACA,4CACA,wFAEA,kDACA,kDACA,kDAEA,wCACA,wCACA,wCAEA,8DACA,kEACA,8DACA,8DACA,0EACA,sEACA,wFACA,4FACA,oFACA,wEAEA,sDACA,8DAEA,kEAEA,0CAEA,sDACA,0DACA,sDACA,sDAEA,sEACA,kEACA,sEACA,kFAhEJ,CAAY,EAAAA,YAAA,EAAAA,UAAS,M,iGCMrB,iBAOI,WAAYvX,GANZ,KAAAlV,KAAe,KACf,KAAAS,MAAgB,KAChB,KAAAiI,KAAkB,KAClB,KAAA05B,UAAoB,EACpB,KAAAC,WAAqB,EAGZntB,IAIL/S,KAAKuG,KAAOwM,EAAExM,MAMtB,OAHI,sBAAI,0BAAW,C,IAAf,WACI,OAAqB,MAAdvG,KAAK1B,MAAgB,WAAa,M,gCAEjD,EAlBA,GAAa,EAAAgW,a,qGCLb,YAIA,SACA,SACA,SACA,SACA,SACA,SAEA,UAGA,EAmBI,SAAYnC,GAAZ,WAUI,OATAnS,KAAKuG,KAAO4L,EAAO5L,KACnBvG,KAAKylB,SAAWtT,EAAOsT,SACvBzlB,KAAK0P,eAAiByC,EAAOzC,eAC7B1P,KAAKnC,KAAOsU,EAAOtU,KAAOsU,EAAOtU,KAAKkc,gBAAkB,KACxD/Z,KAAK2T,MAAQxB,EAAOwB,MAAQxB,EAAOwB,MAAMoG,gBAAkB,KAC3D/Z,KAAK0T,SAAWvB,EAAOuB,SACvB1T,KAAKmgC,sBAAwBhuB,EAAO+T,aACpClmB,KAAKomB,SAAWjU,EAAOiU,SAEfpmB,KAAKuG,MACT,KAAK,EAAAwN,WAAWC,MACZhU,KAAK6T,MAAQ,IAAI,EAAAusB,SACjBpgC,KAAK6T,MAAMoB,KAAO,KAClBjV,KAAK6T,MAAMkB,SAAW5C,EAAO0B,MAAMkB,SAAW5C,EAAO0B,MAAMkB,SAASgF,gBAAkB,KACtF/Z,KAAK6T,MAAMmB,SAAW7C,EAAO0B,MAAMmB,SAAW7C,EAAO0B,MAAMmB,SAAS+E,gBAAkB,KACtF/Z,KAAK6T,MAAM6S,qBAA4D,MAArCvU,EAAO0B,MAAM6S,qBAC3CvU,EAAO0B,MAAM6S,qBAAqB+C,cAAgB,KACtDzpB,KAAK6T,MAAMwe,KAAOlgB,EAAO0B,MAAMwe,KAAOlgB,EAAO0B,MAAMwe,KAAKtY,gBAAkB,KAC1E/Z,KAAK6T,MAAMye,mBAAqBngB,EAAO0B,MAAMye,mBAEpB,MAArBngB,EAAO0B,MAAMoB,OACbjV,KAAK6T,MAAMoB,KAAO9C,EAAO0B,MAAMoB,KAAKjP,KAAI,SAAA0L,GACpC,IAAMJ,EAAM,IAAI,EAAA+uB,YAGhB,OAFA/uB,EAAIA,IAAe,MAATI,EAAEJ,IAAcI,EAAEJ,IAAIyI,gBAAkB,KAClDzI,EAAIpC,MAAmB,MAAXwC,EAAExC,MAAgBwC,EAAExC,MAAQ,KACjCoC,MAGf,MACJ,KAAK,EAAAyC,WAAWmB,WACZlV,KAAKmV,WAAa,IAAI,EAAAmrB,cACtBtgC,KAAKmV,WAAW5O,KAAO4L,EAAOgD,WAAW5O,KACzC,MACJ,KAAK,EAAAwN,WAAWqK,KACZpe,KAAKuS,KAAO,IAAI,EAAAguB,QAChBvgC,KAAKuS,KAAK6J,eAA+C,MAA9BjK,EAAOI,KAAK6J,eACnCjK,EAAOI,KAAK6J,eAAerC,gBAAkB,KACjD/Z,KAAKuS,KAAKoK,MAA6B,MAArBxK,EAAOI,KAAKoK,MAAgBxK,EAAOI,KAAKoK,MAAM5C,gBAAkB,KAClF/Z,KAAKuS,KAAKmK,OAA+B,MAAtBvK,EAAOI,KAAKmK,OAAiBvK,EAAOI,KAAKmK,OAAO3C,gBAAkB,KACrF/Z,KAAKuS,KAAKC,SAAmC,MAAxBL,EAAOI,KAAKC,SAAmBL,EAAOI,KAAKC,SAASuH,gBAAkB,KAC3F/Z,KAAKuS,KAAKE,QAAiC,MAAvBN,EAAOI,KAAKE,QAAkBN,EAAOI,KAAKE,QAAQsH,gBAAkB,KACxF/Z,KAAKuS,KAAK8J,KAA2B,MAApBlK,EAAOI,KAAK8J,KAAelK,EAAOI,KAAK8J,KAAKtC,gBAAkB,KAC/E,MACJ,KAAK,EAAAhG,WAAWsK,SACZre,KAAK6lB,SAAW,IAAI,EAAA2a,YACpBxgC,KAAK6lB,SAAStlB,MAAiC,MAAzB4R,EAAO0T,SAAStlB,MAAgB4R,EAAO0T,SAAStlB,MAAMwZ,gBAAkB,KAC9F/Z,KAAK6lB,SAASoM,UAAyC,MAA7B9f,EAAO0T,SAASoM,UACtC9f,EAAO0T,SAASoM,UAAUlY,gBAAkB,KAChD/Z,KAAK6lB,SAASyL,WAA2C,MAA9Bnf,EAAO0T,SAASyL,WACvCnf,EAAO0T,SAASyL,WAAWvX,gBAAkB,KACjD/Z,KAAK6lB,SAASqM,SAAuC,MAA5B/f,EAAO0T,SAASqM,SACrC/f,EAAO0T,SAASqM,SAASnY,gBAAkB,KAC/C/Z,KAAK6lB,SAAS0L,SAAuC,MAA5Bpf,EAAO0T,SAAS0L,SACrCpf,EAAO0T,SAAS0L,SAASxX,gBAAkB,KAC/C/Z,KAAK6lB,SAAS2L,SAAuC,MAA5Brf,EAAO0T,SAAS2L,SACrCrf,EAAO0T,SAAS2L,SAASzX,gBAAkB,KAC/C/Z,KAAK6lB,SAAS4L,SAAuC,MAA5Btf,EAAO0T,SAAS4L,SACrCtf,EAAO0T,SAAS4L,SAAS1X,gBAAkB,KAC/C/Z,KAAK6lB,SAASqB,KAA+B,MAAxB/U,EAAO0T,SAASqB,KAAe/U,EAAO0T,SAASqB,KAAKnN,gBAAkB,KAC3F/Z,KAAK6lB,SAASsB,MAAiC,MAAzBhV,EAAO0T,SAASsB,MAAgBhV,EAAO0T,SAASsB,MAAMpN,gBAAkB,KAC9F/Z,KAAK6lB,SAASuB,WAA2C,MAA9BjV,EAAO0T,SAASuB,WACvCjV,EAAO0T,SAASuB,WAAWrN,gBAAkB,KACjD/Z,KAAK6lB,SAASnF,QAAqC,MAA3BvO,EAAO0T,SAASnF,QACpCvO,EAAO0T,SAASnF,QAAQ3G,gBAAkB,KAC9C/Z,KAAK6lB,SAAS6L,QAAqC,MAA3Bvf,EAAO0T,SAAS6L,QACpCvf,EAAO0T,SAAS6L,QAAQ3X,gBAAkB,KAC9C/Z,KAAK6lB,SAAS3O,MAAiC,MAAzB/E,EAAO0T,SAAS3O,MAAgB/E,EAAO0T,SAAS3O,MAAM6C,gBAAkB,KAC9F/Z,KAAK6lB,SAAS8L,MAAiC,MAAzBxf,EAAO0T,SAAS8L,MAAgBxf,EAAO0T,SAAS8L,MAAM5X,gBAAkB,KAC9F/Z,KAAK6lB,SAAS+L,IAA6B,MAAvBzf,EAAO0T,SAAS+L,IAAczf,EAAO0T,SAAS+L,IAAI7X,gBAAkB,KACxF/Z,KAAK6lB,SAAS9Q,SAAuC,MAA5B5C,EAAO0T,SAAS9Q,SACrC5C,EAAO0T,SAAS9Q,SAASgF,gBAAkB,KAC/C/Z,KAAK6lB,SAASgM,eAAmD,MAAlC1f,EAAO0T,SAASgM,eAC3C1f,EAAO0T,SAASgM,eAAe9X,gBAAkB,KACrD/Z,KAAK6lB,SAASiM,cAAiD,MAAjC3f,EAAO0T,SAASiM,cAC1C3f,EAAO0T,SAASiM,cAAc/X,gBAAkB,KAMvC,MAAjB5H,EAAOyB,SACP5T,KAAK4T,OAASzB,EAAOyB,OAAO5N,KAAI,SAAA+M,GAC5B,IAAMsB,EAAQ,IAAI,EAAAosB,SAIlB,OAHApsB,EAAM9N,KAAOwM,EAAExM,KACf8N,EAAMxW,KAAOkV,EAAElV,KAAOkV,EAAElV,KAAKkc,gBAAkB,KAC/C1F,EAAM/V,MAAQyU,EAAEzU,MAAQyU,EAAEzU,MAAMyb,gBAAkB,KAC3C1F,MAIe,MAA1BlC,EAAO6T,kBACPhmB,KAAKgmB,gBAAkB,GACvB7T,EAAO6T,gBAAgB3Y,SAAQ,SAAA8lB,GAC3B,EAAKnN,gBAAgB1pB,KAAK,CACtBokC,aAAcvN,EAAGuN,aACjB1rB,SAAUme,EAAGne,SAAWme,EAAGne,SAAS+E,gBAAkB,WAKxC,MAAtB5H,EAAO4T,cACP/lB,KAAK+lB,YAAc,GACnB/lB,KAAK2gC,aAAe,GACpBxuB,EAAO4T,YAAY1Y,SAAQ,SAAAkpB,GACvB,IAAMqK,EAAWrK,EAAWqK,SAAWrK,EAAWqK,SAAS7mB,gBAAkB,KAC7E,EAAKgM,YAAYwQ,EAAW32B,IAAMghC,EAClC,IAAMC,EAAoB,IAAI,EAAAC,kBAC9BD,EAAkBD,SAAWA,EACP,MAAlBrK,EAAW33B,MACXiiC,EAAkBjiC,IAAM23B,EAAW33B,IAAImb,iBAE3C,EAAK4mB,aAAapK,EAAW32B,IAAMihC,OAnItC,EAAAE,iB,yHCfb,aACA,SAEA,aAeI,aAPiB,KAAAC,WAAa,IAAI,EAAAC,QACjB,KAAAC,SAAW,IAAI,EAAAD,QACf,KAAAE,UAAY,IAAI,EAAAF,QAChB,KAAAG,QAAU,IAAI,EAAAH,QACd,KAAAI,SAAW,IAAI,EAAAJ,QAI5BjhC,KAAKmD,UAAYnD,KAAKghC,WAAWM,eACjCthC,KAAK2F,QAAU3F,KAAKkhC,SAASI,eAC7BthC,KAAKuE,SAAWvE,KAAKmhC,UAAUG,eAC/BthC,KAAKuhC,OAASvhC,KAAKohC,QAAQE,eAC3BthC,KAAKwhC,QAAUxhC,KAAKohC,QAAQE,eA2BpC,OAxBI,YAAAG,KAAA,WACIzhC,KAAKohC,QAAQM,QAGjB,YAAAC,MAAA,WACI3hC,KAAKqhC,SAASK,QAGlB,YAAAh8B,MAAA,SAAM7I,GACFmD,KAAK4hC,WAAa/kC,EAClBmD,KAAKkhC,SAASQ,KAAK7kC,IAGvB,YAAA+I,OAAA,WACI5F,KAAKmhC,UAAUO,KAAK1hC,KAAK4hC,aAG7B,YAAAC,QAAA,SAAQxhC,GACJL,KAAKghC,WAAWU,KAAKrhC,IAGzB,YAAAyhC,gBAAA,WACI,OAAO9hC,KAAKuE,SAASnB,KAAK,EAAAC,SAASC,aAE3C,EA/CA,GAAa,EAAAyC,Y,s+CCHb,WAMA,GAJA,KACA,MACA,MAEA,Q,8BAEA,aAEI,WAAoBgW,EAAsCyb,EAAkC5X,GAAxE,KAAA7D,gBAAsC,KAAAyb,cAAkC,KAAA5X,a,OAEtF,YAAAmiB,0BAAN,SAAgCxR,EAAoB7gB,G,wGACjC,SAAM1P,KAAK+b,cAAcE,UAAUvM,I,OAC9B,OADd+tB,EAAS,SACK,GAAMz9B,KAAK+b,cAAcwiB,eAAehO,I,OAEpC,OAFlBiO,EAAc,SAEI,GAAMx+B,KAAK+b,cAAcmgB,QAAQuB,EAAO7+B,IAAK4/B,I,OAMpD,OANXwD,EAAkB,UAElB3c,EAAU,IAAI,EAAA4c,gCACZvyB,eAAiBA,EACzB2V,EAAQzmB,IAAMojC,EAAgBjoB,gBAEb,GAAM/Z,KAAK4f,WAAWsiB,4BAA4B3R,EAAYlL,I,OAC/E,OADM7jB,EAAW,SACjB,GAAMxB,KAAKw3B,YAAYO,UAAS,I,OAChC,OADA,SACO,CAAP,EAAOv2B,WAGL,YAAA2gC,oBAAN,SAA0B5R,EAAoB7gB,G,0FAC1C,SAAM1P,KAAK4f,WAAWwiB,2BAA2B7R,EAAY7gB,I,OAC7D,OADA,SACA,GAAM1P,KAAKw3B,YAAYO,UAAS,I,cAAhC,S,6CApBKsK,GAAe,iF,oCAAfA,EAAe,QAAfA,EAAe,O,EAD5B,GACa,EAAAA,mB,+DAAAA,EAAe,E,KAD3B,EAAAh8B,c,4LCRD,SAAY0yB,GACR,mBACA,mDACA,2CACA,6CACA,qDACA,uDACA,uBACA,2CACA,mCACA,qCACA,8CACA,gDAZJ,CAAY,EAAAA,WAAA,EAAAA,SAAQ,M,yGCApB,SAAY/Y,GACR,mBACA,iCACA,uBACA,uBACA,uBACA,mCACA,+BACA,iCACA,qBATJ,CAAY,EAAAA,oBAAA,EAAAA,kBAAiB,M,4cCA7B,aACA,QACA,SAEA,SACA,SACA,SACA,SACA,SACA,SAEA,cAuBI,WAAYxe,GAAZ,MACI,YAAMA,IAAS,KACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAKsI,eAAiB,EAAKtI,oBAAoB,kBAC/C,EAAKqe,SAAW,EAAKre,oBAAoB,aAAe,KACxD,EAAKb,KAAO,EAAKa,oBAAoB,QACrC,EAAKvJ,KAAO,EAAKuJ,oBAAoB,QACrC,EAAKuM,MAAQ,EAAKvM,oBAAoB,SACtC,EAAKsM,SAAW,EAAKtM,oBAAoB,cAAe,EACxD,EAAKue,OAAS,EAAKve,oBAAoB,QACS,MAA5C,EAAKA,oBAAoB,gBACzB,EAAKwe,cAAe,EAEpB,EAAKA,aAAe,EAAKxe,oBAAoB,gBAEjD,EAAKse,oBAAsB,EAAKte,oBAAoB,uBACpD,EAAK8e,aAAe,EAAK9e,oBAAoB,gBAC7C,EAAK6e,cAAgB,EAAK7e,oBAAoB,iBAC9C,EAAK+e,YAAc,EAAK/e,oBAAoB,eAE5C,IAAMyM,EAAQ,EAAKzM,oBAAoB,SAC1B,MAATyM,IACA,EAAKA,MAAQ,IAAI,EAAAusB,SAASvsB,IAG9B,IAAMtB,EAAO,EAAKnL,oBAAoB,QAC1B,MAARmL,IACA,EAAKA,KAAO,IAAI,EAAAguB,QAAQhuB,IAG5B,IAAMsT,EAAW,EAAKze,oBAAoB,YAC1B,MAAZye,IACA,EAAKA,SAAW,IAAI,EAAA2a,YAAY3a,IAGpC,IAAM1Q,EAAa,EAAK/N,oBAAoB,cAC1B,MAAd+N,IACA,EAAKA,WAAa,IAAI,EAAAmrB,cAAcnrB,IAGxC,IAAMvB,EAAS,EAAKxM,oBAAoB,UAC1B,MAAVwM,IACA,EAAKA,OAASA,EAAO5N,KAAI,SAAC+M,GAAW,WAAI,EAAA0tB,SAAS1tB,OAGtD,IAAMgT,EAAc,EAAK3e,oBAAoB,eAC1B,MAAf2e,IACA,EAAKA,YAAcA,EAAY/f,KAAI,SAAC0H,GAAW,WAAI,EAAA40B,mBAAmB50B,OAG1E,IAAMsY,EAAkB,EAAK5e,oBAAoB,mB,OAC1B,MAAnB4e,IACA,EAAKA,gBAAkBA,EAAgBhgB,KAAI,SAACu8B,GAAW,WAAI,EAAAC,wBAAwBD,OAGvF,EAAKnc,SAAW,EAAKhf,oBAAoB,aAAe,EAAAif,mBAAmBC,K,EAEnF,OAhFoC,OAgFpC,EAhFA,CAAoC,EAAA1e,cAAvB,EAAA66B,kB,yGCTb,8BACY,KAAAjU,SAAyB,GASrC,OAPI,YAAAkU,YAAA,SAAYlU,G,OACR,EAAAxuB,KAAKwuB,UAASlyB,KAAI,QAAIkyB,IAG1B,YAAAmU,YAAA,WACI,OAAO3iC,KAAKwuB,UAEpB,EAVA,GAAa,EAAAoU,qB,qGCFb,WAEA,GADA,MACA,M,GAMA,K,4BAEA,aAKI,WAAoBpK,EAAwBqK,EAChCC,EAAqBpjC,GADjC,WAAoB,KAAA84B,SAAwB,KAAAqK,iBAChC,KAAAC,eAJJ,KAAAC,iBAAsBt8B,EACtB,KAAAu8B,gBAAqBv8B,EAIzBzG,KAAKgjC,WAAahjC,KAAKw4B,OAAOvsB,IAC9BusB,EAAOyK,OAAOz+B,WAAU,SAAAiB,GACpB,GAAIA,aAAiB,EAAAy9B,cAAe,CAChC,EAAKH,YAAc,EAAKC,WACxB,EAAKA,WAAav9B,EAAMwG,IAMxB,IAJA,IAAI1L,EAAQb,EAAYnB,EAAE,YAAa,aACnC4kC,EAAkB,KAClBC,EAAmB,KACnBC,EAAQ,EAAKR,eAAeS,WAChB,MAATD,GAAe,CAClB,GAAwB,MAApBA,EAAMC,WAEH,IAA2B,MAAvBD,EAAME,SAAS/nC,MAA6C,MAA7B6nC,EAAME,SAAS/nC,KAAK+E,MAAe,CACzE6iC,EAAWC,EAAME,SAAS/nC,KAAK+E,MAC/B,MACG,GAA2B,MAAvB8iC,EAAME,SAAS/nC,MAA+C,MAA/B6nC,EAAME,SAAS/nC,KAAK2nC,QAAiB,CAC3EA,EAAUE,EAAME,SAAS/nC,KAAK2nC,QAC9B,MAEAA,EAAU,KACVC,EAAW,KACX,MAVAC,EAAQA,EAAMC,WActB,GAAe,MAAXH,GAA+B,MAAZC,EAAkB,CACrC,IAAMI,EAAuB,MAAZJ,EAAmBA,EAAW1jC,EAAYnB,EAAE4kC,GAC7C,MAAZK,GAAiC,KAAbA,IACpBjjC,EAASijC,EAAW,MAAQjjC,GAGpC,EAAKuiC,aAAaW,SAASljC,O,OAKvC,YAAAmjC,eAAA,WACI,OAAO1jC,KAAK+iC,aAGhB,YAAAY,eAAA,SAAe13B,GACXjM,KAAK+iC,YAAc92B,G,iCAhDd23B,GAAa,kG,oCAAbA,EAAa,QAAbA,EAAa,O,EAD1B,GACa,EAAAA,iB,+DAAAA,EAAa,E,KADzB,EAAAv9B,c,uMCVD,SAAYw9B,GACR,qCADJ,CAAY,EAAAA,UAAA,EAAAA,QAAO,M,0GCAnB,aAEA,QAEA,EAYI,SAAYjlC,EAAkBsc,GAC1B,GAAW,MAAPtc,EACA,MAAM,IAAI2I,MAAM,oBAGpB,GAAe,MAAX2T,EACA,GAAuB,KAAnBtc,EAAIsL,WACJgR,EAAU,EAAAI,eAAeE,kBACtB,IAAuB,KAAnB5c,EAAIsL,WAGX,MAAM,IAAI3C,MAAM,gCAFhB2T,EAAU,EAAAI,eAAeG,yBASjC,GAHAzb,KAAKpB,IAAMA,EACXoB,KAAKkb,QAAUA,EAEXA,IAAY,EAAAI,eAAeE,eAAoC,KAAnB5c,EAAIsL,WAChDlK,KAAKm2B,OAASv3B,EACdoB,KAAK8jC,OAAS,UACX,GAAI5oB,IAAY,EAAAI,eAAeC,0BAA+C,KAAnB3c,EAAIsL,WAClElK,KAAKm2B,OAASv3B,EAAIS,MAAM,EAAG,IAC3BW,KAAK8jC,OAASllC,EAAIS,MAAM,GAAI,QACzB,IAAI6b,IAAY,EAAAI,eAAeG,0BAA+C,KAAnB7c,EAAIsL,WAIlE,MAAM,IAAI3C,MAAM,mCAHhBvH,KAAKm2B,OAASv3B,EAAIS,MAAM,EAAG,IAC3BW,KAAK8jC,OAASllC,EAAIS,MAAM,GAAI,IAKhB,MAAZW,KAAKpB,MACLoB,KAAK+jC,OAAS,EAAA/7B,MAAM8B,gBAAgB9J,KAAKpB,MAE1B,MAAfoB,KAAKm2B,SACLn2B,KAAKgkC,UAAY,EAAAh8B,MAAM8B,gBAAgB9J,KAAKm2B,SAE7B,MAAfn2B,KAAK8jC,SACL9jC,KAAKikC,UAAY,EAAAj8B,MAAM8B,gBAAgB9J,KAAK8jC,UAlD3C,EAAAI,sB,6+CCJb,WAYA,GANA,KAEA,KACA,KACA,KAEA,QACA,U,mCAEA,aAYI,WAAsBtkB,EAAkClgB,EAC1Cg1B,EAA0CzX,GADlC,KAAA2C,aAAkC,KAAAlgB,cAC1C,KAAAg1B,iBAA0C,KAAAzX,uBAX9C,KAAAknB,UAAY,IAAI,EAAAtd,aAI1B,KAAAud,sBAAwB,EAAAzlB,sBACxB,KAAAmG,SAAU,EACV,KAAAuf,QAAS,E,OAOC,YAAAC,KAAV,SAAeC,GACXvkC,KAAKg1B,mBAAqBuP,EAAavP,mBACvCh1B,KAAKqkC,QAAS,GAGF,YAAAG,OAAhB,SAAuBC,G,0FAEf,O,sBAAA,GAAMA,K,cAAN,SACAzkC,KAAKmkC,UAAUxc,MAAK,G,4DAIZ,YAAA+c,QAAhB,SAAwBpO,G,gGACF,SAAMt2B,KAAKid,qBAAqB0nB,WAAW3kC,KAAKN,YAAYnB,EAAE,sBAC5EyB,KAAKN,YAAYnB,EAAE,WAAYyB,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,Y,OACxF,IAFkB,SAGd,U,iBAYA,O,uBARM8mB,EAAU,IAAI,EAAAuf,0BACZ5P,mBAAqBh1B,KAAKg1B,mBAClC3P,EAAQ9e,KAAOvG,KAAKuG,KAMpB,GAL2B,MAAvBvG,KAAK0P,eACK1P,KAAK4f,WAAWilB,gCAAgC7kC,KAAK0P,eAAgB2V,GAErErlB,KAAK4f,WAAWklB,oBAAoBzf,I,cAElD,SACArlB,KAAK8kB,SAAU,EACf9kB,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,oBACjEyB,KAAKmkC,UAAUxc,MAAK,G,6FA7CVod,GAAsB,yJ,iCAAtBA,EAAsB,kC,EAD5C,GACsB,EAAAA,0B,+DAAAA,EAAsB,E,KAD3C,EAAAlkC,a,qHAEasjC,UAAS,E,KAAlB,EAAAzb,Y,4+CCjBL,WAUA,SACA,S,GAEA,MACA,KAEA,M,iDAEA,aASI,WAAoBsc,EAAsCzN,EAC5CF,EAA2C4N,GADrC,KAAAD,eAAsC,KAAAzN,cAC5C,KAAAF,mBAA2C,KAAA4N,eANzD,KAAA1jC,SAAU,EACV,KAAA2jC,WAAY,EACZ,KAAArwB,QAAwB,G,OAMlB,YAAAqJ,KAAN,W,0FAEI,OADAle,KAAKuB,SAAU,EACf,GAAMvB,KAAKmlC,c,cAAX,SACAnlC,KAAKuB,SAAU,EACfvB,KAAKklC,WAAY,E,YAGf,YAAAE,aAAN,SAAmBjzB,G,2GAGiB,OAF1B5L,EAA4B,MAArBvG,KAAK4kB,aAAuB,mBAAsB,EAAAygB,iBAE/B,GAAMrlC,KAAKglC,aAAaviC,YAAY8D,EAAMvG,KAAKslC,uBAAuB,SAACC,GAC1E,MAArB,EAAK3gB,eACJ2gB,EAA6B3gB,aAAe,EAAKA,aAClD2gB,EAAK71B,eAAiB,EAAKkV,aAAahlB,IAG5C2lC,EAAKxX,SAAqB,MAAV5b,EAAiB,KAAOA,EAAOvS,GAC/C2lC,EAAKC,cAAchhC,WAAU,SAAO7G,GAAa,qC,kDAE7C,OADA8nC,EAAM//B,QACN,GAAM1F,KAAKke,Q,cAAX,S,cAEJqnB,EAAKG,gBAAgBlhC,WAAU,SAAO7G,GAAa,qC,kDAE/C,OADA8nC,EAAM//B,QACN,GAAM1F,KAAKke,Q,cAAX,S,cAEJqnB,EAAKI,iBAAiBnhC,WAAU,SAAO7G,GAAa,qC,kDAEhD,OADA8nC,EAAM//B,QACN,GAAM1F,KAAKke,Q,cAAX,S,yBAKR,OAtBM,EAA0B,SAAzBunB,EAAK,KAsBL,CAAP,EAtB4B,cAyBhB,YAAAG,YAAhB,W,uGAC6B,MAArB5lC,KAAK4kB,aAAL,MAGI5kB,KAAKilC,eAAiBjlC,KAAK4kB,aAAaihB,SACxC7lC,KAAKq3B,iBAAiBa,KAAK,sBAAuB,CAAExoB,eAAgB1P,KAAK4kB,aAAahlB,KAC/E,CAAP,GAAO,I,aAGW,SAAMI,KAAKu3B,YAAYuO,oB,OAC7C,GADMC,EAAgB,SAClB/lC,KAAKilC,eAAiBc,EAGtB,OAFA/lC,KAAKq3B,iBAAiBa,KAAK,mBAC3Bl4B,KAAKuB,SAAU,EACR,CAAP,GAAO,G,iBAGf,MAAO,CAAP,GAAO,WAGK,YAAA4jC,WAAhB,W,0EACInlC,KAAK6U,QAAU,G,qFAlEVmxB,EAAqB,wB,GAAA,K,kBACM,EAAAC,kB,wFAFxC,GACa,EAAAD,yB,+DAAAA,EAAqB,E,KADjC,EAAAnlC,a,yGAEyEykC,sBAAuB,CAAF,C,KAA1F,EAAAjG,U,MAAU,gBAAiB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,S,oGCpBlE,aAMA,QAEMC,EAAqB,CACvB,WACA,UACA,SACA,SACA,UACA,SACA,SAEA,SACA,SACA,YACA,YACA,iBAGJ,aAWI,WAAY10B,GAVZ,KAAAxC,MAAsB,KAGd,KAAAm3B,KAAe,KACf,KAAAC,QAAkB,KAClB,KAAAC,UAAoB,KACpB,KAAAC,MAAgB,KAChB,KAAAC,WAAsB,KAIrB/0B,IAIL1R,KAAKkP,MAAQwC,EAAExC,OAoFvB,OAjFI,sBAAI,kBAAG,C,IAAP,WACI,OAAOlP,KAAKqmC,M,IAEhB,SAAQ/nC,GACJ0B,KAAKqmC,KAAO/nC,EACZ0B,KAAKsmC,QAAU,KACftmC,KAAKymC,WAAa,M,gCAGtB,sBAAI,qBAAM,C,IAAV,WAQI,OAPoB,MAAhBzmC,KAAKsmC,SAA+B,MAAZtmC,KAAKsR,MAC7BtR,KAAKsmC,QAAU,EAAAt+B,MAAMsE,UAAUtM,KAAKsR,KACf,KAAjBtR,KAAKsmC,UACLtmC,KAAKsmC,QAAU,OAIhBtmC,KAAKsmC,S,gCAGhB,sBAAI,uBAAQ,C,IAAZ,WACI,OAAItmC,KAAKkP,QAAU,EAAAw3B,aAAaC,kBACrB,MAEW,MAAlB3mC,KAAKumC,WAAiC,MAAZvmC,KAAKsR,MAC/BtR,KAAKumC,UAAY,EAAAv+B,MAAM+D,YAAY/L,KAAKsR,KACjB,KAAnBtR,KAAKumC,YACLvmC,KAAKumC,UAAY,OAIlBvmC,KAAKumC,Y,gCAGhB,sBAAI,mBAAI,C,IAAR,WACI,OAAIvmC,KAAKkP,QAAU,EAAAw3B,aAAaC,kBACrB,MAEO,MAAd3mC,KAAKwmC,OAA6B,MAAZxmC,KAAKsR,MAC3BtR,KAAKwmC,MAAQ,EAAAx+B,MAAMoE,QAAQpM,KAAKsR,KACb,KAAftR,KAAKwmC,QACLxmC,KAAKwmC,MAAQ,OAIdxmC,KAAKwmC,Q,gCAGhB,sBAAI,4BAAa,C,IAAjB,WACI,OAAwB,MAAjBxmC,KAAKmM,SAAmBnM,KAAKmM,SAAWnM,KAAKsR,K,gCAGxD,sBAAI,wBAAS,C,IAAb,WACI,OAAoB,MAAbtR,KAAKqM,KAAerM,KAAKqM,KAAOrM,KAAKsR,K,gCAGhD,sBAAI,wBAAS,C,IAAb,WACI,OAAmB,MAAZtR,KAAKsR,MAAgD,IAAhCtR,KAAKsR,IAAI5E,QAAQ,YAAqD,IAAjC1M,KAAKsR,IAAI5E,QAAQ,aAC7E1M,KAAKsR,IAAI5E,QAAQ,OAAS,GAAK,EAAA1E,MAAM2E,eAAeb,KAAK9L,KAAKsR,O,gCAGvE,sBAAI,wBAAS,C,IAAb,WACI,GAAuB,MAAnBtR,KAAKymC,WACL,OAAOzmC,KAAKymC,WAEhB,GAAgB,MAAZzmC,KAAKsR,KAAetR,KAAKkP,QAAU,EAAAw3B,aAAaC,kBAEhD,IADA,IAAMr1B,EAAMtR,KAAK0yB,UACR52B,EAAI,EAAGA,EAAIsqC,EAAmBpqC,OAAQF,IAC3C,GAA2C,IAAvCwV,EAAI5E,QAAQ05B,EAAmBtqC,IAE/B,OADAkE,KAAKymC,YAAa,EACXzmC,KAAKymC,WAKxB,OADAzmC,KAAKymC,YAAa,EACXzmC,KAAKymC,Y,gCAGhB,sBAAI,wBAAS,C,IAAb,WACI,OAAOzmC,KAAKsR,IAAI5E,QAAQ,OAAS,GAAK,EAAA1E,MAAM2E,eAAeb,KAAK9L,KAAKsR,KAAQ,UAAYtR,KAAKsR,IAAOtR,KAAKsR,K,gCAElH,EApGA,GAAa,EAAAE,gB,oGCxBb,SAAYk1B,GACR,uBACA,mBACA,+BACA,qBACA,6CACA,qBANJ,CAAY,EAAAA,eAAA,EAAAA,aAAY,M,y0DCAxB,WAEA,QACA,SAgBA,GAdA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,OACA,KAEA,S,2NCnBykB,qCAA+E,Y,mBAA6C,kB,MAA7C,mG,yBAA2T,gCAA0D,YAAU,kB,uBAA9B,gCAAoB,4C,mDAAzT,6BAAiD,6CAA+B,+CAAkB,Y,mBAA2B,iBAAS,gDAA8B,wGAA2F,mDAA8E,kCAAU,kCAAO,kC,iCAA5P,wEAAkE,qDAAyB,+BAAwF,sD,yBAAuiB,gCAAmD,YAAU,kB,uBAA3B,6BAAiB,4C,mDAA1R,6BAAqD,+CAAoB,Y,mBAAmB,iBAAS,gDAAoC,4GAA8F,kDAAuE,iCAAU,kC,iCAA/O,gEAAgE,yDAA6B,2CAAuF,kD,mDAAsb,6BAA2D,gDAAiG,mHAAqC,WAAY,e,mBAAc,sCAAqD,iCAAU,iC,MAAvK,0F,mDAA6W,2BAA+G,oG,mBAA0D,sCAA6D,iC,KAApK,8E,mDAAtI,6BAAoE,6CAA2O,8CAAyH,iG,mBAAiE,sCAAsG,uC,oBAAuI,kCAAK,kC,oDAA1gB,0DAA6K,0FAAoE,oDAAiF,gDAAiK,8EAArC,mC,mDAAsjD,2BAA0D,mGAAkG,Y,mBAAqB,iB,MAArB,2E,mDAA0B,2BAA0D,uGAAiL,Y,mBAAqB,iB,MAArB,2E,yBAA5iB,0BAA8C,wC,mBAA6F,6CAAsL,6CAAqQ,kC,8BAAnf,0FAA+I,mGAA0L,2K,uGAAiL,6BAA8E,8CAAwC,8CAAuB,YAAW,iBAAQ,6DAAM,wCAAI,6CAAoH,6CAAmE,kCAAK,kCAAO,kCAAQ,oE,oBAAuE,aAAqB,iBAAQ,kDAA4F,sGAAwB,uBAAwB,W,oBAAU,wCAA+C,kCAAU,kC,iCAA3hB,8CAAwF,yEAA6K,2FAA0C,wDAAwE,mG,yBAAgpD,gCAA8D,YAAW,kB,uBAA/B,gCAAoB,oD,mDAA+B,gCAA4D,gI,mBAAkG,sCAA4D,iC,KAAvI,oE,mDAA3lD,6BAA8F,6CAA+B,+CAA2B,Y,mBAAkC,iBAAS,6CAA0B,gDAAwF,sE,oBAAxF,iBAAyN,+CAAiC,kDAA2F,6G,oBAA+C,wCAAqD,kCAAU,kDAA4F,2GAAqB,MAAO,U,oBAAS,wCAAqD,kCAAU,kCAAO,kCAAO,kCAAO,+CAA+B,+CAAqB,iDAAiC,a,oBAA4B,iBAAS,6C,oBAAwJ,wCAA2D,kCAAK,kCAAO,+CAAqB,kDAAoG,wEAAqB,+GAA+E,oDAAmF,kCAAU,oDAAoO,kCAAO,kCAAO,kC,yDAAtnD,+DAAoB,0EAAiG,8DAA+B,yDAA2F,2FAA9D,8BAAmB,2CAAuM,qFAAuD,sCAAkJ,sFAAwN,qEAA0B,mFAAsJ,wFAAgL,mEAAwB,2DAA+B,gCAAqB,2CAAqG,yDAA8L,sE,yBAA3qD,6BAA4C,iDAAiwD,2C,8BAAluD,2DAAsB,mC,mDAA4tD,2BAAyB,0FAAuF,sCAA2D,Y,mBAAoB,iB,MAApB,0E,4IAArjM,6BAAwD,6CAAkB,6CAA+B,+CAA2B,Y,mBAAqB,iBAAS,8CAA0B,iDAAiF,kHAAjF,iBAAiL,iDAAiS,kCAAO,kCAAO,+CAA+B,+CAAqB,iDAA2B,a,oBAAqB,iBAAS,mDAAkuB,kCAAO,+CAA0B,iDAAkI,kHAAlI,iBAAsR,+CAAiC,kDAAqG,kG,oBAA8D,wCAAgH,kCAAU,kDAAiG,mHAAqC,WAAY,e,oBAAgD,wCAAqD,kCAAU,kCAAO,kCAAO,kCAAO,kCAAO,+CAAkB,+CAA+B,iDAAuB,a,oBAAiC,iBAAS,iDAAiI,8GAAjI,iBAAqP,kCAAO,+CAAwF,iDAA6kB,mDAA+qB,kCAAO,kCAAO,0DAA6zD,+CAAoM,2C,iCAA18L,mEAAyI,+DAAmC,2CAA8F,wDAA6V,oEAA2D,qEAAoyB,gFAAoE,gDAAmC,mEAA0M,+FAAwE,gDAA0E,+FAA2I,2FAAuG,gDAAsM,iFAAgE,uFAA2G,4CAA+B,mEAAsJ,0EAAoC,sEAA6kB,oEAAssB,2DAAu3D,sE,0BAA2sB,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,0BAA6pC,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAA91D,6BAAuD,6CAAkB,6CAA+B,+CAAgC,Y,mBAA2B,iBAAS,gDAA+F,uHAA/F,iBAAmL,kCAAO,+CAA+B,iDAAuB,a,oBAAkB,iBAAS,kDAA8D,8GAA2E,qDAAmF,kCAAU,kCAAO,kCAAO,+CAAkB,+CAA+B,iDAAwB,a,oBAAmB,iBAAS,+CAA0B,iDAA8H,+GAA9H,iBAAuP,+CAAiC,kDAAqG,oG,oBAA8B,wCAAoH,kCAAU,kDAA+F,gHAAkC,SAAU,a,oBAAY,wCAAqD,kCAAU,kCAAO,kCAAO,kCAAO,+CAA6B,iDAA0B,a,oBAA4B,iBAAS,kDAAoE,iHAA8E,qDAAsF,kCAAU,kCAAO,+CAA6B,iDAAyB,a,oBAA2B,iBAAS,kDAA6E,gH,oBAA7E,iBAA6L,kCAAO,kCAAO,+CAAkB,+CAA+B,kDAAsB,a,oBAAyB,iBAAS,+CAA0B,kDAAwH,6GAAxH,iBAA+O,+CAAiC,kDAAqG,kG,oBAA4B,wCAAgH,kCAAU,kDAAiG,8GAAgC,eAAgB,oB,oBAAmB,0CAAqD,mCAAU,mCAAO,mCAAO,mCAAO,mCAAO,4C,iCAA76F,yEAAmI,oEAAwC,2CAAyG,iEAAyF,2DAA+B,2CAAkE,0DAA8J,mEAAiH,kFAAmE,6CAAgC,2CAAkL,+FAAkH,mGAA+I,yFAA0O,4EAAyG,8DAAkC,2CAAkE,6DAAuI,0EAAmJ,4FAAlC,8CAAiC,2CAAoK,yEAAqH,gFAA+D,2CAA8B,2CAAkL,+FAAgH,+FAA2I,4F,0BAAkgB,gCAAmE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAA9W,6BAA2D,6CAAkB,8CAA+B,gDAAqB,Y,mBAAkB,iBAAS,kDAAgE,kHAA+E,qDAAuF,kCAAU,kCAAO,kCAAO,+CAAkB,gDAA+B,kDAAyB,a,oBAAsB,iBAAS,kDAAmF,sHAAnF,iBAAsK,kCAAO,gDAA+B,kDAA0B,a,oBAAuB,iBAAS,kDAAqF,uHAArF,iBAAyK,kCAAO,gDAA+B,kDAAwB,a,oBAAqB,iBAAS,kDAAiF,qHAAjF,iBAAmK,kCAAO,kCAAO,+CAAkB,gDAA+B,kDAAwB,a,oBAAqB,iBAAS,kDAAiF,qHAAjF,iBAAoL,kCAAO,gDAA+B,kDAAuB,a,oBAAoB,iBAAS,kDAA+E,oHAA/E,iBAAgK,kCAAO,kCAAO,+CAAkB,gDAA+B,kDAAmB,a,oBAAgB,iBAAS,kDAAuE,gHAAvE,iBAAqK,kCAAO,gDAA+B,kDAA8B,a,oBAA2B,iBAAS,kDAA6F,2HAA7F,iBAAsM,kCAAO,gDAA+B,kDAA6B,a,oBAA0B,iBAAS,kDAA2F,0HAA3F,iBAAmM,kCAAO,kCAAO,+CAAkB,gDAA+B,oDAAqB,c,qBAAkB,iBAAS,oDAA2E,kHAA3E,iBAA2K,mCAAO,iDAA+B,oDAAqB,c,qBAAkB,iBAAS,oDAA2E,kHAA3E,iBAA0J,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAwB,c,qBAAqB,iBAAS,oDAAiF,qHAAjF,iBAAmK,mCAAO,iDAA+B,oDAAwB,c,qBAAqB,iBAAS,oDAAiF,qHAAjF,iBAAmK,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAwB,c,qBAAqB,iBAAS,oDAAiF,qHAAjF,iBAAmK,mCAAO,iDAA+B,oDAAoB,c,qBAAqB,iBAAS,oDAAyE,iHAAzE,iBAAuJ,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAqB,c,qBAA0B,iBAAS,oDAA2E,kHAA3E,iBAA0J,mCAAO,iDAA+B,oDAA0B,c,qBAA0B,iBAAS,oDAAqF,uHAArF,iBAAyK,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAuB,c,qBAAoB,iBAAS,oDAA+E,oHAA/E,iBAAgK,mCAAO,mCAAO,4C,iCAAhyJ,gEAA2F,+DAAmC,2CAAkE,8DAAmK,sEAAkH,mEAAuC,2CAA4G,sEAAqH,oEAAwC,2CAA0G,oEAA+G,kEAAsC,2CAAmI,oEAA+G,kEAAsC,2CAA0H,mEAA4G,iEAAqC,2CAA8H,+DAAgG,6DAAiC,2CAAiI,0EAAiI,wEAA4C,2CAAgI,yEAA8H,uEAA2C,2CAAiJ,kEAAsG,+DAAmC,2CAAwH,kEAAsG,+DAAmC,2CAAmI,qEAA+G,kEAAsC,2CAA0G,qEAA+G,kEAAsC,2CAAmI,qEAA+G,kEAAsC,2CAAsG,qEAAuG,8DAAkC,2CAAgI,0EAA8G,+DAAmC,2CAA4G,0EAAwH,oEAAwC,2CAAkI,oEAA4G,iEAAqC,4C,oDAAunC,6BAA4D,gDAAqF,2GAArF,iBAAuK,6CAAiC,gDAA8F,6HAAuB,QAAS,Y,mBAAW,sCAAqD,kCAAU,kCAAO,kC,6EAAhZ,gEAAsD,oDAAwB,gCAAqB,2CAAsJ,uF,oDAA8J,6BAA8D,gDAAiG,2GAAjG,iBAA4R,6CAAiC,gDAAqG,uI,mBAAgF,2CAA0G,kCAAK,kCAAU,kDAA8F,iIAAuB,QAAS,EAAF,0BAAgC,UAAY,Y,oBAA4D,wCAAqD,kCAAU,kCAAO,kC,6EAA94B,gEAAqB,8DAA6C,oDAAwB,gCAAqB,gFAA+P,8FAA2E,6DAAyF,yFAA0I,wFAA0H,8D,oDAAuJ,gCAAoE,2GAApE,iB,6EAAO,iDAAqB,oDAAwC,gCAAqB,4C,oDAA8I,gCAA4D,kI,mBAAoG,sCAA4D,iC,KAAvI,oE,uBAAiJ,iC,mBAAiJ,uCAAoD,kC,KAAnI,wE,0BAA1qF,8BAAkG,6CAA+B,6CAAqB,+CAA4B,Y,mBAAiB,iBAAS,6C,oBAAkJ,wCAA2D,kCAAK,kCAAO,kDAA8D,uEAA9D,iBAAoK,kCAAO,+CAA+B,iDAA6B,a,oBAAkB,iBAAS,+CAAwC,oDAA0d,qDAA09B,gDAAwB,qDAAgO,kCAAO,qDAAsO,sDAA+M,kCAAO,kCAAO,mC,sDAAxqF,gEAAqB,+DAAqI,wFAAqH,+DAAgC,mDAAuB,+BAAoB,2CAA+H,iEAAsB,iEAA6F,8DAA0d,gEAAmjC,iEAAqQ,qEAAuN,sE,oDAAjyF,8BAAiB,uGAA8D,mDAA40F,iC,iCAAryF,uDAAkB,mC,oDAA0xF,4BAAyB,4FAAyF,sCAA2D,Y,mBAA4B,iB,MAA5B,kF,0BAAiR,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAAlT,6BAAyD,8CAAoB,gDAA0C,Y,mBAAiB,iBAAS,iDAAmE,yGAA4B,oDAAsF,kCAAU,kCAAO,kC,iCAAhO,8DAA6F,sDAAkD,8D,0BAAqd,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,oDAA5b,6BAAkD,4CAAiB,Y,mBAAsB,iBAAM,6CAAkB,8CAAoB,iDAA4B,a,oBAA4B,iBAAS,mDAAuE,kHAAmC,2FAA6E,qDAAmF,kCAAU,kCAAO,kCAAO,2C,iCAAra,mEAA8F,0EAA4G,+DAAmC,2CAAmG,2D,uBAA6N,0BAAkD,Y,mBAAiC,kB,MAAjC,uF,0BAAiG,6BAAsE,gDAAgD,0EAAhD,iBAA0K,gDAAuD,YAAU,iBAAS,kC,sDAA5K,iEAAsB,6DAA9C,kCAAuB,2CAAmI,kEAAuB,4C,0BAAhW,6BAAyD,iDAAiU,2C,8BAA3R,sD,0BAAjT,6BAAyE,4CAAiB,Y,mBAAwB,iBAAM,gDAA0F,yDAA0Y,2C,8BAAlgB,qEAAoC,0EAAmG,yE,0BAAkkB,0BAA+B,4CAAgC,Y,mBAAiC,iBAAK,Y,mBAAuD,kB,8BAA7F,qFAAsC,+G,oDAA8D,0BAAiC,4CAAgC,Y,mBAA6B,iBAAK,4CAAyB,+F,mBAAmD,YAAkC,iBAAK,iC,iCAArJ,iFAAmF,0EAA2B,8E,0BAAgG,0BAAgD,Y,mBAAqC,+BAAmD,YAAe,iBAAQ,kC,uBAA/G,yFAAwF,gD,0BAA1L,8BAAkD,iDAAsK,kC,8BAAlJ,iE,0BAA7nB,6BAAgC,8CAAoC,0CAAM,4CAAgC,Y,mBAAyB,iBAAK,Y,oBAAwC,iBAAO,kDAAmK,mDAA6N,mDAA+N,kCAAO,4C,8BAAnrB,6EAA8B,gGAAqD,uDAAmK,yDAA0O,8D,oDAA7ipB,6BAAwC,uDAA2I,gDAAqW,6CAAkB,6CAA+B,gDAAkB,a,oBAAiB,iBAAS,iDAA8D,uGAA9D,iBAA4I,kCAAO,kDAA+T,kCAAO,6DAA8lM,8DAAqkG,8DAAi7J,+CAAyB,iDAAmB,a,oBAAkB,iBAAS,oDAA2C,wGAA0F,iBAAY,kCAAO,8CAAiB,a,oBAAyB,iBAAM,kDAAk6F,gDAA8M,mDAA8V,4DAAwf,4DAA4mB,6DAA6yB,+CAAe,8CAAiB,a,oBAAoB,iBAAM,+CAAyB,iDAAqE,mGAArE,iBAAuL,iDAAqD,a,oBAA2B,iBAAS,6C,oBAA4J,wCAA2D,kCAAK,kCAAO,2CAAgB,kC,gCAApyqB,mFAAmI,6DAAsZ,gEAAwF,qDAAyB,2CAA2F,oDAAsT,uEAA8lM,sEAAqkG,0EAA88J,iEAAsE,sDAA0B,2CAAoG,wEAAqF,uDAAu7F,qEAAqJ,qEAA2V,iEAAwf,wFAA4mB,+CAA8zB,mEAAmG,kDAAoB,2CAAwK,0EAAsE,yF,0BAAmP,iCAAsG,uC,mBAAsF,2CAAM,Y,mBAAmD,iBAAQ,kC,gDAApM,mCAA8E,6EAA2D,4G,4GAA0P,gCAAiE,kG,mBAAyH,sCAAoH,iC,iCAA7L,qGAA6F,qG,oDAA0G,qCAAiC,0F,mBAA8N,uCAA0F,uC,mBAAgI,iC,oDAAtY,2GAA6G,mCAA8B,gCAAsE,gDAAgI,6EAA9B,mC,0BAAhvB,8BAAkD,oDAAwT,qDAAme,kC,6BAAlxB,yEAAid,8DDsB/ztB,mBAkBI,WAAYE,EAA8BC,EACtCnnC,EAA0Bud,EAC1B6pB,EAA4BlpB,EAC5B2Z,EAA0BwP,EAChBC,EAAoCC,EACpC5P,EAAoC6P,EACpCve,GANd,MAOI,YAAMie,EAAeC,EAAennC,EAAaud,EAAsB6pB,EAAclpB,EACjF2Z,EAAawP,EAAmB1P,EAAkB6P,EAAcve,IAAc,K,OAJxE,EAAAqe,cAAoC,EAAAC,4BACpC,EAAA5P,mBACA,EAAA1O,gBAbd,EAAAwe,kBAAmB,EACnB,EAAAC,oBAAqB,EACrB,EAAAC,wBAAyB,EACzB,EAAAC,UAAW,E,SAVuB,OAyB5B,YAAA9mC,SAAN,W,yGACI,SAAM,YAAMA,SAAQ,Y,OACpB,OADA,SACA,GAAMR,KAAKke,Q,OAKa,OALxB,SACAle,KAAKmnC,iBAA8D,MAA3CnnC,KAAKmS,OAAOo1B,4BACpCvnC,KAAKonC,mBAAqBpnC,KAAKmS,OAAOi1B,mBACtCpnC,KAAKwnC,UAEL,EAAAxnC,KAAwB,GAAMA,KAAKu3B,YAAYuO,oB,cAA/C,EAAKA,iBAAmB,SACpB9lC,KAAKmS,OAAO5L,OAAS,EAAAwN,WAAWC,OAAShU,KAAKmS,OAAO0B,MAAMwe,OAC1DryB,KAAKmS,OAAOuT,qBAAuB1lB,KAAK8lC,kBACzC,GAAM9lC,KAAKynC,kBAFX,M,OAIA,OAFA,SACM,EAAWznC,KAAKgnC,YAAYU,gBAAgB1nC,KAAKmS,OAAO0B,MAAMwe,MACpE,GAAMryB,KAAK2nC,SAAS,I,OAApB,SAEA3nC,KAAK4nC,aAAezoC,OAAO0oC,aAAY,gD,kDACnC,SAAM7nC,KAAK2nC,SAAS,I,cAApB,S,aACD,K,mCAIX,YAAAG,eAAA,WACI9nC,KAAKmS,OAAOuB,UAAY1T,KAAKmS,OAAOuB,UAGxC,YAAAq0B,OAAA,SAAOz2B,GACEA,EAAImhB,WAITzyB,KAAKid,qBAAqByV,UAAUphB,EAAIohB,YAG5C,YAAAsV,KAAA,SAAK1pC,EAAe2pC,EAAqBC,GACxB,MAAT5pC,IAIJ0B,KAAKid,qBAAqBkrB,gBAAgB7pC,EAAO,CAAEa,OAAQA,SAC3Da,KAAKid,qBAAqBK,UAAU,OAAQ,KACxCtd,KAAKN,YAAYnB,EAAE,cAAeyB,KAAKN,YAAYnB,EAAE0pC,KAErDjoC,KAAKooC,WACe,aAAhBH,EACAjoC,KAAKknC,aAAamB,QAAQ,EAAA/d,UAAUoB,uCAAwC1rB,KAAK+tB,UAC1D,iBAAhBka,EACPjoC,KAAKknC,aAAamB,QAAQ,EAAA/d,UAAUwB,4BAA6B9rB,KAAK+tB,UACrD,YAAVma,GACPloC,KAAKknC,aAAamB,QAAQ,EAAA/d,UAAUsB,+BAAgC5rB,KAAK+tB,aAK/E,YAAAua,iBAAN,W,oGACsB,SAAM,YAAMA,iBAAgB,Y,cAAxCC,EAAY,UAEG,GAAMvoC,KAAKinC,0BAA0BuB,cADtD,M,OAE6B,OADvB93B,EAAW,SAAmD,GACpE,EAAA1Q,KAAKmS,OAAO0B,MAAiB,GAAM7T,KAAKinC,0BAA0BqB,iBAAiB53B,I,OAAnF,EAAkBsE,SAAW,S,iBAEjC,MAAO,CAAP,EAAOuzB,WAGX,YAAAE,gBAAA,WACSzoC,KAAK8lC,kBACN9lC,KAAKq3B,iBAAiBa,KAAK,oBAKnC,YAAAwQ,oBAAA,WACI1oC,KAAKq3B,iBAAiBa,KAAK,sBAAuB,CAAExoB,eAAgB1P,KAAKmS,OAAOzC,kBAGpF,YAAAi5B,YAAA,WACI3oC,KAAKqnC,wBAA0BrnC,KAAKqnC,wBAG9B,YAAAG,QAAV,WACQxnC,KAAK4nC,cACLzoC,OAAOypC,cAAc5oC,KAAK4nC,eAIlB,YAAAH,eAAhB,W,kGACI,OAAmB,MAAfznC,KAAKmS,QAAkBnS,KAAKmS,OAAO5L,OAAS,EAAAwN,WAAWC,OAAmC,MAA1BhU,KAAKmS,OAAO0B,MAAMwe,MAC9EryB,KAAK4nC,cACLzoC,OAAOypC,cAAc5oC,KAAK4nC,cAE9B,MAGJ,EAAA5nC,KAAgB,GAAMA,KAAKgnC,YAAY6B,QAAQ7oC,KAAKmS,OAAO0B,MAAMwe,Q,cAAjE,EAAKyW,SAAW,SACK,MAAjB9oC,KAAK8oC,SACD9oC,KAAK8oC,SAAS9sC,OAAS,GACjB+sC,EAAOr9B,KAAKqlB,MAAM/wB,KAAK8oC,SAAS9sC,OAAS,GAC/CgE,KAAKgpC,kBAAoBhpC,KAAK8oC,SAASn3B,UAAU,EAAGo3B,GAAQ,IAAM/oC,KAAK8oC,SAASn3B,UAAUo3B,IAE1F/oC,KAAKgpC,kBAAoBhpC,KAAK8oC,UAGlC9oC,KAAKgpC,kBAAoB,KACrBhpC,KAAK4nC,cACLzoC,OAAOypC,cAAc5oC,KAAK4nC,e,YAK5B,YAAAqB,yBAAV,WACI,QAASjpC,KAAKooC,UAAYpoC,KAAKkpC,YAAuC,MAAzBlpC,KAAKmpC,mBAC1CnpC,KAAKmpC,iBAAiBntC,OAAS,IAAMgE,KAAKopC,gBAGxC,YAAAzB,SAAd,SAAuB0B,G,yGACbC,EAAQ59B,KAAK69B,OAAM,IAAI1gB,MAAOW,UAAY,KAC1CggB,EAAMF,EAAQD,EAEpBrpC,KAAKypC,QAAUJ,EAAkBG,EACjCxpC,KAAK0pC,WAAah+B,KAAK69B,MAAS,KAAOF,EAAmBG,EAAO,OAAiB,OAClFxpC,KAAK2pC,QAAU3pC,KAAKypC,SAAW,EACnB,IAARD,EAAA,MACA,GAAMxpC,KAAKynC,kB,OAAX,S,oEAhJCpC,GAAgB,of,iCAAhBA,EAAgB,+xVC1B7B,4BAA4G,4CAA4E,+CAAkC,2CAAY,EAAAzQ,YAA4E,4CAA2B,2CAAgD,aAAS,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,mDAA62qB,8CAA2B,qDAAuQ,kDAA8E,a,oBAA2C,iBAAU,kDAAo1B,kCAAO,kCAAQ,kCAAO,kCAAO,kB,MAAp7tB,0DAA6I,4CAAwE,mFAAqH,6CAAm8qB,gDAAiQ,6FAA2E,4D,4eDsBz0sB,CAIsC,oBAAzB,EAAAyQ,qB,+DAAAA,GAAgB,E,KAJ5B,EAAAp+B,U,MAAU,CACPnG,SAAU,qBACVoG,YAAa,+B,6bElBjB,mBAAsB,EAAA0iC,iB,y0DCNtB,WAmBA,GAXA,KAEA,MACA,MACA,KACA,OACA,KACA,MACA,OACA,KAEA,SAEA,SACA,QACA,S,mKCvB6sB,6BAAyD,sC,mBAAsF,8CAAsB,Y,mBAAmB,iBAAQ,2C,MAArG,4EAA0E,iE,sBAAyO,6BAAgD,sC,mBAA+H,8CAAsB,Y,mBAA+B,iBAAQ,2C,MAA7H,wFAAsF,6E,yBAAnY,6BAAwC,sC,mBAAgG,8CAAsB,Y,mBAAwB,iBAAQ,uDAA4P,4C,4DAA3W,iFAA+E,qEAA+C,gE,mDAAq9B,2BAA+C,yIAAmC,WAAY,eAAqC,sCAAqD,Y,mBAA0B,iB,MAA1B,gF,mDAA+B,2BAA+C,qIAA+B,uBAAwB,WAA2C,sCAAqD,Y,mBAAkC,iB,MAAlC,wF,mDAAuC,2BAAyE,8IAAqC,sCAA8D,Y,mBAAoB,iB,MAApB,0E,mDAAn3B,6BAAmE,2CAA+C,wIAAmC,WAAY,eAAc,sCAAqD,Y,mBAA0B,iBAAK,6CAAuN,8CAA6O,+CAAqM,2C,+DAAxqB,+EAA2I,mDAA2N,+DAA6K,uD,mDAAqU,2BAA8H,4HAAoB,sCAAuD,Y,mBAAmB,iB,MAAnB,yE,mDAAwB,2BAA0G,4HAAoB,sCAAoE,Y,mBAAgC,iB,MAAhC,sF,mDAAqC,2BAAwF,kIAA0B,sCAAqD,Y,mBAAyB,iB,MAAzB,+E,mDAA8B,2BAAwF,6HAAqB,sCAA2D,Y,mBAAuB,iB,MAAvB,6E,mDAA4B,2BAA+C,8HAA0C,sCAAoD,Y,mBAAqB,iB,MAArB,2E,mDAAzjH,yBAAuC,2CAAI,kHAAsD,8CAAuB,0EAAvB,iBAA4D,iCAAM,2CAAI,kHAAkD,kDAA+C,kCAAM,6CAAI,kHAAkD,6CAAqC,mH,oBAAwD,aAAU,iBAAK,yDAAgN,0DAA0c,sCAAK,iDAAmB,aAAc,iBAAS,kCAAM,8CAAgC,+CAAuC,kD,oBAAuM,wCAAmD,kCAAU,+CAAqF,0DAA45B,6CAA+C,kHAA0B,wCAAyD,a,oBAAyB,iBAAK,+CAAiO,+CAAuO,+CAAqM,+CAAoM,+CAAuK,6CAA2D,6GAAqB,wCAAuD,a,oBAA0D,iBAAK,kCAAO,kCAAO,kCAAM,kC,+CAArrH,iDAAiH,wCAA0J,gFAA8B,2CAA8B,sEAAgN,qDAAmd,+CAAsQ,sFAAsM,8EAA+gC,gFAA8E,uGAAiO,qFAAuO,mEAAqM,qEAAyN,gDAAyO,4G,mDAAv6H,8BAA4K,+FAAyB,4CAAQ,+CAAmzH,iCAAS,iC,yDAAj6H,yCAA4B,wCAA2F,0C,sBAA02H,6BAA+B,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,mDAA4G,gCAAQ,6FAA0E,sCAAgC,Y,mBAAoB,iB,MAApB,kE,yBAAlL,6BAA8B,wCAAG,Y,mBAA0B,iBAAK,kDAAgJ,2C,8BAA/K,uEAA8F,kD,yBAAxX,6BAAuD,uDAAkM,uDAAgO,kC,8BAAnZ,8CAAkM,8C,yBAA12I,6BAAgF,gDAAkhI,8CAAge,2C,kBAAv7I,6CAA8+H,+CD2BznI,IAEA,cAqBI,WAAYC,EAAwCnV,EACtCh1B,EAAoCud,EACpC2pB,EAAwCM,EACxCF,EAAoCzP,EACpCuS,GAJd,MAKI,YAAMD,IAAc,K,OAL4B,EAAAnV,iBACtC,EAAAh1B,cAAoC,EAAAud,uBACpC,EAAA2pB,gBAAwC,EAAAM,eACxC,EAAAF,cAAoC,EAAAzP,cACpC,EAAAuS,0BApBL,EAAAC,YAAa,EACZ,EAAAC,qBAAuB,IAAI,EAAAnjB,aAC3B,EAAAojB,eAAiB,IAAI,EAAApjB,aACrB,EAAAqjB,qBAAuB,IAAI,EAAArjB,aAC3B,EAAAsjB,eAAiB,IAAI,EAAAtjB,aAE/B,EAAAujB,aAA6B,GAC7B,EAAAC,SAAW,IACX,EAAAC,WAAa,EAAAv2B,WAEb,EAAAw2B,sBAAuB,EAEf,EAAAC,WAAY,EACZ,EAAAC,kBAAoB,EACpB,EAAAC,YAAa,E,SAfa,OAyB5B,YAAAlqC,SAAN,W,gGACgC,OAA5B,EAAAR,KAA4B,GAAMA,KAAKu3B,YAAYuO,oB,cAAnD,EAAKyE,qBAAuB,S,YAGhC,YAAAroB,YAAA,WACIliB,KAAK2qC,WAAU,IAGnB,YAAAC,SAAA,WACI,KAAI5qC,KAAK6U,QAAQ7Y,QAAUgE,KAAKqqC,UAAhC,CAGA,IAAMQ,EAAc7qC,KAAKoqC,aAAapuC,OAClC8uC,EAAY9qC,KAAKqqC,SACjBrqC,KAAK0qC,YAA8B,IAAhBG,GAAqB7qC,KAAKyqC,kBAAoBzqC,KAAKqqC,WACtES,EAAY9qC,KAAKyqC,mBAEjBzqC,KAAK6U,QAAQ7Y,OAAS6uC,IACtB7qC,KAAKoqC,aAAepqC,KAAKoqC,aAAahtB,OAAOpd,KAAK6U,QAAQxV,MAAMwrC,EAAaA,EAAcC,KAE/F9qC,KAAKyqC,kBAAoBzqC,KAAKoqC,aAAapuC,OAC3CgE,KAAKwqC,UAAYxqC,KAAKoqC,aAAapuC,OAASgE,KAAKqqC,WAG/C,YAAAU,QAAN,W,0FAGQ,O,sBADA/qC,KAAK0qC,YAAa,EAClB,GAAM1qC,KAAKgrC,OAAOhrC,KAAKuO,OAAQvO,KAAKirC,U,cAApC,S,oBAEAjrC,KAAK0qC,YAAa,E,6BAI1B,YAAAQ,SAAA,WACI,IAAMC,EAAYnrC,KAAKorC,cAIvB,OAHID,GAAanrC,KAAKwqC,WAClBxqC,KAAKqrC,eAEDF,GAAanrC,KAAK6U,QAAQ7Y,OAASgE,KAAKqqC,UAG9C,YAAAgB,YAAN,W,0EACIrrC,KAAKoqC,aAAe,GACpBpqC,KAAK4qC,W,WAGH,YAAAU,SAAN,SAAeC,G,gGACI,OAAf,EAAAvrC,KAAe,GAAMA,KAAK6pC,cAAc2B,cAAcxrC,KAAK8e,WAAY,CAAC9e,KAAKuO,OAAQvO,KAAKyrC,eAAgBF,I,cAA1G,EAAK12B,QAAU,SACf7U,KAAKqrC,c,YAGT,YAAAtD,OAAA,SAAOz2B,GACHtR,KAAKid,qBAAqByV,UAAUphB,IAGlC,YAAAyU,YAAN,SAAkBpoB,G,0FACT,SAAMqC,KAAK0rC,eAAe/tC,I,OAA/B,OAAK,UAGLqC,KAAKgqC,qBAAqBriB,KAAKhqB,G,KAF3B,YAKF,YAAAguC,MAAN,SAAYhuC,G,0FACH,SAAMqC,KAAK0rC,eAAe/tC,I,OAA/B,OAAK,UAGLqC,KAAKiqC,eAAetiB,KAAKhqB,G,KAFrB,YAKR,YAAAkV,YAAA,SAAYlV,GACRqC,KAAKkqC,qBAAqBviB,KAAKhqB,IAG7B,YAAAiuC,MAAN,SAAYjuC,G,0FACH,SAAMqC,KAAK0rC,eAAe/tC,I,OAA/B,OAAK,UAGLqC,KAAKmqC,eAAexiB,KAAKhqB,G,KAFrB,YAKF,YAAAkuC,OAAN,SAAaluC,G,gGACJ,SAAMqC,KAAK0rC,eAAe/tC,I,OAA/B,OAAK,SAGqB,MAAtBqC,KAAK8rC,cACL,KAEEC,EAAYpuC,EAAEquC,UACF,GAAMhsC,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAEwtC,EAAY,oCAAsC,0BACrE/rC,KAAKN,YAAYnB,EAAEwtC,EAAY,wBAA0B,cACzD/rC,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,aATrD,I,OAUJ,IAJkB,SAKd,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAyB,KAAK8rC,cAAgB9rC,KAAKisC,aAAatuC,EAAEiC,GAAImsC,GAC7C,GAAM/rC,KAAK8rC,e,cAAX,SACA9rC,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAEwtC,EAAY,yBACvE,gBACN/rC,KAAK+qC,U,iDAET/qC,KAAK8rC,cAAgB,K,YAGnB,YAAAI,QAAN,SAAcvuC,G,0FACV,OAA0B,MAAtBqC,KAAK8rC,eAA0BnuC,EAAEquC,UAGnB,GAAMhsC,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAE,2BACnByB,KAAKN,YAAYnB,EAAE,eACnByB,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,YALrD,I,OAMJ,IAJkB,SAKd,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAyB,KAAK8rC,cAAgB9rC,KAAK4mC,cAAcuF,kBAAkBxuC,EAAEiC,IAC5D,GAAMI,KAAK8rC,e,cAAX,SACA9rC,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,iBACjEyB,KAAK+qC,U,iDAET/qC,KAAK8rC,cAAgB,K,YAGnB,YAAA9D,KAAN,SAAW71B,EAAoB7T,EAAe2pC,EAAqBC,G,uGAC3D,EAAAloC,KAAK8pC,wBAAwBsC,kBAAkBC,SAASnE,IAAW,GAAMloC,KAAK0rC,eAAev5B,IAA7F,M,OAAkE,GAAC,S,iBAAvE,OAAI,IAIS,MAAT7T,GAA2B,SAAV4pC,IAAqBloC,KAAKssC,sBAAsBn6B,IAHjE,IAGA,M,cAEO7T,IAAU6T,EAAO0B,MAAMwe,KAAvB,MACC,GAAMryB,KAAKgnC,YAAY6B,QAAQvqC,I,OAAvCA,EAAQ,S,iBAGZ,OAAK6T,EAAOyT,cAIZ5lB,KAAKid,qBAAqBkrB,gBAAgB7pC,EAAO,CAAEa,OAAQA,SAC3Da,KAAK00B,eAAeI,SAAS,OAAQ,KACjC90B,KAAKN,YAAYnB,EAAE,cAAeyB,KAAKN,YAAYnB,EAAE0pC,KAErC,aAAhBA,GAA8C,yBAAhBA,EAC9BjoC,KAAKknC,aAAamB,QAAQ,EAAA/d,UAAUoB,uCAAwCvZ,EAAOvS,IAC5D,iBAAhBqoC,GACPjoC,KAAKknC,aAAamB,QAAQ,EAAA/d,UAAUwB,4BAA6B3Z,EAAOvS,I,KAVxE,YAcR,YAAA+qC,UAAA,SAAU4B,GACFA,GACAvsC,KAAK2qC,WAAU,GAKnB,IAHA,IAAM6B,EAAcD,GAAUvsC,KAAK6U,QAAQ7Y,OA5L3B,QA8LVgE,KAAK6U,QAAQ7Y,OACVF,EAAI,EAAGA,EAAI0wC,EAAa1wC,IAC7BkE,KAAKysC,YAAYzsC,KAAK6U,QAAQ/Y,GAAIywC,IAI1C,YAAAE,YAAA,SAAY9uC,EAAe4uC,GACtB5uC,EAAU+uC,QAAoB,MAAVH,GAAmB5uC,EAAU+uC,QAAUH,GAGhE,YAAAI,YAAA,WACI,OAAoB,MAAhB3sC,KAAK6U,QACE,GAEJ7U,KAAK6U,QAAQtG,QAAO,SAAA5Q,GAAK,QAAGA,EAAU+uC,YAGjD,YAAAE,eAAA,WACI,OAAO5sC,KAAK2sC,cAAc3mC,KAAI,SAAArI,GAAK,OAAAA,EAAEiC,OAGzC,YAAA0sC,sBAAA,SAAsBn6B,G,QAClB,OAA8B,QAAvB,EAAc,QAAd,EAACA,aAAM,EAANA,EAAQ0B,aAAK,eAAEg5B,eAAO,WACzB16B,EAAOuT,qBAAuB1lB,KAAKuqC,uBAGtC,YAAAnF,aAAN,SAAmBjzB,G,0FACX,SAAMnS,KAAK0rC,eAAev5B,I,cAA1B,UACA,YAAMizB,aAAY,UAACjzB,G,YAIjB,YAAA85B,aAAV,SAAuBrsC,EAAYmsC,GAC/B,OAAOA,EAAY/rC,KAAK4mC,cAAckG,iBAAiBltC,GAAMI,KAAK4mC,cAAcmG,qBAAqBntC,IAG/F,YAAAotC,sBAAV,SAAgCrvC,GAC5B,OAAOA,EAAEsvC,mBAAyC,MAApBtvC,EAAE+R,gBAGpB,YAAAg8B,eAAhB,SAA+B/tC,G,uGACpB,EAAAA,EAAEyoB,WAAa,EAAAC,mBAAmBC,MAAlC,MAA0C,GAAMtmB,KAAK8pC,wBAAwBoD,sB,SAAnC,S,iBAAjD,MAAO,CAAP,a,iCAjOKC,GAAgB,0V,iCAAhBA,EAAgB,y5ECjC7B,uCAAklJ,iB,KAAnkJ,4D,wOD6Bf,CAIsC,oBAAzB,EAAAA,oB,+DAAAA,EAAgB,E,KAJ5B,EAAAlmC,U,MAAU,CACPnG,SAAU,oBACVoG,YAAa,8B,gPAGJ6iC,WAAU,E,KAAlB,EAAA/oC,QACSgpC,qBAAoB,E,KAA7B,EAAAthB,SACSuhB,eAAc,E,KAAvB,EAAAvhB,SACSwhB,qBAAoB,E,KAA7B,EAAAxhB,SACSyhB,eAAc,E,KAAvB,EAAAzhB,Y,8HEtCL,SAAY0kB,GACR,mDACA,yCACA,+CACA,qCACA,mDACA,6DACA,mCACA,+CACA,uCACA,uCACA,kCACA,kDAZJ,CAAY,EAAAA,cAAA,EAAAA,YAAW,M,wGCAvB,SAAYC,GACR,qCACA,iCAFJ,CAAY,EAAAA,mBAAA,EAAAA,iBAAgB,M,sGCA5B,SAAY/xB,GACR,qCACA,2DACA,2DACA,uDACA,mDACA,6EACA,yEAPJ,CAAY,EAAAA,iBAAA,EAAAA,eAAc,M,mGCA1B,MAII,SAAYgyB,EAAmBC,GAC3BvtC,KAAKstC,UAAYA,EACjBttC,KAAKutC,oBAAsBA,GANtB,EAAAC,e,udCAb,IAEA,cAKI,WAAYhsC,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAK+pB,SAAW,EAAK/pB,oBAAoB,YACzC,EAAKgqB,cAAgB,EAAKhqB,oBAAoB,iB,EAEtD,OAX+C,OAW/C,EAXA,CAFA,MAE+CQ,cAAlC,EAAA6lC,6B,6cCFb,YACA,SACA,SACA,SAEA,cAiBI,WAAYjsC,G,MAAZ,EACI,YAAMA,IAAS,KALnB,EAAAksC,cAA+C,GAC/C,EAAAhW,UAAuC,GACvC,EAAAiW,sBAA+D,GAI3D,EAAK/tC,GAAK,EAAKwH,oBAAoB,MACnC,EAAKvJ,KAAO,EAAKuJ,oBAAoB,QACrC,EAAK8P,MAAQ,EAAK9P,oBAAoB,SACtC,EAAKwmC,cAAgB,EAAKxmC,oBAAoB,iBAC9C,EAAKymC,mBAAqB,EAAKzmC,oBAAoB,sBACnD,EAAK0mC,QAAU,EAAK1mC,oBAAoB,WACxC,EAAK2mC,QAAU,EAAK3mC,oBAAoB,WACxC,EAAK4mC,iBAAmB,EAAK5mC,oBAAoB,oBACjD,EAAKxI,IAAM,EAAKwI,oBAAoB,OACpC,EAAK6mC,WAAa,EAAK7mC,oBAAoB,cAC3C,EAAK8mC,cAAgB,EAAK9mC,oBAAoB,iBAC9C,EAAK+mC,mBAAmE,QAAjD,EAAG,EAAK/mC,oBAAoB,6BAAqB,SAExE,IAAMsmC,EAAgB,EAAKtmC,oBAAoB,iBAC1B,MAAjBsmC,IACA,EAAKA,cAAgBA,EAAc1nC,KAAI,SAACjI,GAAW,WAAI,EAAAqwC,4BAA4BrwC,OAEvF,IAAM25B,EAAY,EAAKtwB,oBAAoB,aAC1B,MAAbswB,IACA,EAAKA,UAAYA,EAAU1xB,KAAI,SAACjI,GAAW,WAAI,EAAAswC,wBAAwBtwC,OAE3E,IAAM4vC,EAAwB,EAAKvmC,oBAAoB,yB,OAC1B,MAAzBumC,IACA,EAAKA,sBAAwBA,EAAsB3nC,KAAI,SAACjI,GAAW,WAAI,EAAAuwC,oCAAoCvwC,O,EAGvH,OA7CqC,OA6CrC,EA7CA,CAAqC,EAAA6J,cAAxB,EAAA2mC,mB,4cCLb,IAIA,cAOI,WAAY/sC,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAKsI,eAAiB,EAAKtI,oBAAoB,kBAC/C,EAAKb,KAAO,EAAKa,oBAAoB,QACrC,EAAK5L,KAAO,EAAK4L,oBAAoB,QACrC,EAAK0d,QAAU,EAAK1d,oBAAoB,W,EAEhD,OAfoC,OAepC,EAfA,CAJA,MAIoCQ,cAAvB,EAAA4mC,kB,0+CCJb,W,GAIA,KAKA,KAKA,KACA,MACA,K,0CAEA,aAWI,WAAsBhW,EAA0B9D,EAClCh1B,EAAoCinB,EACpC4Q,EAAoC3Z,GAF5B,KAAA4a,SAA0B,KAAA9D,iBAClC,KAAAh1B,cAAoC,KAAAinB,QACpC,KAAA4Q,cAAoC,KAAA3Z,eAXlD,KAAArc,SAAU,EACV,KAAA8iC,QAAS,EAIC,KAAAoK,mBAA+B,GAC/B,KAAAC,mBAAqB,0BACrB,KAAAC,cAAgB,qB,OAS1B,YAAAnuC,SAAA,sBACQouC,GAAQ,EACZ5uC,KAAK2mB,MAAMkoB,YAAYrqC,WAAU,SAAMsqC,GAAO,qC,gEAC1C,OAAIF,EACA,KAEJA,GAAQ,EACR,GAAM5uC,KAAK4d,aAAa/X,OAAO,mB,cAA/B,SAEIhE,EAAQ7B,KAAKyuC,mBAAmBjc,MAAK,SAAA/wB,GAAK,OAAgB,OAAhBqtC,aAAO,EAAPA,EAAUrtC,KAA6B,KAAfqtC,EAAQrtC,MAC1EstC,EAAuB,KACtBltC,EAAD,QACA,EAAA7B,KAAc,GAAMA,KAAKu3B,YAAYyX,oB,UAArC,EAAK3K,OAAS,UAEVrkC,KAAKqkC,OAAL,Y,iBAEI,O,sBAAA,GAAMrkC,KAAKivC,cAAcH,I,cAAzB,S,+BAEAjtC,GAAQ,EACRktC,EAAe,EAAE99B,Q,iCAGrB,SAAMjR,KAAK4d,aAAasxB,KAAK,gBAAiB,CAC1CvoB,MAAO3mB,KAAKmvC,mBACZL,QAASA,K,OAIb,OANA,SAKA9uC,KAAKkX,MAAQ43B,EAAQ53B,MACrB,GAAMlX,KAAKovC,gBAAgBN,I,OAA3B,S,0BAIJjtC,IACMwtC,EAAe,CACjB9oC,KAAM,QACNhG,MAAO,KACP8D,KAAsB,MAAhB0qC,EAAuB/uC,KAAKN,YAAYnB,EAAEyB,KAAK0uC,mBAAoBK,GACrE/uC,KAAKN,YAAYnB,EAAEyB,KAAK2uC,eAC5BpxB,QAAS,KAEbvd,KAAK00B,eAAeI,SAASua,GAC7BrvC,KAAKw4B,OAAOkE,SAAS,CAAC,OAG1B18B,KAAKuB,SAAU,E,eAIvB,YAAA4tC,iBAAA,WACI,IAAMG,EAAUtvC,KAAKw4B,OAAO+W,SAASvvC,KAAKw4B,OAAOvsB,KAEjD,OADAqjC,EAAQT,YAAc,GACfS,EAAQtlC,Y,iCApEDwlC,GAAmB,sN,iCAAnBA,I,EADtB,GACsB,EAAAA,uB,+DAAAA,EAAmB,E,KADxC,EAAA3uC,a,8PClBD,SAAYiuB,GACR,yBACA,iBACA,yCACA,2CACA,uCACA,qCACA,uCACA,mCACA,mCACA,qCACA,wCACA,oCACA,kCACA,8BACA,wCACA,sCACA,kBACA,sCACA,wCACA,4CACA,0CArBJ,CAAY,EAAAA,aAAA,EAAAA,WAAU,M,ydCCtB,WAAS,4EAAAtvB,cACT,aAAS,8EAAAiwC,gBACT,YAAS,8EAAAtzB,gBACT,YAAS,6EAAA1F,eACT,YAAS,+EAAAnQ,iBACT,YAAS,mFAAA4P,qBACT,YAAS,+EAAA/V,iBACT,YAAS,oFAAA8V,sBACT,YAAS,+EAAAS,iBACT,WAAS,6EAAApX,eACT,YAAS,4EAAAub,cACT,YAAS,kFAAAza,oBACT,YAAS,2FAAAqP,6BACT,WAAS,sFAAAlQ,wBACT,YAAS,+EAAAqX,iBACT,aAAS,iFAAA84B,mBACT,YAAS,gFAAA15B,kBACT,YAAS,8EAAAN,gBACT,YAAS,6EAAAS,eACT,aAAS,8EAAAsH,gBACT,aAAS,6EAAAmB,eACT,WAAS,6EAAAnf,eACT,YAAS,qFAAAqb,wB,uGCvBT,mBAAsB,EAAA40B,mB,4+CCAtB,W,GAMA,KAEA,KACA,KAEA,OAEA,M,2GCb+S,+BAAuC,YAAQ,kB,6BAAR,4C,sBAA4K,6BAAyC,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAA+6B,0BAAwC,Y,mBAA4B,kB,MAA5B,kF,sBAAoR,4BAAsD,Y,mBAAiB,kB,MAAjB,+D,yBAAsU,yBAAsB,8CAAqC,YAAc,iBAAQ,kC,uCAArD,mEAA+B,gD,yBAAlS,yBAA8B,yCAAI,Y,mBAA0B,iBAAM,yCAAK,sCAAqG,+CAAsB,aAAuB,iBAAQ,kCAAM,gDAAuF,yCAAkC,mC,4CAA9T,wEAAwC,6EAA0C,4DAA8E,+DAA0C,+CAAsF,qE,yBAAxsB,+BAAuE,4CAAQ,yCAAK,4CAAqC,Y,mBAAsB,iBAAM,6CAAqC,gDAAsB,a,oBAAmB,iBAAQ,kCAAM,gDAA6E,8CAAyB,a,oBAAkB,iBAAM,kCAAM,kCAAS,8CAAQ,kDAAsW,kCAAS,mC,8BAA5nB,mEAAuF,iEAAuE,+CAAgE,gEAAiE,iD,mDAAsW,mCAAsG,0FAAoB,MAA0E,sC,mBAAsF,2CAAM,Y,mBAAqB,iBAAQ,iC,oDAA5S,2CAA4B,gCAAwL,6EAA2D,mE,0FAAr/D,6BAAwC,6CAAqB,6CAA0B,+CAAmC,Y,mBAAsB,iBAAS,gDAAkH,iG,oBAAlH,iBAAsK,gDAAmB,iBAAC,iBAAQ,iDAAiC,a,oBAAoB,iBAAS,iDAA8G,+F,oBAA9G,iBAAgK,kCAAO,qDAA8G,yFAAoB,MAAkD,wCAA6G,a,oBAAqB,iBAAU,kCAAO,sCAAK,iDAA2E,qDAA8vB,qDAAuU,kC,oDAAl6D,oEAA4G,uFAAqC,gCAAiH,mEAAwG,qFAAmC,8BAA6E,6DAA+B,gCAAgK,mFAA8E,4EAAiD,gEAA4G,8DAAi4B,yDDkBpkF,iBAwBI,WAAoB9vB,EAAgClgB,EACxCwnC,EAAoCxS,EACpCib,GAFQ,KAAA/vB,aAAgC,KAAAlgB,cACxC,KAAAwnC,eAAoC,KAAAxS,iBACpC,KAAAib,eAhBH,KAAAC,UAAW,EAEpB,KAAAruC,SAAU,EACV,KAAAsuC,QAAS,EAQD,KAAAC,kBAAoB,IAAIttC,IACxB,KAAAutC,cAAgB,IAAIvtC,I,OAMtB,YAAAhC,SAAN,W,gGAII,OAHMwvC,EAAehwC,KAAKknC,aAAate,wBACvC5oB,KAAKmpB,MAAQ6mB,EAAa,GAC1BhwC,KAAK8oB,IAAMknB,EAAa,GACxB,GAAMhwC,KAAKke,Q,cAAX,S,YAGE,YAAAA,KAAN,W,4GACQle,KAAK4vC,SACY,GAAM5vC,KAAK4f,WAAWqwB,qBAAqBjwC,KAAK0P,iBADjE,M,OACiB,SACRlU,KAAK6R,SAAQ,SAAAqE,GAClB,IAAM7T,EAAO,EAAK8xC,aAAahwC,UAAU+R,GACzC,EAAKq+B,cAAcpsC,IAAI+N,EAAE9R,GAAI,CAAE/B,KAAMA,EAAMqZ,MAAOxF,EAAEwF,QACpD,EAAK44B,kBAAkBnsC,IAAI+N,EAAEkhB,OAAQ,CAAE/0B,KAAMA,EAAMqZ,MAAOxF,EAAEwF,W,iBAGpE,SAAMlX,KAAKkwC,YAAW,I,cAAtB,SACAlwC,KAAK6vC,QAAS,E,YAGZ,YAAAK,WAAN,SAAiBC,G,6GACb,GAA2B,MAAvBnwC,KAAKowC,gBAA8C,MAApBpwC,KAAKqwC,YACpC,UAGAC,EAAkB,KACtB,IACIA,EAAQtwC,KAAKknC,aAAa7d,kBAAkBrpB,KAAKmpB,MAAOnpB,KAAK8oB,KAC/D,MAAOrnB,GAGL,OAFAzB,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,qBACvB,IAGJyB,KAAKuB,SAAU,E,iBAmBA,O,sBAhBP+0B,OAAO,EAEPA,EADgB,SAAhBt2B,KAAKuwC,QAAqBvwC,KAAKuwB,WACrBvwB,KAAK4f,WAAW4wB,sBAAsBxwC,KAAKuwB,WAAYvwB,KAAKywC,SAClEH,EAAM,GAAIA,EAAM,GAAIH,EAAgB,KAAOnwC,KAAK0wC,mBAC7B,SAAhB1wC,KAAKuwC,OACFvwC,KAAK4f,WAAW+wB,0BAA0B3wC,KAAK0P,eAAgB1P,KAAKywC,SAC1EH,EAAM,GAAIA,EAAM,GAAIH,EAAgB,KAAOnwC,KAAK0wC,mBAE1C1wC,KAAK4f,WAAWgxB,gBAAgB5wC,KAAKywC,SAC3CH,EAAM,GAAIA,EAAM,GAAIH,EAAgB,KAAOnwC,KAAK0wC,mBAEpDP,EACAnwC,KAAKowC,eAAiB9Z,EAEtBt2B,KAAKqwC,YAAc/Z,EAEZ,GAAMA,G,cAAjB90B,EAAW,S,0CAIA,OADfxB,KAAK0wC,kBAAoBlvC,EAASkvC,kBACnB,GAAMp2B,QAAQK,IAAInZ,EAAShG,KAAKwK,KAAI,SAAM7H,GAAC,qC,4DAEpC,OADZy0B,EAA2B,MAAlBz0B,EAAE0yC,aAAuB1yC,EAAEy0B,OAASz0B,EAAE0yC,aACnC,GAAM7wC,KAAKknC,aAAaxd,aAAavrB,I,OAGvD,OAHM2yC,EAAY,SACZ75B,EAAOjX,KAAK4vC,UAAsB,MAAVhd,GAAkB5yB,KAAK8vC,kBAAkBjsC,IAAI+uB,GACvE5yB,KAAK8vC,kBAAkB5xC,IAAI00B,GAAU,KAClC,CAAP,EAAO,CACH3hB,QAAS6/B,EAAU7/B,QACnBiZ,QAAS4mB,EAAU5mB,QACnBC,QAAS2mB,EAAU3mB,QACnByI,OAAQA,EACRme,SAAkB,MAAR95B,EAAeA,EAAKpZ,KAAOmC,KAAK4vC,SAAW5vC,KAAKN,YAAYnB,EAAE,WAAa,KACrFyyC,UAAmB,MAAR/5B,EAAeA,EAAKC,MAAQlX,KAAK4vC,SAAW,GAAK,KAC5Dnf,KAAMtyB,EAAEsyB,KACRwgB,GAAI9yC,EAAE+yC,UACN3qC,KAAMpI,EAAEoI,mB,cAdV08B,EAAS,UAkBVkN,GAAgC,MAAfnwC,KAAKijC,QAAkBjjC,KAAKijC,OAAOjnC,OAAS,EAC9DgE,KAAKijC,OAASjjC,KAAKijC,OAAO7lB,OAAO6lB,GAEjCjjC,KAAKijC,OAASA,EAGlBjjC,KAAKuB,SAAU,EACfvB,KAAKqwC,YAAc,KACnBrwC,KAAKowC,eAAiB,K,6CA3GjBe,GAAqB,qL,iCAArBA,EAAqB,mgECtBlC,4BAAwG,4CAA4E,4CAA4B,4CAA2B,2CAA6C,Y,oBAAuB,iCAAwD,kCAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,gDAAmM,kDAAmiE,8CAA2B,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAO,kCAAO,kCAAO,kB,MAAhnF,6EAAkD,2CAA4F,mFAAqH,8CAAmM,6CAAknE,mE,uLDkBh1F,GAIa,EAAAA,yB,+DAAAA,EAAqB,E,KAJjC,EAAAlqC,U,MAAU,CACPnG,SAAU,oBACVoG,YAAa,oC,mIAGJrJ,KAAM,CAAF,C,KAAZ,EAAAmD,QACQuvC,OAAQ,CAAF,C,KAAd,EAAAvvC,QACQyvC,SAAU,CAAF,C,KAAhB,EAAAzvC,QACQ0O,eAAgB,CAAF,C,KAAtB,EAAA1O,QACQuvB,WAAY,CAAF,C,KAAlB,EAAAvvB,QACQ4uC,SAAQ,E,KAAhB,EAAA5uC,W,sIE5BL,mBAAa,EAAAowC,kD,mGCAb,SAAYC,GACR,iDACA,+CAFJ,CAAY,EAAAA,cAAA,EAAAA,YAAW,M,kGCIvB,MAOI,SAAY7vC,GACRxB,KAAKJ,GAAK4B,EAAS5B,GACnBI,KAAK0P,eAAiBlO,EAASkO,eAC/B1P,KAAKuG,KAAO/E,EAAS+E,KACrBvG,KAAKxE,KAAOgG,EAAShG,KACrBwE,KAAK8kB,QAAUtjB,EAASsjB,SAZnB,EAAAwsB,c,8+CCJb,W,GAEA,MACA,KACA,MACA,MACA,KACA,MACA,K,2DAQA,aAcI,WAAsB5xC,EAAoCqc,EAC5Csb,EAA8CE,EAC9C0P,EACAhqB,EAAsD0L,GAH9C,KAAAjpB,cAAoC,KAAAqc,gBAC5C,KAAAsb,mBAA8C,KAAAE,cAC9C,KAAA0P,4BACA,KAAAhqB,uBAAsD,KAAA0L,gB,OAE9D,YAAAnoB,SAAN,W,kGACiB,OAAb,EAAAR,KAAa,GAAMA,KAAKu3B,YAAYM,Y,OACP,OAD7B,EAAK3gB,MAAQ,SACb,EAAAlX,KAA6B,GAAMA,KAAK2oB,cAAc4oB,kC,cAAtD,EAAK1qC,sBAAwB,S,YAG3B,YAAA+tB,OAAN,W,0GACS,SAAM50B,KAAKwxC,kB,OAAhB,OAAK,SAIA,GAAMxxC,KAAKyxC,sBAHZ,I,OAGJ,OAAK,SAIS,GAAMzxC,KAAKu3B,YAAYM,YAHjC,I,cAGE3gB,EAAQ,SACE,MAAZlX,KAAK0xC,IAAL,OACA,EAAA1xC,KAAW,GAAMA,KAAKu3B,YAAYoa,W,OAAlC,EAAKD,IAAM,S,wBAEW,MAAtB1xC,KAAK4xC,cAAL,OACA,EAAA5xC,KAAqB,GAAMA,KAAKu3B,YAAYsa,qB,OAA5C,EAAKD,cAAgB,S,iBAEb,SAAM5xC,KAAK+b,cAAc+1B,QAAQ9xC,KAAK60B,eAAgB3d,EAAM3K,OAAO5E,cAC3E3H,KAAK0xC,IAAK1xC,KAAK4xC,gB,OACQ,OAFrBhzC,EAAM,SAEe,GAAMoB,KAAK+b,cAAcgZ,aAAa/0B,KAAK60B,eAAgBj2B,I,OAG/D,OAHjBo2B,EAAqB,SAEvBmB,EAA0C,KACvB,GAAMn2B,KAAK+b,cAAcg2B,a,eAC1B,MADC,SACnB,OACS,GAAM/xC,KAAK+b,cAAci2B,WAAWpzC,I,eAA7Cu3B,EAAS,S,eAEA,SAAMn2B,KAAK+b,cAAck2B,aAAarzC,I,QAA/Cu3B,EAAS,S,mBAGb,SAAMn2B,KAAKkyC,qBAAqBld,EAAoBp2B,EAAKu3B,I,eAAzD,S,YAGE,YAAAsb,mBAAN,W,mEAGI,MAAO,CAAP,GAAO,UAGL,YAAAS,qBAAN,SAA2Bld,EAA4Bp2B,EACnDu3B,G,oFAIE,YAAAqb,eAAN,W,gGACI,OAA2B,MAAvBxxC,KAAK60B,gBAAkD,KAAxB70B,KAAK60B,gBACpC70B,KAAKid,qBAAqBK,UAAU,QAAStd,KAAKN,YAAYnB,EAAE,iBAC5DyB,KAAKN,YAAYnB,EAAE,uBAChB,CAAP,GAAO,IAEPyB,KAAK60B,eAAe74B,OAAS,GAC7BgE,KAAKid,qBAAqBK,UAAU,QAAStd,KAAKN,YAAYnB,EAAE,iBAC5DyB,KAAKN,YAAYnB,EAAE,qBAChB,CAAP,GAAO,IAEPyB,KAAK60B,iBAAmB70B,KAAKmyC,sBAC7BnyC,KAAKid,qBAAqBK,UAAU,QAAStd,KAAKN,YAAYnB,EAAE,iBAC5DyB,KAAKN,YAAYnB,EAAE,0BAChB,CAAP,GAAO,KAGL6zC,EAAiBpyC,KAAKinC,0BAA0BoL,iBAAiBryC,KAAK60B,eACxE70B,KAAKsyC,gCAEyB,MAA9BtyC,KAAK6G,uBACJ7G,KAAK2oB,cAAc4pB,uBAChBH,EAAe7d,MACfv0B,KAAK60B,eACL70B,KAAK6G,uBAMS,MAAlBurC,GAA0BA,EAAe7d,MAAQ,EAClC,GAAMv0B,KAAKid,qBAAqB0nB,WAAW3kC,KAAKN,YAAYnB,EAAE,0BACzEyB,KAAKN,YAAYnB,EAAE,sBAAuByB,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MACxF,YAHJ,OALAyB,KAAKid,qBAAqBK,UAAU,QAAStd,KAAKN,YAAYnB,EAAE,iBAC5DyB,KAAKN,YAAYnB,EAAE,2CAChB,CAAP,GAAO,K,OAOP,IAHe,SAIX,MAAO,CAAP,GAAO,G,iBAIf,MAAO,CAAP,GAAO,WAGX,YAAAi0C,uBAAA,sBAC8C,MAAtCxyC,KAAKyyC,+BACLC,aAAa1yC,KAAKyyC,+BAEtBzyC,KAAKyyC,8BAAgCtwB,YAAW,WAC5C,IAAMiwB,EAAiB,EAAKnL,0BAA0BoL,iBAAiB,EAAKxd,eACxE,EAAKyd,gCACT,EAAKK,oBAAwC,MAAlBP,EAAyB,KAAOA,EAAe7d,QAC3E,MAGD,YAAA4D,OAAN,W,0FACsB,SAAMn4B,KAAKid,qBAAqB0nB,WAAW3kC,KAAKN,YAAYnB,EAAE,sBAC5EyB,KAAKN,YAAYnB,EAAE,UAAWyB,KAAKN,YAAYnB,EAAE,UAAWyB,KAAKN,YAAYnB,EAAE,Y,cADjE,UAGdyB,KAAKq3B,iBAAiBa,KAAK,U,YAI3B,YAAAoa,6BAAR,WACI,IAAIM,EAAsB,GACpBC,EAAa7yC,KAAKkX,MAAMxK,QAAQ,KAItC,OAHImmC,GAAc,IACdD,EAAYA,EAAUx1B,OAAOpd,KAAKkX,MAAM3N,OAAO,EAAGspC,GAAYtmC,OAAO5E,cAAcyF,MAAM,kBAEtFwlC,G,iCApIFE,GAAuB,uR,iCAAvBA,I,EADb,GACa,EAAAA,2B,+DAAAA,EAAuB,E,KADnC,EAAAjyC,a,wsDChBD,aAEA,SAEA,SAGA,UACA,SACA,UACA,UAiBa,EAAAkyC,qBAAkB,MAC1B,EAAAp0B,sBAAsBgX,eAAgB,CACnCpvB,KAAM,EAAAoY,sBAAsBgX,cAC5B93B,KAAM,KACNm1C,YAAa,KACbC,SAAU,EACVC,KAAM,EACNpF,SAAS,GAEb,EAAC,EAAAnvB,sBAAsBkX,SAAU,CAC7BtvB,KAAM,EAAAoY,sBAAsBkX,QAC5Bh4B,KAAM,KACNm1C,YAAa,KACbC,SAAU,EACVC,KAAM,EACNpF,SAAS,GAEb,EAAC,EAAAnvB,sBAAsBwW,KAAM,CACzB5uB,KAAM,EAAAoY,sBAAsBwW,IAC5Bt3B,KAAM,MACNm1C,YAAa,KACbC,SAAU,EACVC,KAAM,EACNpF,SAAS,GAEb,EAAC,EAAAnvB,sBAAsByW,iBAAkB,CACrC7uB,KAAM,EAAAoY,sBAAsByW,gBAC5Bv3B,KAAM,qBACNm1C,YAAa,KACbC,SAAU,GACVC,KAAM,EACNpF,SAAS,GAEb,EAAC,EAAAnvB,sBAAsB4W,OAAQ,CAC3BhvB,KAAM,EAAAoY,sBAAsB4W,MAC5B13B,KAAM,KACNm1C,YAAa,KACbC,SAAU,EACVC,KAAM,EACNpF,SAAS,GAEb,EAAC,EAAAnvB,sBAAsB8W,UAAW,CAC9BlvB,KAAM,EAAAoY,sBAAsB8W,SAC5B53B,KAAM,KACNm1C,YAAa,KACbC,SAAU,EACVC,KAAM,EACNpF,SAAS,G,GAIjB,iBAeI,WAAoB/xB,EAAwC6D,EAChD2X,EAAoCD,EAClC6b,EAAoCzzC,EACpCud,EAAoDoa,EACtD+b,EAAkDlyC,EAClDmyC,QAAA,IAAAA,OAAA,GALQ,KAAAt3B,gBAAwC,KAAA6D,aAChD,KAAA2X,cAAoC,KAAAD,eAClC,KAAA6b,eAAoC,KAAAzzC,cACpC,KAAAud,uBAAoD,KAAAoa,mBACtD,KAAA+b,sBAAkD,KAAAlyC,aAClD,KAAAmyC,gBAVZ,KAAAC,8BAAuD,KAqT3D,OAxSI,YAAAvrC,KAAA,WACI,EAAAgrC,mBAAmB,EAAAp0B,sBAAsB4W,OAAO13B,KAAOmC,KAAKN,YAAYnB,EAAE,cAC1E,EAAAw0C,mBAAmB,EAAAp0B,sBAAsB4W,OAAOyd,YAAchzC,KAAKN,YAAYnB,EAAE,aAEjF,EAAAw0C,mBAAmB,EAAAp0B,sBAAsBgX,eAAe93B,KAAOmC,KAAKN,YAAYnB,EAAE,yBAClF,EAAAw0C,mBAAmB,EAAAp0B,sBAAsBgX,eAAeqd,YACpDhzC,KAAKN,YAAYnB,EAAE,wBAEvB,EAAAw0C,mBAAmB,EAAAp0B,sBAAsBwW,KAAK6d,YAAchzC,KAAKN,YAAYnB,EAAE,WAE/E,EAAAw0C,mBAAmB,EAAAp0B,sBAAsByW,iBAAiBv3B,KACtD,QAAUmC,KAAKN,YAAYnB,EAAE,gBAAkB,IACnD,EAAAw0C,mBAAmB,EAAAp0B,sBAAsByW,iBAAiB4d,YACtDhzC,KAAKN,YAAYnB,EAAE,uBAEvB,EAAAw0C,mBAAmB,EAAAp0B,sBAAsB8W,UAAU53B,KAAOmC,KAAKN,YAAYnB,EAAE,iBAC7E,EAAAw0C,mBAAmB,EAAAp0B,sBAAsB8W,UAAUud,YAAchzC,KAAKN,YAAYnB,EAAE,gBAEpF,EAAAw0C,mBAAmB,EAAAp0B,sBAAsBkX,SAASh4B,KAAOmC,KAAKN,YAAYnB,EAAE,gBAC5E,EAAAw0C,mBAAmB,EAAAp0B,sBAAsBkX,SAASmd,YAAchzC,KAAKN,YAAYnB,EAAE,gBAGjF,YAAAg1C,MAAN,SAAYr8B,EAAe2d,EAAwB2e,G,oGAEnC,OADZxzC,KAAKszC,8BAAgC,KACzB,GAAMtzC,KAAKyzC,gBAAgB5e,EAAgB3d,I,OAChC,OADjBtY,EAAM,SACW,GAAMoB,KAAK+b,cAAcgZ,aAAaF,EAAgBj2B,I,OACjD,OADtB80C,EAAiB,SACK,GAAM1zC,KAAK+b,cAAcgZ,aAAaF,EAAgBj2B,EAC9E,EAAAyyC,YAAYsC,qB,OACT,OAFDC,EAAsB,SAErB,GAAM5zC,KAAK6zC,YAAY38B,EAAOw8B,EAAgBE,EAAqB,KAAM,KAAM,KAAM,KAAM,KAC9Fh1C,EAAK,KAAM,KAAM,KAAM40C,I,OAD3B,MAAO,CAAP,EAAO,kBAIL,YAAAM,SAAN,SAAez3B,EAAc03B,EAAsBC,G,0FAExC,OADPh0C,KAAKszC,8BAAgC,KAC9B,GAAMtzC,KAAK6zC,YAAY,KAAM,KAAM,KAAMx3B,EAAM03B,EAAcC,EAAa,KAAM,KACnF,KAAM,KAAM,KAAM,O,OADtB,MAAO,CAAP,EAAO,kBAIL,YAAAC,YAAN,SAAkBC,EAAkBtwB,G,0FAEzB,OADP5jB,KAAKszC,8BAAgC,KAC9B,GAAMtzC,KAAK6zC,YAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAMK,EAAUtwB,EACxE,KAAM,KAAM,KAAM,O,OADtB,MAAO,CAAP,EAAO,kBAIL,YAAAuwB,eAAN,SAAqBC,EAA0CC,EAC3DC,G,0FACO,SAAMt0C,KAAK6zC,YAAY7zC,KAAKkX,MAAOlX,KAAKg1B,mBAAoBh1B,KAAKu0C,wBAAyBv0C,KAAKqc,KAClGrc,KAAK+zC,aAAc/zC,KAAKw0C,eAAgBx0C,KAAKk0C,SAAUl0C,KAAK4jB,aAAc5jB,KAAKpB,IAAKw1C,EACpFC,EAAgBC,EAAUt0C,KAAKwzC,e,OAFnC,MAAO,CAAP,EAAO,kBAKL,YAAAiB,cAAN,SAAoBv9B,EAAe2d,EAAwBuf,EACvDC,EAAwBC,EAAoBd,G,oGAEhC,OADZxzC,KAAKszC,8BAAgC,KACzB,GAAMtzC,KAAKyzC,gBAAgB5e,EAAgB3d,I,OAChC,OADjBtY,EAAM,SACW,GAAMoB,KAAK+b,cAAcgZ,aAAaF,EAAgBj2B,I,OACjD,OADtB80C,EAAiB,SACK,GAAM1zC,KAAK+b,cAAcgZ,aAAaF,EAAgBj2B,EAC9E,EAAAyyC,YAAYsC,qB,OACT,OAFDC,EAAsB,SAErB,GAAM5zC,KAAK6zC,YAAY38B,EAAOw8B,EAAgBE,EAAqB,KAAM,KAAM,KAAM,KAAM,KAAMh1C,EACpGw1C,EAAmBC,EAAgBC,EAAUd,I,OADjD,MAAO,CAAP,EAAO,kBAIL,YAAAkB,iBAAN,SAAuBr4B,EAAc03B,EAAsBC,EACvDI,EAA0CC,EAAwBC,G,0FAE3D,OADPt0C,KAAKszC,8BAAgC,KAC9B,GAAMtzC,KAAK6zC,YAAY,KAAM,KAAM,KAAMx3B,EAAM03B,EAAcC,EAAa,KAC7E,KAAM,KAAMI,EAAmBC,EAAgBC,I,OADnD,MAAO,CAAP,EAAO,kBAIL,YAAAK,oBAAN,SAA0BT,EAAkBtwB,EAAsBwwB,EAC9DC,EAAwBC,G,0FAEjB,OADPt0C,KAAKszC,8BAAgC,KAC9B,GAAMtzC,KAAK6zC,YAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAMK,EAAUtwB,EAAc,KACtFwwB,EAAmBC,EAAgBC,I,OADvC,MAAO,CAAP,EAAO,kBAIX,YAAAnc,OAAA,SAAOyc,GACHA,IACA50C,KAAKq3B,iBAAiBa,KAAK,cAG/B,YAAA2c,+BAAA,SAA+BjmC,GAC3B,IAAM8oB,EAAmB,GACzB,OAAmC,MAA/B13B,KAAK80C,yBAIL90C,KAAK80C,uBAAuBjxC,IAAI,EAAA8a,sBAAsByW,kBACtDp1B,KAAKid,qBAAqB83B,eAC1Brd,EAAUp7B,KAAK,EAAAy2C,mBAAmB,EAAAp0B,sBAAsByW,kBAGxDp1B,KAAK80C,uBAAuBjxC,IAAI,EAAA8a,sBAAsBgX,gBACtD+B,EAAUp7B,KAAK,EAAAy2C,mBAAmB,EAAAp0B,sBAAsBgX,gBAGxD31B,KAAK80C,uBAAuBjxC,IAAI,EAAA8a,sBAAsBkX,UACtD6B,EAAUp7B,KAAK,EAAAy2C,mBAAmB,EAAAp0B,sBAAsBkX,UAGxD71B,KAAK80C,uBAAuBjxC,IAAI,EAAA8a,sBAAsBwW,MAAQn1B,KAAKid,qBAAqB83B,eACxFrd,EAAUp7B,KAAK,EAAAy2C,mBAAmB,EAAAp0B,sBAAsBwW,MAGxDn1B,KAAK80C,uBAAuBjxC,IAAI,EAAA8a,sBAAsB8W,WAAaz1B,KAAKid,qBAAqB+3B,iBAAiBpmC,IAC9G8oB,EAAUp7B,KAAK,EAAAy2C,mBAAmB,EAAAp0B,sBAAsB8W,WAGxDz1B,KAAK80C,uBAAuBjxC,IAAI,EAAA8a,sBAAsB4W,QACtDmC,EAAUp7B,KAAK,EAAAy2C,mBAAmB,EAAAp0B,sBAAsB4W,SAzBjDmC,GA+Bf,YAAAud,4BAAA,SAA4BC,GACxB,GAAmC,MAA/Bl1C,KAAK80C,uBACL,OAAO,KAGX,GAA0C,MAAtC90C,KAAKszC,+BACLtzC,KAAK80C,uBAAuBjxC,IAAI7D,KAAKszC,+BACrC,OAAOtzC,KAAKszC,8BAGhB,IAAI6B,EAAsC,KACtCC,GAAoB,EAaxB,OAZAp1C,KAAK80C,uBAAuBznC,SAAQ,SAAC/O,EAAOiI,GACxC,IAAM8uC,EAAY,EAAAtC,mBAA2BxsC,GAC7C,GAAgB,MAAZ8uC,GAAoBA,EAASpC,SAAWmC,EAAkB,CAC1D,GAAI7uC,IAAS,EAAAoY,sBAAsB8W,WAAayf,EAC5C,OAGJC,EAAe5uC,EACf6uC,EAAmBC,EAASpC,aAI7BkC,GAGL,YAAA1B,gBAAN,SAAsB5e,EAAwB3d,G,sGAC1CA,EAAQA,EAAM3K,OAAO5E,cACjB+pC,EAAe,KACfE,EAAwB,K,iBAEC,O,sBAAA,GAAM5xC,KAAK4f,WAAW01B,aAAa,IAAI,EAAAC,gBAAgBr+B,K,cACxD,OADlBs+B,EAAmB,YAErB9D,EAAM8D,EAAiB9D,IACvBE,EAAgB4D,EAAiB5D,e,aAGrC,GAAS,O,aAAyB,MAAjB,EAAEjS,WACf,MAAM,E,mBAGd,MAAO,CAAP,EAAO3/B,KAAK+b,cAAc+1B,QAAQjd,EAAgB3d,EAAOw6B,EAAKE,YAGlE,YAAA6D,kBAAA,WACI,OAAwB,MAAjBz1C,KAAKk0C,UAAyC,MAArBl0C,KAAK4jB,cAGzC,YAAA8xB,eAAA,WACI,OAAoB,MAAb11C,KAAKqc,MAAqC,MAArBrc,KAAK+zC,cAA+C,MAAvB/zC,KAAKw0C,gBAGlE,YAAAmB,oBAAA,WACI,OAAqB,MAAd31C,KAAKkX,OAA4C,MAA3BlX,KAAKg1B,oBAGxB,YAAA6e,YAAd,SAA0B38B,EAAew8B,EAAwBE,EAA6Bv3B,EAC1F03B,EAAsBC,EAAqBE,EAAkBtwB,EAAsBhlB,EACnFw1C,EAA2CC,EAAyBC,EAAoBd,G,wHAC3D,SAAMxzC,KAAKs3B,aAAase,kBAAkB1+B,I,OACzD,OADR2+B,EAAuB,SACf,GAAM71C,KAAKmzC,aAAa2C,Y,OAmCrB,OAnCXC,EAAQ,SACRC,EAAgB,IAAI,EAAAC,cAAcF,EAAO/1C,KAAKid,sBAEhDi5B,EAA0B,GAC1BC,EAA6B,GAC7BC,EAAyC,CAAC,KAAM,MAGhDF,EADS,MAATh/B,GAAmC,MAAlBw8B,EACD,CAACx8B,EAAOw8B,GAER,KAGhByC,EADQ,MAAR95B,GAAgC,MAAhB03B,GAAuC,MAAfC,EACrB,CAAC33B,EAAM03B,EAAcC,GAErB,KAGnBoC,EADY,MAAZlC,GAAoC,MAAhBtwB,EACG,CAACswB,EAAUtwB,GAEX,KAKvByB,EADkB,MAAlBgvB,GAA+C,MAArBD,EAChB,IAAI,EAAAiC,aAAaH,EAAeC,EAAkBC,EAAsBhC,EAC9EC,EAAgBC,EAAUd,EAAcwC,GACb,MAAxBH,EACG,IAAI,EAAAQ,aAAaH,EAAeC,EAAkBC,EACxD,EAAAz3B,sBAAsB23B,SAAUT,GAAsB,EAAOrC,EAAcwC,GAErE,IAAI,EAAAK,aAAaH,EAAeC,EAAkBC,EAAsB,KAC9E,MAAM,EAAO5C,EAAcwC,GAGlB,GAAMh2C,KAAK4f,WAAW22B,kBAAkBlxB,I,OAKzD,OALM7jB,EAAW,SAEjBxB,KAAKw2C,cACC35C,EAAS,IAAI,EAAA45C,YACZhX,eAAkBj+B,EAAiBk1C,QACpC75C,EAAO4iC,eACF,CAAP,EAAO5iC,IAEXA,EAAO85C,YAAen1C,EAAiBo1C,oBAEnC/5C,EAAO85C,WAEP32C,KAAKkX,MAAQA,EACblX,KAAKg1B,mBAAqB0e,EAC1B1zC,KAAKu0C,wBAA0BX,EAC/B5zC,KAAKqc,KAAOA,EACZrc,KAAK+zC,aAAeA,EACpB/zC,KAAKw0C,eAAiBR,EACtBh0C,KAAKk0C,SAAWA,EAChBl0C,KAAK4jB,aAAeA,EACpB5jB,KAAKpB,IAAMoB,KAAKqzC,cAAgBz0C,EAAM,KAChCi4C,EAAoBr1C,EAC1BxB,KAAK80C,uBAAyB+B,EAAkBD,oBAChD/5C,EAAOi6C,mBAAqBD,EAAkBD,oBAC9C52C,KAAKwzC,aAAeqD,EAAkBrD,aAC/B,CAAP,EAAO32C,KAGLk6C,EAAgBv1C,EACtB3E,EAAOm6C,oBAAsBD,EAAcC,oBACP,MAAhCD,EAAc1C,eAAd,MACA,GAAMr0C,KAAKs3B,aAAa2f,kBAAkBF,EAAc1C,eAAgBn9B,M,OAAxE,S,iBAGJ,SAAMlX,KAAKs3B,aAAa4f,UAAUH,EAAcI,YAAaJ,EAAcK,aAAchB,I,OACzF,OADA,SACA,GAAMp2C,KAAKu3B,YAAY8f,eAAer3C,KAAKs3B,aAAaggB,YAAat3C,KAAKs3B,aAAaO,WACnFkf,EAAcrF,IAAKqF,EAAcnF,gB,cADrC,SAEI5xC,KAAKqzC,cACM,MAAPz0C,EAAA,MACA,GAAMoB,KAAK+b,cAAcw7B,OAAO34C,IAFpC,O,OAEI,S,wBAEuB,MAAvBg1C,EAAA,OACA,GAAM5zC,KAAK+b,cAAcy7B,WAAW5D,I,QAApC,S,0BAIQ,MAARv3B,GAAqC,MAArB06B,EAAcn4C,IAA9B,OACA,GAAMoB,KAAK+b,cAAc07B,UAAUV,EAAcn4C,M,WAAjD,SAGgC,MAA5Bm4C,EAAc9I,WAAd,a,mBAEoB,O,yBAAA,GAAMjuC,KAAK+b,cAAcqgB,e,QACzC,OADMsb,EAAU,SAChB,GAAM13C,KAAK4f,WAAW+3B,gBAAgB,IAAI,EAAAnK,YAAYkK,EAAQ,GAAIA,EAAQ,GAAG39B,mB,eAA7E,SACAg9B,EAAc9I,WAAayJ,EAAQ,GAAG39B,gB,iCAGtC/Z,KAAKkB,WAAWW,MAAM,G,eAI9B,SAAM7B,KAAK+b,cAAc67B,iBAAiBb,EAAc9I,a,QAAxD,S,mBAQR,OAJgC,MAA5BjuC,KAAKozC,sBACLpzC,KAAKozC,oBAAoByE,iBAAkB,GAE/C73C,KAAKq3B,iBAAiBa,KAAK,YACpB,CAAP,EAAOr7B,WAGH,YAAA25C,WAAR,WACIx2C,KAAKpB,IAAM,KACXoB,KAAKkX,MAAQ,KACblX,KAAKg1B,mBAAqB,KAC1Bh1B,KAAKu0C,wBAA0B,KAC/Bv0C,KAAKqc,KAAO,KACZrc,KAAK+zC,aAAe,KACpB/zC,KAAKw0C,eAAiB,KACtBx0C,KAAKk0C,SAAW,KAChBl0C,KAAK4jB,aAAe,KACpB5jB,KAAK80C,uBAAyB,KAC9B90C,KAAKszC,8BAAgC,MAE7C,EA/TA,GAAa,EAAA78B,e,gHC9Eb,MAKI,SAAY7W,EAAYuxB,EAAmBC,GACvCpxB,KAAKJ,GAAKA,EACVI,KAAKmxB,SAAWA,EAChBnxB,KAAKoxB,cAAgBA,GARhB,EAAA0mB,4B,4GCAb,SAAYC,GACR,qBACA,qBACA,mBACA,yBACA,uBALJ,CAAY,EAAAA,uBAAA,EAAAA,qBAAoB,M,kcCAhC,aAEA,QAGA,QAGA,cAQI,WAAY1pC,EAAgBoL,QAAA,IAAAA,OAAA,GAA5B,MACI,cAAO,KACP,OAAW,MAAPpL,GAIJ,EAAKkL,iBAAiB,EAAMlL,EAAK,CAC7B+N,eAAgB,KAChBO,MAAO,KACPD,OAAQ,KACRlK,SAAU,KACVC,QAAS,KACT4J,KAAM,MACP5C,EAAkB,I,EA0B7B,OA/C0B,OAwBtB,YAAAgB,QAAA,SAAQP,EAAeic,GACnB,OAAOn2B,KAAKga,WAAW,IAAI,EAAA+C,SAAS/c,MAAO,CACvCoc,eAAgB,KAChBO,MAAO,KACPD,OAAQ,KACRlK,SAAU,KACVC,QAAS,KACT4J,KAAM,MACPnC,EAAOic,IAGd,YAAAW,WAAA,WACI,IAAMn5B,EAAI,IAAI,EAAAo1B,SASd,OARA/yB,KAAK6Z,eAAe7Z,KAAMrC,EAAG,CACzBye,eAAgB,KAChBO,MAAO,KACPD,OAAQ,KACRlK,SAAU,KACVC,QAAS,KACT4J,KAAM,OAEH1e,GAEf,EA/CA,CAA0B,WAAb,EAAAygB,Q,mcCNb,aAEA,QAGA,SAGA,cAKI,WAAY/P,EAAiBoL,QAAA,IAAAA,OAAA,GAA7B,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAK9H,KAAO8H,EAAI9H,KAChB,EAAKgT,iBAAiB,EAAMlL,EAAK,CAC7BxQ,KAAM,KACNS,MAAO,MACRmb,EAAkB,K,EAmB7B,OAlC2B,OAkBvB,YAAAgB,QAAA,SAAQP,EAAeic,GACnB,OAAOn2B,KAAKga,WAAW,IAAI,EAAA1F,UAAUtU,MAAO,CACxCnC,KAAM,KACNS,MAAO,MACR4b,EAAOic,IAGd,YAAAa,YAAA,WACI,IAAMjkB,EAAI,IAAI,EAAAkgB,UAMd,OALAjzB,KAAK6Z,eAAe7Z,KAAM+S,EAAG,CACzBlV,KAAM,KACNS,MAAO,KACPiI,KAAM,MACP,CAAC,SACGwM,GAEf,EAlCA,CAA2B,WAAd,EAAAkjB,S,scCVb,aAEA,QAIA,SAEA,cAoBI,WAAY5nB,EAAoBoL,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPpL,GAIJ,EAAKkL,iBAAiB,EAAMlL,EAAK,CAC7B9N,MAAO,KACP0xB,UAAW,KACXX,WAAY,KACZY,SAAU,KACVX,SAAU,KACVC,SAAU,KACVC,SAAU,KACVvK,KAAM,KACNC,MAAO,KACPC,WAAY,KACZ1G,QAAS,KACTgR,QAAS,KACTxa,MAAO,KACPya,MAAO,KACPC,IAAK,KACL7c,SAAU,KACV8c,eAAgB,KAChBC,cAAe,MAChBrY,EAAkB,I,EAkD7B,OA/F8B,OAgD1B,YAAAgB,QAAA,SAAQP,EAAeic,GACnB,OAAOn2B,KAAKga,WAAW,IAAI,EAAA8L,aAAa9lB,MAAO,CAC3CO,MAAO,KACP0xB,UAAW,KACXX,WAAY,KACZY,SAAU,KACVX,SAAU,KACVC,SAAU,KACVC,SAAU,KACVvK,KAAM,KACNC,MAAO,KACPC,WAAY,KACZ1G,QAAS,KACTgR,QAAS,KACTxa,MAAO,KACPya,MAAO,KACPC,IAAK,KACL7c,SAAU,KACV8c,eAAgB,KAChBC,cAAe,MAChB5X,EAAOic,IAGd,YAAAY,eAAA,WACI,IAAMj7B,EAAI,IAAI,EAAAk3B,aAqBd,OApBAhzB,KAAK6Z,eAAe7Z,KAAMlE,EAAG,CACzByE,MAAO,KACP0xB,UAAW,KACXX,WAAY,KACZY,SAAU,KACVX,SAAU,KACVC,SAAU,KACVC,SAAU,KACVvK,KAAM,KACNC,MAAO,KACPC,WAAY,KACZ1G,QAAS,KACTgR,QAAS,KACTxa,MAAO,KACPya,MAAO,KACPC,IAAK,KACL7c,SAAU,KACV8c,eAAgB,KAChBC,cAAe,OAEZh2B,GAEf,EA/FA,CAA8B,WAAjB,EAAAuiB,Y,8zDCRb,aAEA,SAEA,SAMA,cAQI,WAAYhQ,EAAiBoL,QAAA,IAAAA,OAAA,GAA7B,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAKqY,qBAAmD,MAA5BrY,EAAIqY,qBAA+B,IAAImC,KAAKxa,EAAIqY,sBAAwB,KACpG,EAAK4L,mBAAqBjkB,EAAIikB,mBAC9B,EAAK/Y,iBAAiB,EAAMlL,EAAK,CAC7B0G,SAAU,KACVC,SAAU,KACVqd,KAAM,MACP5Y,EAAkB,IAEjBpL,EAAI4G,OACJ,EAAKA,KAAO,GACZ5G,EAAI4G,KAAK5H,SAAQ,SAAAqE,GACb,EAAKuD,KAAK3Y,KAAK,IAAI,EAAA07C,SAAStmC,EAAG+H,S,EA0C/C,OAnE2B,OA8BjB,YAAAgB,QAAN,SAAcP,EAAeic,G,oGACZ,SAAMn2B,KAAKga,WAAW,IAAI,EAAAlG,UAAU9T,MAAO,CACpD+U,SAAU,KACVC,SAAU,KACVqd,KAAM,MACPnY,EAAOic,I,UAJJ8hB,EAAO,SAMI,MAAbj4C,KAAKiV,KAAL,YACAgjC,EAAKhjC,KAAO,GACHnZ,EAAI,E,wBAAGA,EAAIkE,KAAKiV,KAAKjZ,OACd,GAAMgE,KAAKiV,KAAKnZ,GAAG2e,QAAQP,EAAOic,IADd,M,OAC1B7kB,EAAM,SACZ2mC,EAAKhjC,KAAK3Y,KAAKgV,G,wBAFmBxV,I,aAM1C,MAAO,CAAP,EAAOm8C,WAGX,YAAArhB,YAAA,WACI,IAAMn5B,EAAI,IAAI,EAAAo1B,UAgBd,OAfAp1B,EAAEipB,qBAAoD,MAA7B1mB,KAAK0mB,qBAA+B1mB,KAAK0mB,qBAAqB+C,cAAgB,KACvGhsB,EAAE60B,mBAAqBtyB,KAAKsyB,mBAC5BtyB,KAAK6Z,eAAe7Z,KAAMvC,EAAG,CACzBsX,SAAU,KACVC,SAAU,KACVqd,KAAM,OAGO,MAAbryB,KAAKiV,MAAgBjV,KAAKiV,KAAKjZ,OAAS,IACxCyB,EAAEwX,KAAO,GACTjV,KAAKiV,KAAK5H,SAAQ,SAAAqE,GACdjU,EAAEwX,KAAK3Y,KAAKoV,EAAEwmC,sBAIfz6C,GAEf,EAnEA,CAJA,MAI2B,SAAd,EAAAuW,S,scCRb,aAEA,SAMA,cAII,WAAY3F,EAAoBoL,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAKa,MAAQb,EAAIa,MACjB,EAAKqK,iBAAiB,EAAMlL,EAAK,CAC7BiD,IAAK,MACNmI,EAAkB,K,EAgB7B,OA7B8B,OAgB1B,YAAAgB,QAAA,SAAQP,EAAeic,GACnB,OAAOn2B,KAAKga,WAAW,IAAI,EAAAxI,aAAaxR,MAAO,CAC3CsR,IAAK,MACN4I,EAAOic,IAGd,YAAA+hB,eAAA,WACI,IAAMxmC,EAAI,IAAI,EAAAymC,aAId,OAHAn4C,KAAK6Z,eAAe7Z,KAAM0R,EAAG,CACzBJ,IAAK,MACN,CAAC,UACGI,GAEf,EA7BA,CAJA,MAI8B,SAAjB,EAAAsmC,Y,wcCRb,aAEA,QAEA,QAGA,cAGI,WAAY3pC,EAAsBoL,QAAA,IAAAA,OAAA,GAAlC,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAK9H,KAAO8H,EAAI9H,M,EAYxB,OArBgC,OAY5B,YAAAkU,QAAA,SAAQP,EAAeic,GACnB,OAAO7b,QAAQC,QAAQ,IAAI,EAAAnF,eAAepV,QAG9C,YAAA62B,iBAAA,WACI,IAAM/3B,EAAI,IAAI,EAAAg0B,eAEd,OADAh0B,EAAEyH,KAAOvG,KAAKuG,KACPzH,GAEf,EArBA,CAAgC,WAAnB,EAAAoW,c,+GCTb,WAQA,Q,OAOA,aAcI,WAAoBkjC,EAAgC93C,GAAhC,KAAA83C,aAAgC,KAAA93C,WAH3C,KAAA+3C,WAAY,EACZ,KAAAC,YAAa,EAyBd,KAAAC,gBAAkB,SAACC,K,OApB3B,YAAAC,aADA,SACa9uB,GACT3pB,KAAKu4C,gBAAgB5uB,EAAGzb,OAAOw+B,QAAU1sC,KAAKq4C,UAAYr4C,KAAKs4C,aAGnE,YAAAI,WAAA,SAAWrqC,GACHA,IAAQrO,KAAKq4C,UACbr4C,KAAKM,SAASq4C,YAAY34C,KAAKo4C,WAAW33C,cAAe,WAAW,GAEpET,KAAKM,SAASq4C,YAAY34C,KAAKo4C,WAAW33C,cAAe,WAAW,IAI5E,YAAAm4C,iBAAA,SAAiBC,GACb74C,KAAKu4C,gBAAkBM,GAG3B,YAAAC,kBAAA,SAAkBD,KAElB,YAAAE,iBAAA,SAAkBC,K,iCAzBTC,GAAuB,qE,iCAAvBA,EAAuB,+F,0CAAvB,sB,sFARE,CACP,CACIC,QAAS,EAAAC,kBACTC,YAAa,EAAAC,YAAW,WAAM,OAAAJ,KAC9BK,OAAO,Q,EANnB,GAUa,EAAAL,2B,+DAAAA,EAAuB,E,KAVnC,EAAAp4C,U,MAAU,CACPC,SAAU,0CACV42B,UAAW,CACP,CACIwhB,QAAS,EAAAC,kBACTC,YAAa,EAAAC,YAAW,uBACxBC,OAAO,S,6DAKNjB,UAAS,E,KAAjB,EAAAr3C,QACQs3C,WAAU,E,KAAlB,EAAAt3C,QAKDy3C,aAAY,E,KADX,EAAA1iC,a,MAAa,SAAU,CAAC,gB,gdC/B7B,WAWA,GALA,MACA,MACA,MACA,KAEA,S,uKCX6sB,2BAAmE,0CAAyB,kGAA6B,sCAAsC,Y,mBAAuB,iBAAK,iC,gCAAvL,mEAA2J,4E,mDAAkC,2BAA2D,0CAAyB,8FAAyB,sCAAyC,Y,mBAAmB,iBAAK,iC,gCAA1K,+DAAkJ,wE,sBAAo6B,2BAAuC,sC,mBAAsF,8CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,qHAA6f,2BAA6K,oI,mBAA2B,iB,+DAA1J,qEAAoC,6F,qBAAuM,sB,mDAA4G,2BAAgE,sI,mBAAuF,sCAAsD,iC,KAAhH,wE,sBAAgN,6BAAuF,2C,gEAA3K,4BAAoF,wDAAuG,kC,kFAAxF,kDAAoC,8D,mDAAh2B,2BAAsG,6CAAqB,6CAA6M,2CAA4C,wHAAgC,6CAAuF,YAAgB,iBAAK,+CAAkN,kCAAO,gDAAiM,kC,+CAA53B,gGAAiG,sDAAyR,0DAAmF,wDAA0J,8CAAsH,+E,yBAA3vB,+CAAg6B,iB,uBAA94B,0C,sBAA65B,6BAA0F,2C,mDAA50C,6BAAmC,4CAAoB,Y,mBAAqB,2BAAoD,6F,mBAA6D,sCAAoD,iCAAK,kCAAM,6CAA2B,uFAA29B,0DAA0G,kCAAM,2C,qDAA3yC,0EAA+F,sFAA2mC,mDAAoC,mE,mDAAsW,2BAA6K,oI,mBAA2B,iB,+DAA1J,qEAAoC,6F,qBAA2M,sB,sBAA4L,6BAA2F,2C,yBAA/K,4BAAoF,wDAA2G,kC,iFAA5F,kDAAwC,8D,mDAA5mB,2BAA4F,6CAA6M,2CAA4C,4HAAoC,6CAAmF,YAAgB,iBAAK,8CAAqM,kC,+CAApoB,kFAA8D,sDAA6R,0DAA+E,wDAAuD,+E,yBAAngB,+CAA4qB,iB,uBAA1pB,0C,sBAAyqB,6BAAkG,2C,yBAA19B,6BAA4E,yCAAI,Y,mBAAwB,iBAAM,2CAA2B,qFAA+uB,0DAAkH,kCAAM,4C,iDAAh6B,qEAAuzB,kDAAwC,uE,yBAA/zE,6BAA8B,0DAAk3C,yDAAggC,2C,6BAAn2E,kDAAk3C,4FDa3hH,kBAUI,WAAYgxB,EAAsCF,EAC9C0S,EAAgChiB,GADpC,MAEI,YAAMwP,EAAmBF,EAAe0S,EAAgBhiB,IAAY,K,OAP9D,EAAAiiB,oBAAsB,IAAI,EAAA3yB,aAEpC,EAAA/H,WAAqB,GACrB,EAAA26B,kBAA4B,K,SAJQ,OAWpC,YAAAC,kBAAA,WACI15C,KAAKw5C,oBAAoB7xB,KAAK3nB,KAAK8e,a,iCAZ9B66B,GAAkB,yJ,iCAAlBA,EAAkB,0gECjB/B,4BAAiC,4CAAiC,Y,mBAAqB,0B,mBAAoJ,qCAA2D,iCAAK,kCAAO,8CAAwB,gDAAoH,mEAAwB,2BAAU,EAAAD,uB,oBAAtJ,iBAA4M,6CAA2B,6CAAuC,4CAAyB,wCAAS,EAAA/O,eAAc,uCAAoC,a,oBAAsB,iBAAK,kCAAM,gDAAiM,gDAAoL,kCAAM,2CAAI,a,oBAAkB,iBAAM,6CAA2B,6CAA6D,4CAAyB,wCAAS,EAAAiP,WAAA,uBAA+B,wCAAuC,a,oBAAuB,iBAAK,kCAAM,6CAA4D,4CAAyB,wCAAS,EAAAA,WAAA,sBAA8B,wCAA6C,a,oBAAsB,iBAAK,kCAAM,6CAAgE,4CAAyB,wCAAS,EAAAA,WAAA,0BAAkC,wCAA2C,a,oBAA0B,iBAAK,kCAAM,6CAAkE,4CAAyB,wCAAS,EAAAA,WAAA,4BAAoC,wCAA+C,a,oBAA4B,iBAAK,kCAAM,kCAAM,+CAAoL,0DAAg6E,kCAAO,kCAAO,kB,MAAx+I,2EAAkI,uFAA2J,8GAA+F,qCAAuH,6EAAuH,4EAA8E,oDAA6L,gDAAqJ,iEAAuD,mGAAiK,6EAAsC,kGAAqK,4EAAqC,sGAA2K,gFAAyC,wGAAmL,kFAAiD,8CAA+L,+C,oNDa3oE,CAIwC,sBAA3B,EAAAD,sB,+DAAAA,EAAkB,E,KAJ9B,EAAA1yC,U,MAAU,CACPnG,SAAU,sBACVoG,YAAa,gC,qHAGHsyC,oBAAmB,E,KAA5B,EAAA9wB,Y,oGEhBL,aACA,SAIA,aA+BI,WAAYra,GACG,MAAPA,IAIJrO,KAAKJ,GAAKyO,EAAIzO,GACdI,KAAKnC,KAAOwQ,EAAIxQ,KAChBmC,KAAK+jB,OAAS1V,EAAI0V,OAClB/jB,KAAKuG,KAAO8H,EAAI9H,KAChBvG,KAAK8kB,QAAUzW,EAAIyW,QACnB9kB,KAAK65C,YAAcxrC,EAAIwrC,YACvB75C,KAAK85C,UAAYzrC,EAAIyrC,UACrB95C,KAAK+5C,aAAe1rC,EAAI0rC,aACxB/5C,KAAKg6C,UAAY3rC,EAAI2rC,UACrBh6C,KAAK6lC,QAAUx3B,EAAIw3B,QACnB7lC,KAAKi6C,OAAS5rC,EAAI4rC,OAClBj6C,KAAKk6C,OAAS7rC,EAAI6rC,OAClBl6C,KAAKm6C,kBAAoB9rC,EAAI8rC,kBAC7Bn6C,KAAKo6C,OAAS/rC,EAAI+rC,OAClBp6C,KAAKq6C,iBAAmBhsC,EAAIgsC,iBAC5Br6C,KAAKs6C,SAAWjsC,EAAIisC,SACpBt6C,KAAKu6C,gBAAkBlsC,EAAIksC,gBAC3Bv6C,KAAKw6C,MAAQnsC,EAAImsC,MACjBx6C,KAAKy6C,eAAiBpsC,EAAIosC,eAC1Bz6C,KAAK06C,aAAersC,EAAIqsC,aACxB16C,KAAK26C,SAAWtsC,EAAIssC,SACpB36C,KAAK46C,WAAavsC,EAAIusC,WACtB56C,KAAK66C,YAAcxsC,EAAIwsC,YACvB76C,KAAK86C,sBAAwBzsC,EAAIysC,sBACjC96C,KAAK4yB,OAASvkB,EAAIukB,OAClB5yB,KAAKo9B,wBAA0B/uB,EAAI+uB,wBACnCp9B,KAAKuwB,WAAaliB,EAAIkiB,WACtBvwB,KAAK+6C,aAAe1sC,EAAI0sC,aACxB/6C,KAAKg7C,eAAiB3sC,EAAI2sC,gBAsElC,OAnEI,sBAAI,wBAAS,C,IAAb,WACI,OAAIh7C,KAAKuG,OAAS,EAAAwxC,qBAAqBkD,OAGhCj7C,KAAK8kB,SAAW9kB,KAAK+jB,SAAW,EAAAqQ,2BAA2B8mB,W,gCAGtE,sBAAI,wBAAS,C,IAAb,WACI,OAAOl7C,KAAKuG,OAAS,EAAAwxC,qBAAqBoD,SAAWn7C,KAAKuG,OAAS,EAAAwxC,qBAAqBkD,OACpFj7C,KAAKuG,OAAS,EAAAwxC,qBAAqBqD,O,gCAG3C,sBAAI,sBAAO,C,IAAX,WACI,OAAOp7C,KAAKuG,OAAS,EAAAwxC,qBAAqBkD,OAASj7C,KAAKuG,OAAS,EAAAwxC,qBAAqBqD,O,gCAG1F,sBAAI,sBAAO,C,IAAX,WACI,OAAOp7C,KAAKuG,OAAS,EAAAwxC,qBAAqBkD,OAASj7C,KAAKg7C,gB,gCAG5D,sBAAI,sCAAuB,C,IAA3B,WACI,OAAOh7C,KAAKq7C,SAAWr7C,KAAK66C,YAAYtnB,sB,gCAG5C,sBAAI,iCAAkB,C,IAAtB,WACI,OAAOvzB,KAAKq7C,SAAWr7C,KAAK66C,YAAYrnB,iB,gCAG5C,sBAAI,oCAAqB,C,IAAzB,WACI,OAAOxzB,KAAKq7C,SAAWr7C,KAAK66C,YAAYpnB,oB,gCAG5C,sBAAI,+BAAgB,C,IAApB,WACI,OAAOzzB,KAAKq7C,SAAWr7C,KAAK66C,YAAYnnB,e,gCAG5C,sBAAI,sCAAuB,C,IAA3B,WACI,OAAO1zB,KAAKq7C,SAAWr7C,KAAK66C,YAAYlnB,sB,gCAG5C,sBAAI,2CAA4B,C,IAAhC,WACI,OAAO3zB,KAAKs7C,WAAat7C,KAAK66C,YAAYjnB,2B,gCAG9C,sBAAI,8BAAe,C,IAAnB,WACI,OAAO5zB,KAAKq7C,SAAWr7C,KAAK66C,YAAY/mB,c,gCAG5C,sBAAI,2BAAY,C,IAAhB,WACI,OAAO9zB,KAAKq7C,SAAWr7C,KAAK66C,YAAY9mB,W,gCAG5C,sBAAI,gCAAiB,C,IAArB,WACI,OAAO/zB,KAAKq7C,SAAWr7C,KAAK66C,YAAY7mB,gB,gCAG5C,sBAAI,6BAAc,C,IAAlB,WACI,OAAOh0B,KAAKq7C,SAAWr7C,KAAK66C,YAAY5mB,a,gCAG5C,sBAAI,qCAAsB,C,IAA1B,WACI,OAAOj0B,KAAKq7C,SAAWr7C,KAAK66C,YAAY3mB,qB,gCAG5C,sBAAI,mCAAoB,C,IAAxB,WACI,OAAOl0B,KAAKu7C,mB,gCAEpB,EAtIA,GAAa,EAAAC,gB,oGCHb,iBAMI,WAAYzoC,GALZ,KAAAnT,GAAa,KACb,KAAAojB,KAAe,KACf,KAAAy4B,SAAmB,KACnB,KAAA7a,SAAmB,KAGV7tB,IAIL/S,KAAKJ,GAAKmT,EAAEnT,GACZI,KAAKgjB,KAAOjQ,EAAEiQ,KACdhjB,KAAKy7C,SAAW1oC,EAAE0oC,UAW1B,OARI,sBAAI,uBAAQ,C,IAAZ,WACI,IACI,GAAiB,MAAbz7C,KAAKgjB,KACL,OAAO1Z,SAAStJ,KAAKgjB,KAAM,MAEjC,UACF,OAAO,G,gCAEf,EAxBA,GAAa,EAAA04B,gB,oGCAb,iBAII,WAAYn9C,GAHZ,KAAAi2B,KAAe,KAINj2B,IAILyB,KAAK27C,OAASp9C,EAAEo9C,QAMxB,OAHI,sBAAI,yBAAU,C,IAAd,WACI,OAAoB,MAAb37C,KAAKw0B,KAAe,WAAa,M,gCAEhD,EAfA,GAAa,EAAAonB,gB,6+CCJb,WAmBA,GAbA,KAEA,KACA,MACA,KACA,KACA,MACA,MACA,KAKA,QAEA,QAEA,Q,8JCvB6B,0BAAuC,qC,mBAAsF,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAwT,6BAAkC,sC,mBAAsH,6CAAsB,Y,mBAAmC,iBAAQ,2C,MAArI,4FAA0F,iF,uEAAvV,yBAAqC,2CAA8D,sCAA2D,YAAW,uCAAyO,iCAAK,kC,uBAA/W,sEAAsH,oDAA0B,gD,yBAAxQ,2BAAgF,6CAA6Z,kC,8BAA3Y,wD,sBAAiZ,wBAAmD,Y,mBAAgC,kB,MAAhC,8E,yBAApkB,6BAA8B,6CAAmf,4CAAwF,2C,8BAAziB,4EAAqd,+E,yBAAtuB,6BAA6B,4CAAoL,uDAAynB,0CAAkG,qCAAoD,Y,oBAA6B,iBAAK,4C,6BAAj+B,8CAA+L,6CAAgwB,oF,sBAAgM,6BAAsC,sC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,sBAA2D,2BAAkK,qCAAoD,Y,mBAA6B,kB,MAA7B,mF,sBAAyC,6BAA+B,sC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,sBAA0E,6BAA+D,wCAAG,Y,mBAAgC,iBAAK,2CAAwF,qCAAoD,Y,oBAA6B,iBAAK,4C,MAAnN,6EAAiL,oF,sBAA4W,6BAAkC,sC,mBAAsH,6CAAsB,Y,mBAAmC,iBAAQ,2C,MAArI,4FAA0F,iF,sBAA2D,6BAA6C,sC,mBAAoG,6CAAsB,Y,mBAAkC,iBAAQ,2C,MAAnI,2FAAyF,gF,mDAAma,2BAA6G,oJAA4C,sCAAmD,Y,mBAAiC,iB,MAAjC,uF,mDAAsC,2BAA4G,oJAA4C,sCAAoD,Y,mBAAmC,iB,MAAnC,yF,mDAAwF,2BAAgF,iIAAwB,sCAA4D,Y,mBAAuB,iB,MAAvB,6E,yBAAmD,sDAAkC,iCAAgB,iB,wCAApC,+C,yBAArR,6BAAgD,6CAAgM,qFAAwF,2C,0DAApR,+CAAkB,e,mDAAtjD,yBAAqC,4CAAgB,+CAAoF,iCAAM,yCAAK,2CAAoD,aAAU,iBAAK,yDAAyO,yDAAiO,kCAAM,8CAAgC,+CAAuC,kD,oBAA+K,wCAAmD,kCAAU,+CAAgD,+CAAkP,+CAAoP,yDAAwV,6CAA2D,4GAAoB,wCAAwD,a,oBAAmB,iBAAK,kCAAO,kCAAO,kCAAM,kC,+CAA17D,2CAAe,YAAf,CAAe,eAAgF,uEAAwC,2CAA8B,+CAAyO,4DAAya,sFAAsJ,0FAAkP,yFAA+P,2DAAgd,2E,yBAAljE,+BAA2F,4CAAQ,+CAAigE,iCAAS,kC,8BAAx/D,wD,yBAAxb,6BAA8B,wDAAqS,iDAAsnE,2C,8BAA54E,8EAAmU,6E,yBAAvpC,6BAA8B,6CAAiC,yCAAK,Y,mBAA2B,kCAA+C,wDAAyM,kCAAS,kCAAM,+CAAwP,kCAAO,yDAAkM,yDAAy8E,4C,gDAA5qG,gFAAkC,4DAAuD,8CAAgT,uFAAuK,8CAAkM,8CDyBx0D,iBAYI,WAAoBrkB,EAAkCta,EAC1Cvd,EAAkCkgB,EAClC8U,EAAwC8C,EACxCzb,EAAsC4M,GAH9B,KAAA4O,cAAkC,KAAAta,uBAC1C,KAAAvd,cAAkC,KAAAkgB,aAClC,KAAA8U,iBAAwC,KAAA8C,cACxC,KAAAzb,gBAAsC,KAAA4M,gBAVzC,KAAAkzB,OAAQ,EAIjB,KAAAhM,QAAkB,E,OAQZ,YAAArvC,SAAN,W,iGACSR,KAAK67C,MAAN,MACA,GAAM77C,KAAKw3B,YAAYO,UAAS,I,OAChC,OADA,SACA,GAAM/3B,KAAKke,Q,OAAX,S,mCAIF,YAAAA,KAAN,W,kGACiB,SAAMle,KAAKu3B,YAAYukB,uB,OAGpB,OAHVC,EAAO,UACR7I,KAAK,EAAAlrC,MAAMwF,gBAAgBxN,KAAKN,YAAa,SAClDM,KAAK0tC,cAAgBqO,EACrB,EAAA/7C,KAAgB,GAAMA,KAAK2oB,cAAc4F,OAAO,EAAAnX,WAAW4kC,gB,cAA3D,EAAKxtB,SAAW,SAChBxuB,KAAK6vC,QAAS,E,YAGlB,YAAAoM,uBAAA,SAAuBC,GACnB,GAAIA,EAAIrC,aAAeqC,EAAI7B,kBAAoB6B,EAAI9e,wBAAyB,CACxE,IAAM7X,EAASvlB,KAAKwuB,SAASzG,MAAK,SAAA9oB,GAAK,OAAAA,EAAEyQ,iBAAmBwsC,EAAIt8C,MAChE,GAAc,MAAV2lB,GAAkBA,EAAOT,QACzB,OAAOo3B,EAAIpB,wBAAyBv1B,EAAO/pB,KAAK2gD,kBAIxD,OAAO,GAGX,YAAAC,mBAAA,SAAmBF,GACf,OAAOA,EAAI7B,kBAAoB6B,EAAIpB,uBAAyB96C,KAAKwuB,SAASgE,MAAK,SAAAvzB,GAAK,OAAAA,EAAEyQ,iBAAmBwsC,EAAIt8C,IAAMX,EAAE6lB,YAGnH,YAAAu3B,UAAN,SAAgBH,G,qGACM,SAAMl8C,KAAKid,qBAAqB0nB,WAC9C,6DAA8DuX,EAAIr+C,KAClEmC,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAOP,O,sBAHAyB,KAAK8rC,cAAgB9rC,KAAK4f,WAAW08B,cAAcJ,EAAIt8C,IAAI0B,MAAK,WAC5D,OAAO,EAAKk2B,YAAYO,UAAS,MAErC,GAAM/3B,KAAK8rC,e,OAEX,OAFA,SACA9rC,KAAK00B,eAAeI,SAAS,UAAW,KAAM,gBAC9C,GAAM90B,KAAKke,Q,cAAX,S,4DAIF,YAAAq+B,MAAN,SAAYL,G,qGACU,SAAMl8C,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAE,iCAAkC29C,EAAIr+C,KACzDmC,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAOP,O,sBAHAyB,KAAK8rC,cAAgB9rC,KAAK4f,WAAW48B,sBAAsBN,EAAIt8C,IAAI0B,MAAK,WACpE,OAAO,EAAKk2B,YAAYO,UAAS,MAErC,GAAM/3B,KAAK8rC,e,OAEX,OAFA,SACA9rC,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,qBACjE,GAAMyB,KAAKke,Q,cAAX,S,4DAIF,YAAAu+B,8BAAN,SAAoCP,G,kHAE5BQ,EAAoB,KACpBC,EAAiB,+BAGhBT,EAAIpB,sBAAL,MAEkB,GAAM96C,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAE,kCAAmC,KACtDyB,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,Y,OACzD,OAHkB,UAQlByB,KAAK8rC,cAAgB9rC,KAAK4f,WAAWg9B,oBAAoBV,EAAIt8C,IACxD0B,MAAK,SAAME,GAAQ,qC,8DAChB,GAAgB,MAAZA,EACA,MAAM,IAAI+F,MAAMvH,KAAKN,YAAYnB,EAAE,8BAMxB,OAHT+uC,EAAY,EAAAtlC,MAAMY,eAAepH,EAAS8rC,WAGjC,GAAMttC,KAAK+b,cAAcg2B,a,OACnB,OADf5b,EAAS,SACM,GAAMn2B,KAAK+b,cAAc8gC,WAAW1mB,EAAOv3B,IAAK0uC,EAAUvjC,S,OAO/E,OAPM+yC,EAAe,SACrBJ,EAAYI,EAAa/iC,gBACzB4iC,EAAiB,8BAGXt3B,EAAU,IAAI,EAAA+rB,gDACZ2L,iBAAmBL,EACpB,CAAP,EAAO18C,KAAK4f,WAAWo9B,2CAA2Cd,EAAIt8C,GAAIs8C,EAAItpB,OAAQvN,cAEzF/jB,MAAK,WACF,OAAO,EAAKk2B,YAAYO,UAAS,M,OAxBrC,I,QA4BE1S,EAAU,IAAI,EAAA+rB,gDACZ2L,iBAAmBL,EAC3B18C,KAAK8rC,cAAgB9rC,KAAK4f,WAAWo9B,2CAA2Cd,EAAIt8C,GAAIs8C,EAAItpB,OAAQvN,GAC/F/jB,MAAK,WACF,OAAO,EAAKk2B,YAAYO,UAAS,M,iBAKzC,O,sBAAA,GAAM/3B,KAAK8rC,e,OAEX,OAFA,SACA9rC,KAAKid,qBAAqBK,UAAU,UAAW,KAAMtd,KAAKN,YAAYnB,EAAEo+C,IACxE,GAAM38C,KAAKke,Q,cAAX,S,6FAlIC++B,GAAsB,yS,iCAAtBA,EAAsB,moEC7BnC,wCAAkhC,wDAAgwG,iB,MAAnwI,6BAAkhC,+C,kNDyBjiC,GAIa,EAAAA,0B,+DAAAA,EAAsB,E,KAJlC,EAAAh2C,U,MAAU,CACPnG,SAAU,oBACVoG,YAAa,oC,6MAGJ20C,MAAK,E,KAAb,EAAA76C,W,qhDE9BL,W,GACA,KAOA,MACA,KACA,M,oCAEA,aAEI,WAAoBoyC,EAAkD7b,EAC1DiB,EAAwBnB,GADhB,KAAA+b,sBAAkD,KAAA7b,cAC1D,KAAAiB,SAAwB,KAAAnB,mB,OAE9B,YAAA6lB,YAAN,SAAkBv2B,EAA+Bw2B,G,0FAC5B,SAAMn9C,KAAKu3B,YAAYyX,mB,OACxC,OADiB,SAMF,GAAMhvC,KAAKozC,oBAAoBgK,aAJ1Cp9C,KAAKq3B,iBAAiBa,KAAK,eACpB,CAAP,GAAO,I,OAIX,OADe,UAEQ,MAAfilB,GACAn9C,KAAKq3B,iBAAiBa,KAAK,YAAa,CAAEjsB,IAAKkxC,EAAYlxC,MAE/DjM,KAAKw4B,OAAOkE,SAAS,CAAC,QAAS,CAAEmS,YAAa,CAAEwO,iBAAiB,KAC1D,CAAP,GAAO,IAGJ,CAAP,GAAO,W,iCApBFC,GAAgB,kH,oCAAhBA,EAAgB,QAAhBA,EAAgB,O,EAD7B,GACa,EAAAA,oB,+DAAAA,EAAgB,E,KAD5B,EAAAj3C,c,2NCZD,SAAYuyB,GACR,mBACA,2BACA,qBACA,+BAJJ,CAAY,EAAAA,cAAA,EAAAA,YAAW,M,qdCAvB,IAEA,cACI,WAAY0U,EAAmBC,G,OAC3B,YAAMD,EAAWC,IAAoB,KAE7C,OAJ6C,OAI7C,EAJA,CAFA,OAE6CC,aAAhC,EAAAlQ,2B,gdCFb,IAEA,cAQI,WAAY97B,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAK6E,IAAM,EAAK7E,oBAAoB,OACpC,EAAKw5B,SAAW,EAAKx5B,oBAAoB,YACzC,EAAKxI,IAAM,EAAKwI,oBAAoB,OACpC,EAAK4b,KAAO,EAAK5b,oBAAoB,QACrC,EAAKq0C,SAAW,EAAKr0C,oBAAoB,Y,EAEjD,OAjBwC,OAiBxC,EAjBA,CAFA,MAEwCQ,cAA3B,EAAA06B,sB,6gBCFb,YACA,SAEA,cAMI,WAAY9gC,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAKsI,eAAiB,EAAKtI,oBAAoB,kBAC/C,EAAKvJ,KAAO,EAAKuJ,oBAAoB,QACrC,EAAK8pB,WAAa,EAAK9pB,oBAAoB,c,EAEnD,OAbwC,OAaxC,EAbA,CAAwC,EAAAQ,cAA3B,EAAA21C,qBAeb,kBAGI,WAAY/7C,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK2vB,SAAW,EAAK/pB,oBAAoB,cAAe,E,EAEhE,OAP+C,OAO/C,EAPA,CAA+Cm2C,GAAlC,EAAAC,4BASb,kBAGI,WAAYh8C,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAi8C,OAAsC,GAIlC,IAAMA,EAAS,EAAKr2C,oBAAoB,U,OAC1B,MAAVq2C,IACA,EAAKA,OAASA,EAAOz3C,KAAI,SAAC03C,GAAW,WAAI,EAAAjQ,0BAA0BiQ,O,EAG/E,OAVoD,OAUpD,EAVA,CAAoDH,GAAvC,EAAAI,kC,6cC3Bb,YACA,SAEA,cAII,WAAYn8C,GAAZ,MACI,YAAMA,IAAS,KAHnB,EAAAo8C,wBAAkD,GAI9C,EAAKC,kBAAoB,EAAKz2C,oBAAoB,qBAClD,IAAMw2C,EAA0B,EAAKx2C,oBAAoB,2B,OAErD,EAAKw2C,wBADsB,MAA3BA,EAC+BA,EAAwB53C,KAAI,SAACpI,GAAW,WAAI,EAAAkgD,qBAAqBlgD,MAEjE,G,EAG3C,OAdqC,OAcrC,EAdA,CAAqC,EAAAgK,cAAxB,EAAAm2C,mB,4cCHb,IAEA,cAKI,WAAYv8C,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAKvJ,KAAO,EAAKuJ,oBAAoB,QACrC,EAAK8e,aAAe,EAAK9e,oBAAoB,gB,EAErD,OAXoC,OAWpC,EAXA,CAFA,MAEoCQ,cAAvB,EAAAo2C,kB,0cCFb,YAIA,SACA,SAEA,cAkBI,WAAYx8C,GAAZ,MACI,YAAMA,IAAS,KACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAK62C,SAAW,EAAK72C,oBAAoB,YACzC,EAAKb,KAAO,EAAKa,oBAAoB,QACrC,EAAKvJ,KAAO,EAAKuJ,oBAAoB,QACrC,EAAKuM,MAAQ,EAAKvM,oBAAoB,SACtC,EAAKxI,IAAM,EAAKwI,oBAAoB,OACpC,EAAK82C,eAAiB,EAAK92C,oBAAoB,kBAC/C,EAAK+2C,YAAc,EAAK/2C,oBAAoB,eAC5C,EAAK8e,aAAe,EAAK9e,oBAAoB,gBAC7C,EAAKg3C,eAAiB,EAAKh3C,oBAAoB,kBAC/C,EAAKi3C,aAAe,EAAKj3C,oBAAoB,gBAC7C,EAAK4N,SAAW,EAAK5N,oBAAoB,YACzC,EAAKs9B,QAAU,EAAKt9B,oBAAoB,cAAe,EACvD,EAAKk3C,UAAY,EAAKl3C,oBAAoB,eAAgB,EAE1D,IAAMotB,EAAO,EAAKptB,oBAAoB,QAC1B,MAARotB,IACA,EAAKA,KAAO,IAAI,EAAA+pB,YAAY/pB,IAGhC,IAAMgqB,EAAO,EAAKp3C,oBAAoB,Q,OAC1B,MAARo3C,IACA,EAAKA,KAAO,IAAI,EAAAC,YAAYD,I,EAGxC,OA7CkC,OA6ClC,EA7CA,CAAkC,EAAA52C,cAArB,EAAA82C,gB,ycCPb,IAEA,cAOI,WAAYljD,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKoE,GAAK,EAAKwH,oBAAoB,MACnC,EAAKw5B,SAAW,EAAKx5B,oBAAoB,YACzC,EAAKxI,IAAM,EAAKwI,oBAAoB,OACpC,EAAK4b,KAAO,EAAK5b,oBAAoB,QACrC,EAAKq0C,SAAW,EAAKr0C,oBAAoB,a,EAEjD,OAlBiC,OAkBjC,EAlBA,CAFA,MAEiCQ,cAApB,EAAA62C,e,ycCFb,IAEA,cAII,WAAYjjD,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAKg5B,KAAO,EAAKptB,oBAAoB,QACrC,EAAKu0C,OAAS,EAAKv0C,oBAAoB,YAAa,G,EAE5D,OAZiC,OAYjC,EAZA,CAFA,MAEiCQ,cAApB,EAAA22C,e,8GCFb,SAAYI,GACR,yBACA,2BACA,6BAHJ,CAAY,EAAAA,yBAAA,EAAAA,uBAAsB,M,+GCAlC,MAGI,SAAYC,GACR5+C,KAAK4+C,IAAa,MAAPA,EAAc,GAAKA,GAJzB,EAAAC,2B,2GCAb,W,mECAie,6BAAoD,sC,mBAAsF,Y,mBAAqB,kB,MAA1E,6EAAqD,2E,yBAAqY,+BAAyD,YAAkB,kB,uCAAlB,iD,yBAAiC,4BAA4C,YAAiB,kB,uCAAjB,wD,yBAAuB,yBAAyB,YAAiB,kB,uCAAjB,wD,yBAAjY,yBAAgC,4CAAgB,+C,uBAA4H,iCAAM,yCAAK,YAAoB,kCAAoF,kCAAM,gDAAmE,gDAAgD,mC,uBAA5V,8DAA6B,qBAA7B,CAA6B,YAA7B,CAA6B,eAA8F,0DAAuD,gDAAgF,4CAA+C,8C,yBAA3gB,+BAA8D,4CAAQ,yCAAK,4CAAgB,Y,mBAAiB,iBAAM,0CAAI,a,oBAAmB,iBAAM,kCAAM,kCAAS,kDAA8Z,mC,6BAAje,8DAA2B,iEAA6D,gDDiB1zB,8BAOI,KAAAt9C,SAAmB,E,wCAHVu9C,I,iCAAAA,EAAmB,k+BCrBhC,4BAAmG,4CAA4E,4CAA4B,4CAA2B,2CAAwC,Y,oBAA+B,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,gDAAsK,mDAAqkB,kCAAO,+CAA2B,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAO,kCAAO,kCAAO,kB,MAArmC,qFAA8F,mFAAyJ,+CAA+K,+CAAuoB,kE,2HDiB3zC,GAIa,EAAAA,uB,+DAAAA,EAAmB,E,KAJ/B,EAAA73C,U,MAAU,CACPnG,SAAU,kBACVoG,YAAa,iC,u/CEnBjB,WAUA,GAJA,KACA,MACA,KAEA,SACA,SAEA,SAEA,Q,iGCf4d,6BAAoD,sC,mBAAsF,Y,mBAAqB,kB,MAA1E,6EAAqD,2E,sBAA4B,qCAA8D,Y,mBAAuC,kB,MAAvC,6F,yBAAsD,qCAAyC,YAAU,kB,6BAAV,sD,yBAA2kB,+BAAoD,YAAa,kB,uCAAb,4C,yBAAxP,yBAAwC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,2CAAK,aAA8B,iBAAM,mC,4CAAzP,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,uE,yBAA8O,+BAAoD,YAAa,kB,uCAAb,4C,yBAAxP,yBAAwC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,2CAAK,a,oBAAiC,iBAAM,mC,uBAA5P,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,wF,yBAA18B,6BAAyC,wCAAI,Y,mBAA8C,2BAAiG,Y,mBAAsB,iBAAK,iCAAK,gDAA6C,8CAAQ,2CAAK,8CAAgB,a,oBAAiB,iBAAM,2CAAI,a,oBAAwB,iBAAM,kCAAM,kCAAS,iDAAmU,kDAAsU,kCAAS,4C,6BAAn9B,mGAA+I,2EAA0G,iEAA2B,uEAAkE,uDAAmU,wD,yBAAmsB,+BAAoD,YAAa,kB,uCAAb,4C,yBAA4B,yBAAmC,YAA0B,kB,4DAA1B,mE,sBAAgC,yBAAoC,Y,mBAAiC,kB,MAAjC,uF,yBAA3X,yBAAwC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,gDAAmE,gDAA2E,mC,4CAA9V,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,yDAAmE,2D,yBAAjhB,6BAAwC,+CAA6C,4CAAQ,yCAAK,4CAAgB,Y,oBAAiB,iBAAM,2CAAI,a,oBAAmB,iBAAM,kCAAM,kCAAS,kDAAwa,kCAAS,4C,6BAApf,+DAA2B,iEAA6D,wD,mDAA8c,gCAA4F,yFAAoB,sC,mBAAsF,2CAAM,Y,mBAAoB,iBAAQ,iC,gCAAjK,mCAA0E,6EAA2D,kEDkB5qF,iBAmBI,WAAsB6U,EAAwC6D,EACpDlgB,GADY,KAAAqc,gBAAwC,KAAA6D,aACpD,KAAAlgB,cATV,KAAAq/C,WAAsC,IAAIv8C,IAC1C,KAAAw8C,aAAoC,IAAIx8C,IACxC,KAAAy8C,SAAgC,IAAIz8C,IAEpC,KAAAjB,SAAmB,EACnB,KAAA29C,MAAgB,E,OAMV,YAAA1+C,SAAN,W,iHAQqB,OAPjBR,KAAKm/C,cAAgBn/C,KAAKo/C,MAAM7wC,QAAO,SAAAmD,GAAK,OAAC,EAAK2tC,WAAW3tC,MAC7D1R,KAAKs/C,cAAgBt/C,KAAKo/C,MAAM7wC,QAAO,SAAAmD,GAAK,SAAK2tC,WAAW3tC,MAExD1R,KAAKs/C,cAActjD,QAAU,IAC7BgE,KAAKk/C,MAAO,GAGC,GAAMl/C,KAAKu/C,iB,OAAtB/9C,EAAW,S,IAEG,EAAAA,EAAShG,K,wBAAT,YAATgkD,EAAK,KACNlS,EAAY,EAAAtlC,MAAMY,eAAe42C,EAAM5gD,KACzB,GAAMoB,KAAK+b,cAAc0jC,eAAeD,EAAM5sB,OAAQ0a,EAAUvjC,UAFvD,M,OAGV,OADb21C,EAAc,YAEhB1/C,KAAK++C,WAAWp7C,IAAI67C,EAAM5/C,GAAI0tC,GAC9BttC,KAAKg/C,aAAar7C,IAAI67C,EAAM5/C,GAAI8/C,EAAYz0C,KAAK,O,wBALrC,I,oBASpBjL,KAAKuB,SAAU,E,YAGb,YAAAqzB,OAAN,W,qHACI50B,KAAKuB,SAAU,E,iBAEC,O,sBAAA,GAAMvB,KAAK2/C,gB,OAAjB/gD,EAAM,SACNghD,EAAyB,G,IACZ,EAAA5/C,KAAKs/C,c,wBAAL,YAARroC,EAAI,KAEM,OADXq2B,EAAYttC,KAAK++C,WAAW7gD,IAAI+Y,EAAKrX,KAEvC,MAEiB,GAAMI,KAAK+b,cAAc8gC,WAAWj+C,EAAIA,IAAK0uC,EAAUvjC,UAL3C,M,OAK3B+yC,EAAe,SACrB8C,EAAgBtjD,KAAK,CACjBsD,GAAIqX,EAAKrX,GACThB,IAAKk+C,EAAa/iC,kB,wBARP,I,aAWF,SAAM/Z,KAAK6/C,mBAAmBD,I,cAA9B,SAERpkD,KAAK6R,SAAQ,SAAAmyC,GAClB,IAAM39C,EAAwB,KAAhB29C,EAAM39C,MAAe29C,EAAM39C,MAAQ,EAAKnC,YAAYnB,EAAE,sBACpE,EAAK0gD,SAASt7C,IAAI67C,EAAM5/C,GAAIiC,MAGhC7B,KAAKk/C,MAAO,E,+BAEZl/C,KAAK6B,MAAQ,EAAEoP,Q,oBAEnBjR,KAAKuB,SAAU,E,YAGT,YAAA89C,WAAV,SAAqBpoC,GACjB,OAAOA,EAAK8M,SAAW,EAAAqQ,2BAA2B0rB,UAGtC,YAAAP,cAAhB,W,gGAEW,OADDl6B,EAAU,IAAI,EAAA06B,4BAA4B//C,KAAKs/C,cAAct5C,KAAI,SAAAiR,GAAQ,OAAAA,EAAKrX,OAC7E,GAAMI,KAAK4f,WAAWogC,+BAA+BhgD,KAAK0P,eAAgB2V,I,OAAjF,MAAO,CAAP,EAAO,kBAGD,YAAAs6B,aAAV,WACI,OAAO3/C,KAAK+b,cAAcE,UAAUjc,KAAK0P,iBAG7B,YAAAmwC,mBAAhB,SAAmCD,G,gGAExB,OADDv6B,EAAU,IAAI,EAAA46B,mCAAmCL,GAChD,GAAM5/C,KAAK4f,WAAWsgC,gCAAgClgD,KAAK0P,eAAgB2V,I,OAAlF,MAAO,CAAP,EAAO,kB,iCArFF86B,GAAoB,4G,iCAApBA,EAAoB,ixCCtBjC,4BAAmG,4CAA4E,4CAA4B,4CAA2B,2CAAwC,Y,oBAA0B,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,gDAAsK,wDAAoH,yDAAkE,4DAAghC,2DAAsnB,kCAAO,+CAA2B,oDAAkP,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAO,kCAAO,kCAAO,kB,MAAzkF,gFAAyF,oFAAyJ,+CAA8J,8DAAmH,4CAAsD,wDAAghC,uDAAmsB,4CAAqQ,mE,8IDkB/xF,GAIa,EAAAA,wB,+DAAAA,EAAoB,E,KAJhC,EAAAl5C,U,MAAU,CACPnG,SAAU,mBACVoG,YAAa,mC,sFAIJwI,eAAgB,CAAF,C,KAAtB,EAAA1O,QACQo+C,MAAO,CAAF,C,KAAb,EAAAp+C,W,mHEzBL,MAGI,SAAY49C,GACR5+C,KAAK4+C,IAAa,MAAPA,EAAc,GAAKA,GAJzB,EAAAmB,+B,0+CCAb,WAOA,GAFA,KACA,KACA,Q,yFCP2d,qCAAsD,Y,mBAAuC,kB,MAAvC,6F,yBAAsD,qCAAyC,YAAU,kB,6BAAV,sD,sBAAsD,qCAAgE,Y,mBAAgC,kB,MAAhC,sF,yBAA2V,+BAAoD,YAAa,kB,uCAAb,4C,yBAAhP,yBAAgC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,mC,uBAAhN,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,4C,yBAA3d,6BAA6B,uDAA+G,+CAA6C,4CAAQ,yCAAK,6CAAgB,a,oBAAiB,iBAAM,kCAAM,kCAAS,iDAAkR,kCAAS,4C,6BAA7d,+DAA4J,+DAA2D,gD,yBAA2nB,+BAAoD,YAAa,kB,uCAAb,4C,yBAA4B,yBAAmC,YAA0B,kB,4DAA1B,mE,sBAAgC,yBAAoC,Y,mBAAiC,kB,MAAjC,uF,yBAAnX,yBAAgC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,gDAAmE,gDAA2E,mC,4CAA9V,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,yDAAmE,2D,yBAA7f,6BAA4B,+CAA6C,4CAAQ,yCAAK,4CAAgB,Y,oBAAiB,iBAAM,2CAAI,a,oBAAmB,iBAAM,kCAAM,kCAAS,kDAAga,kCAAS,4C,6BAA5e,+DAA2B,iEAA6D,gD,mDAAsc,gCAAgH,yFAAoB,sC,mBAAsF,2CAAM,Y,mBAAwB,iBAAQ,iC,gCAArK,mCAA0E,6EAA2D,sEDWphE,iBAeI,WAAsBngC,EAAkClgB,GAAlC,KAAAkgB,aAAkC,KAAAlgB,cANxD,KAAAu/C,SAAgC,IAAIz8C,IAEpC,KAAAjB,SAAmB,EACnB,KAAA29C,MAAgB,E,OAKV,YAAAtqB,OAAN,W,uGACI50B,KAAKuB,SAAU,E,iBAEM,O,sBAAA,GAAMvB,KAAKogD,e,cAAX,SAER5kD,KAAK6R,SAAQ,SAAAmyC,GAClB,IAAM39C,EAAwB,KAAhB29C,EAAM39C,MAAe29C,EAAM39C,MAAQ,EAAKnC,YAAYnB,EAAE,sBACpE,EAAK0gD,SAASt7C,IAAI67C,EAAM5/C,GAAIiC,MAEhC7B,KAAKk/C,MAAO,E,+BAEZl/C,KAAK6B,MAAQ,EAAEoP,Q,oBAGnBjR,KAAKuB,SAAU,E,YAGH,YAAA6+C,YAAhB,W,gGAEW,OADD/6B,EAAU,IAAI,EAAA06B,4BAA4B//C,KAAKo/C,MAAMp5C,KAAI,SAAAiR,GAAQ,OAAAA,EAAKrX,OACrE,GAAMI,KAAK4f,WAAWygC,4BAA4BrgD,KAAK0P,eAAgB2V,I,OAA9E,MAAO,CAAP,EAAO,kB,iCAhCFi7B,GAAmB,uE,iCAAnBA,EAAmB,ipCCfhC,4BAAmG,4CAA4E,4CAA4B,4CAA2B,2CAAwC,Y,oBAAyB,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,wDAA4G,wDAAkE,2DAAuiB,2DAAkmB,kCAAO,+CAA2B,oDAA0Q,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAO,kCAAO,kCAAO,kB,MAAr7D,+EAAwF,oFAAiJ,uDAA2G,4CAAsD,4CAAuiB,2CAA+qB,8DAA6R,mE,8IDW3oE,GAIa,EAAAA,uB,+DAAAA,EAAmB,E,KAJ/B,EAAAr5C,U,MAAU,CACPnG,SAAU,kBACVoG,YAAa,kC,+DAIJwI,eAAgB,CAAF,C,KAAtB,EAAA1O,QACQo+C,MAAO,CAAF,C,KAAb,EAAAp+C,W,8+CElBL,W,GAMA,K,2BAEA,aAQI,WAAoBic,GAAA,KAAAA,uBAFpB,KAAA3K,KAAe,O,OAIT,YAAA9R,SAAN,W,gGAEmB,OADfR,KAAKsS,MAAO,IAAIuW,MAAOE,cAAc/e,WACrC,EAAAhK,KAAe,GAAMA,KAAKid,qBAAqBob,yB,cAA/C,EAAKC,QAAU,SACfl0B,SAASC,KAAKQ,UAAUC,IAAI,mB,YAGhC,YAAAod,YAAA,WACI9d,SAASC,KAAKQ,UAAUgB,OAAO,oB,iCAb1B06C,GAAuB,8C,iCAAvBA,EAAuB,2ICZpC,+BAAgC,4CAAoD,YAAyD,oBAAK,Y,mBAAqC,iBAAO,iB,MAA1G,+FAA8D,4F,mEDQlJ,GAIa,EAAAA,2B,+DAAAA,EAAuB,E,KAJnC,EAAAt5C,U,MAAU,CACPnG,SAAU,sBACVoG,YAAa,sC,miDEVjB,WAWA,GALA,KACA,KAIA,O,0FCX6B,0BAAuC,qC,mBAAsF,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAwS,6BAAkC,sC,mBAAkH,6CAAsB,Y,mBAA+B,iBAAQ,2C,MAA7H,wFAAsF,6E,mEAA3U,yBAAiC,0CAA0D,qCAA2D,YAAW,uCAAiO,iCAAK,kC,uBAAnW,sEAAkH,oDAA0B,gD,yBAAxP,2BAAwE,6CAA6Y,kC,8BAA3X,oD,yBAAxH,6BAA8B,6CAA2d,2C,8BAAzb,qE,yBAAjR,6BAA6B,4CAAoL,uDAAygB,2C,6BAAzrB,8CAA+L,8C,sBAA+qB,0BAAuC,qC,mBAAsF,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAyW,6BAAkC,sC,mBAAkH,6CAAsB,Y,mBAA+B,iBAAQ,2C,MAA7H,wFAAsF,6E,yBAAzX,yBAAiC,4CAAgB,+CAAoF,iCAAM,yCAAK,2CAAgD,aAAU,iBAAK,yDAAiO,kCAAM,mC,uBAAzX,2CAAe,YAAf,CAAe,eAAgF,sEAAoC,2CAA8B,gD,yBAAzT,+BAAmF,4CAAQ,8CAA4b,iCAAS,kC,8BAAnb,oD,yBAA3I,6BAA8B,iDAAyiB,2C,8BAA5f,qE,yBAApa,6BAA8B,4CAA0B,6CAAqC,6CAAiC,yCAAI,Y,oBAAsB,iBAAM,kCAAO,8CAAoL,yDAAulB,kCAAO,8CAA0B,4C,6BAA/0B,oEAAuC,8CAA+L,8CDallC,iBAWI,WAAoBqwB,EAAkC73B,GAAlC,KAAA63B,cAAkC,KAAA73B,cAN7C,KAAAm8C,OAAQ,EAGjB,KAAAhM,QAAkB,E,OAKZ,YAAArvC,SAAN,W,0FAEI,OADA4D,SAASC,KAAKQ,UAAUgB,OAAO,mBAC/B,GAAM7F,KAAKke,Q,cAAX,S,YAGE,YAAAA,KAAN,W,gGACsB,SAAMle,KAAKu3B,YAAYS,mB,cAAnCN,EAAY,UACRwb,KAAK,EAAAlrC,MAAMwF,gBAAgBxN,KAAKN,YAAa,SACvDM,KAAK03B,UAAYA,EACjB13B,KAAK6vC,QAAS,E,6CAlBT2Q,GAAkB,wE,iCAAlBA,EAAkB,iuBCjB/B,uCAA0uB,wDAAi+B,iB,MAA5rD,6BAA0uB,+C,gJDazvB,GAIa,EAAAA,sB,+DAAAA,EAAkB,E,KAJ9B,EAAAv5C,U,MAAU,CACPnG,SAAU,gBACVoG,YAAa,gC,gEAGJ20C,MAAK,E,KAAb,EAAA76C,W,6GElBL,mBAAsB,EAAAy/C,wB,ocCEtB,IAIA,cAOI,WAAYpyC,GAAZ,MACI,cAAO,KACP,OAAW,MAAPA,IAIJ,EAAKzO,GAAKyO,EAAIzO,GACd,EAAK8P,eAAiBrB,EAAIqB,eAC1B,EAAKnJ,KAAO8H,EAAI9H,KAChB,EAAK/K,KAAO6S,EAAI7S,KAChB,EAAKspB,QAAUzW,EAAIyW,S,EAE3B,OAnB4B,OAmB5B,EAnBA,CAJA,MAI4B,SAAf,EAAA47B,U,4+CCNb,WAaA,GALA,KAEA,KACA,KAEA,QACA,SACA,SAGA,Q,yHClBsjB,6BAAmD,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,yBAAwvB,8BAAgE,YAAiB,kB,8BAAjB,qD,sBAAiD,6BAA6C,oCAAK,Y,mBAA2B,2B,MAA3B,iF,sBAAiN,yBAAoC,gBAAM,kB,sBAAqC,4BAAoE,Y,mBAA0B,kB,MAA1B,wE,sBAAgC,4BAAoE,Y,mBAAqB,kB,MAArB,mE,sBAAye,8BAA4F,Y,mBAAoB,kB,MAApB,kE,sBAA4B,8BAA2F,Y,mBAAqB,kB,MAArB,mE,yBAA6B,+BAAiD,YAAU,kB,uCAAV,4C,sBAA8D,6BAAmC,sC,mBAAoF,8CAAsB,Y,mBAA+B,iBAAQ,2C,MAA7H,wFAAsF,6E,yBAAlL,yBAAqC,wDAAoM,kC,uCAArL,iD,sBAAgM,2BAAoD,Y,mBAAkB,kB,MAAlB,gE,sBAA0B,2BAAoD,Y,mBAAkB,kB,MAAlB,gE,sBAA0B,2BAAsD,Y,mBAAoB,kB,MAApB,kE,sBAA4B,2BAAmD,Y,mBAAiB,kB,MAAjB,+D,sBAAyB,2BAAqD,Y,mBAAmB,kB,MAAnB,iE,mDAAiC,4BAAyD,+CAAuB,mHAAvB,iBAAuI,iC,0CAAlF,qFAA9B,wCAA6B,qC,mDAAyF,4BAAyD,+CAAuB,8GAAvB,iBAA6H,iC,0CAA7E,gFAAzB,mCAAwB,qC,mDAAnqD,yBAAqC,4CAAgC,4GAAoB,+CAAuB,0EAAuB,0GAA9C,iBAAkL,iCAAM,4CAAe,4GAAoB,+C,wBAA4G,kCAAM,2CAAK,aAAY,iCAAwH,kDAAwH,mDAAoE,kCAAM,gDAA+O,2CAAK,kDAA8E,kDAA8E,kDAAkF,kDAA4E,kDAAgF,kCAAM,gDAAsM,gDAA4L,kC,+CAA/mD,+EAAxB,kCAAuB,iDAAyL,2DAAqB,gBAArB,CAAqB,YAArB,CAAqB,eAAsF,qDAAiD,oFAAsH,qFAAwH,2CAA4C,4DAAsP,0EAA8E,0EAA8E,4EAAkF,yEAA4E,2EAAwG,4DAAsM,6D,yBAAniE,6BAA4C,+CAAkD,4CAAQ,yCAAK,yCAAI,gBAAM,iBAAM,2CAAI,iBAAM,iBAAM,2CAAI,a,oBAAiB,iBAAM,gDAAgD,2CAAI,a,oBAAqB,iBAAM,gDAAoG,gDAA+F,kCAAM,kCAAS,8CAAQ,kDAA6vD,kCAAS,kCAAS,4C,sDAA/kE,gEAA4B,4DAA+C,mEAAgE,4DAAoG,4DAAmG,0C,uFAAp4C,6BAAuH,6CAAqB,6CAAmB,+CAAoC,Y,mBAAmB,iBAAS,gDAA0H,sG,oBAA1H,iBAAoJ,kCAAO,+CAAkD,kDAA4F,6FAAwB,MAAS,a,oBAAiB,iBAAU,kDAA2F,6FAAwB,MAAQ,a,oBAAsB,iCAAyF,kCAAU,kCAAO,kCAAO,0DAA6F,4DAA8uE,kC,yCAA98F,iEAAkG,oFAAoD,qCAA2I,+EAAqE,wEAAmF,8EAAmE,6EAAiE,oDAAqF,8CAA6F,8C,qDDoBrrD,aAsBI,WAAoB9gC,EAAgClgB,EACxCg1B,GADQ,KAAA9U,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBAdF,KAAAisB,cAAgB,IAAI,EAAA95B,aAE9B,KAAA+5B,qBAAuB,EAAA7I,qBACvB,KAAA8I,2BAA6B,EAAAzsB,2BAE7B,KAAA0sB,cAAe,EACf,KAAAv/C,SAAU,EAEV,KAAAw/C,cAAgB,EAGR,KAAAC,SAAkD,G,OAKpD,YAAAxgD,SAAN,W,0FACI,SAAMR,KAAKihD,a,cAAX,SACAjhD,KAAKuB,SAAU,E,YAGnB,sBAAI,oBAAK,C,IAAT,WACI,OAAIvB,KAAK8gD,aACE9gD,KAAKghD,SAASzyC,QAAO,SAAAmD,GAAK,OAACA,EAAUg7B,WAErC1sC,KAAKghD,U,gCAId,YAAAC,UAAN,W,yGACkB,SAAMjhD,KAAK4f,WAAWqwB,qBAAqBjwC,KAAK0P,iB,cAAxD0vC,EAAQ,SACdp/C,KAAKghD,SAAW5B,EAAM5jD,KAAKwK,KAAI,SAAA7H,GAAK,OAAAA,KAAG+0C,KAAK,EAAAlrC,MAAMwF,gBAAgBxN,KAAKN,YAAa,UAChE,UAAhBM,KAAKuwC,OAAL,MACiB,GAAMvwC,KAAK4f,WAAWshC,cAAclhD,KAAK0P,eAAgB1P,KAAKywC,W,cAC/D,OADVjvC,EAAW,WACO49C,EAAM5jD,KAAKQ,OAAS,GACxCwF,EAAS6L,SAAQ,SAAAjQ,GACb,IAAM6Z,EAAOmoC,EAAM5jD,KAAK+S,QAAO,SAAAmD,GAAK,OAAAA,EAAE9R,KAAOxC,KACjC,MAAR6Z,GAAgBA,EAAKjb,OAAS,IAC7Bib,EAAK,GAAWy1B,SAAU,M,mBAIhB,eAAhB1sC,KAAKuwC,OAAL,MACU,GAAMvwC,KAAK4f,WAAWuhC,mBAAmBnhD,KAAK0P,eAAgB1P,KAAKywC,W,OACpE,OADVjvC,EAAW,WACO49C,EAAM5jD,KAAKQ,OAAS,GACxCwF,EAAS6L,SAAQ,SAAAjQ,GACb,IAAM6Z,EAAOmoC,EAAM5jD,KAAK+S,QAAO,SAAAmD,GAAK,OAACA,EAAE0vC,WAAa1vC,EAAE9R,KAAOxC,EAAEwC,MACnD,MAARqX,GAAgBA,EAAKjb,OAAS,IAC7Bib,EAAK,GAAWy1B,SAAU,EAC1Bz1B,EAAK,GAAWka,SAAW/zB,EAAE+zB,SAC7Bla,EAAK,GAAWma,cAAgBh0B,EAAEg0B,kB,wBAMnDpxB,KAAKghD,SAAS3zC,SAAQ,SAAAqE,GACE,eAAhB,EAAK6+B,QAA2B7+B,EAAE0vC,YACjC1vC,EAAUg7B,SAAU,GAEpBh7B,EAAUg7B,SACX,EAAKqU,mB,YAKjB,YAAAM,MAAA,SAAM3vC,GACkB,eAAhB1R,KAAKuwC,QAA2B7+B,EAAE0vC,YAGrC1vC,EAAUg7B,SAAYh7B,EAAUg7B,QACjC1sC,KAAKshD,gBAAgB5vC,KAGzB,YAAA4vC,gBAAA,SAAgB5vC,GACPA,EAAUg7B,QACX1sC,KAAK+gD,iBAEe,eAAhB/gD,KAAKuwC,SACJ7+B,EAAUyf,UAAW,EACrBzf,EAAU0f,eAAgB,GAE/BpxB,KAAK+gD,kBAIb,YAAAQ,eAAA,SAAeT,GACX9gD,KAAK8gD,aAAeA,GAGlB,YAAAlsB,OAAN,W,gGAUQ,O,sBARoB,UAAhB50B,KAAKuwC,QACCiR,EAAaxhD,KAAKo/C,MAAM7wC,QAAO,SAAAmD,GAAK,OAACA,EAAUg7B,WAAS1mC,KAAI,SAAA0L,GAAK,OAAAA,EAAE9R,MACzEI,KAAKi1B,YAAcj1B,KAAK4f,WAAW6hC,cAAczhD,KAAK0P,eAAgB1P,KAAKywC,SAAU+Q,KAE/EA,EAAaxhD,KAAKo/C,MAAM7wC,QAAO,SAAAmD,GAAK,OAACA,EAAUg7B,UAAYh7B,EAAE0vC,aAC9Dp7C,KAAI,SAAA0L,GAAK,WAAI,EAAAomC,yBAAyBpmC,EAAE9R,KAAO8R,EAAUyf,WAAazf,EAAU0f,kBACrFpxB,KAAKi1B,YAAcj1B,KAAK4f,WAAW8hC,mBAAmB1hD,KAAK0P,eAAgB1P,KAAKywC,SAAU+Q,IAE9F,GAAMxhD,KAAKi1B,a,cAAX,SACAj1B,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,iBACjEyB,KAAK2gD,cAAch5B,O,6FA3GlBg6B,GAAoB,6G,iCAApBA,EAAoB,skE,GAAA,MCxBjC,4BAAyG,4CAA4E,+CAAkC,2CAAY,EAAA/sB,YAAyD,4CAA2B,2CAA8C,a,oBAAwB,6BAAO,aAAc,iBAAS,kCAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,gDAA6M,kD,sBAAwpG,8CAA2B,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAiB,iBAAQ,kCAAU,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAQ,kCAAO,kCAAO,kB,4BAAliI,0DAAwH,+EAA+B,iDAAsF,oFAAqH,wDAA6M,2HAAmtG,kDAA4D,+EAA2D,gEAAgH,mE,6SDoBttI,GAIa,EAAA+sB,wB,+DAAAA,EAAoB,E,KAJhC,EAAA16C,U,MAAU,CACPnG,SAAU,mBACVoG,YAAa,mC,uFAGJqpC,OAAQ,CAAF,C,KAAd,EAAAvvC,QACQyvC,SAAU,CAAF,C,KAAhB,EAAAzvC,QACQ4gD,WAAY,CAAF,C,KAAlB,EAAA5gD,QACQ0O,eAAgB,CAAF,C,KAAtB,EAAA1O,QACS2/C,cAAa,E,KAAtB,EAAAj4B,Y,s+CE7BL,WAOA,GALA,KAEA,MACA,KAEA,O,8ICPikB,6BAAqC,+CAA4B,Y,mBAAuB,iBAAS,+CAA0F,0GAA1F,iBAA+J,0C,gCAA/L,oEAA0H,yD,yBAAqF,qCAAiD,Y,mBAAwB,kB,6BAAxB,wE,yBAAuC,qC,mBAA0G,2CAAiB,6CAAQ,yBAAU,iBAAS,oBAAK,2CAAM,aAAY,iBAAQ,kCAAK,6CAAiB,+CAAQ,8BAAc,iBAAS,qBAAK,6CAAM,aAAgB,iBAAQ,kCAAK,6CAAiB,+CAAQ,sBAAM,iBAAS,qBAAK,6CAAM,aAAS,iBAAQ,kCAAK,6CAAiB,+CAAQ,2BAAW,iBAAS,qBAAK,6CAAM,aAAa,iBAAQ,kCAAK,mC,6BAApZ,8EAAwI,gDAAoF,oDAAgF,6CAA8E,kD,yBAA2E,gCAA0G,sC,mBAAsF,2CAAM,Y,mBAAuD,iBAAQ,kC,gDAA5M,mCAAkF,6EAA2D,iGDW7kD,iBAoBI,WAAoBhpB,EAAkCg1B,EAC1C3Y,GADQ,KAAArc,cAAkC,KAAAg1B,iBAC1C,KAAA3Y,gB,OAEN,YAAA6Y,OAAN,W,oGACI,OAA2B,MAAvB50B,KAAK60B,gBAAkD,KAAxB70B,KAAK60B,gBACpC70B,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,uBACvB,MAGE8mB,EAAU,IAAI,EAAAzK,4BACpB,EAAAyK,EAA6B,GAAMrlB,KAAK+b,cAAcgZ,aAAa/0B,KAAK60B,eAAgB,Q,OAAxF,EAAQG,mBAAqB,S,iBAGR,O,sBADjBh1B,KAAKi1B,YAAcj1B,KAAK6hD,QAAQ7hD,KAAKywC,SAAUprB,GAC9B,GAAMrlB,KAAKi1B,a,cAAtBzzB,EAAW,SACjBxB,KAAK4jB,aAAepiB,EAASsgD,OAC7B9hD,KAAKk0C,SAAcl0C,KAAK+hD,QAAO,IAAI/hD,KAAKywC,S,6FAhCvCuR,GAAe,gH,iCAAfA,EAAe,woCCf5B,4BAAqG,4CAAmE,+CAAkC,2CAAY,EAAAptB,YAAyD,4CAA2B,2CAAyC,a,oBAAsB,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,0CAAG,a,oBAA4B,iBAAK,yDAAgR,yDAAwF,0DAA4b,kCAAO,+CAA2B,oDAA+Q,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAQ,kCAAO,kCAAO,kB,MAA5jD,0DAAmH,sEAAqF,oFAAwH,8EAAgD,oDAA8R,mDAAgJ,mDAA6d,oDAAwQ,mE,6QDWnuD,GAIa,EAAAotB,mB,+DAAAA,EAAe,E,KAJ3B,EAAA/6C,U,MAAU,CACPnG,SAAU,cACVoG,YAAa,8B,0kDEbjB,WAYA,GARA,KAEA,KAEA,KACA,MACA,KAEA,O,kGAEA,aAUI,WAAoB0Y,EAAgClgB,EACxCg1B,EAAwC3Y,EACxCyc,GAFQ,KAAA5Y,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBAAwC,KAAA3Y,gBACxC,KAAAyc,SAPH,KAAA9oB,eAA0B,K,OAS7B,YAAAklB,OAAN,W,kGACI,OAA2B,MAAvB50B,KAAK60B,gBAAkD,KAAxB70B,KAAK60B,gBACpC70B,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,uBACvB,MAGE8mB,EAAU,IAAI,EAAAzK,4BACpB,EAAAyK,EAA6B,GAAMrlB,KAAK+b,cAAcgZ,aAAa/0B,KAAK60B,eAAgB,Q,OAAxF,EAAQG,mBAAqB,S,iBAGzB,O,sBADAh1B,KAAKi1B,YAAcj1B,KAAK4f,WAAWqiC,iBAAiB58B,EAASrlB,KAAK0P,gBAClE,GAAM1P,KAAKi1B,a,cAAX,SACAj1B,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,gBACtC,MAAvByB,KAAK0P,eACL1P,KAAKw4B,OAAOkE,SAAS,CAAC,gBAAiB18B,KAAK0P,eAAgB,UAE5D1P,KAAKw4B,OAAOkE,SAAS,CAAC,U,6FA1BzBwlB,GAAmB,gL,iCAAnBA,EAAmB,+8B,GAAA,MClBhC,4BAAyG,4CAAmE,+CAAkC,2CAAY,EAAAttB,YAAyD,4CAA2B,2CAA6C,a,oBAAuB,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,0CAAG,a,oBAAoE,iBAAK,sDAA4B,a,oBAA8B,iBAAe,iDAA4B,a,oBAAuB,iBAAS,iDAA0F,uEAA1F,iBAA+J,kCAAO,+CAA2B,kDAAmF,wC,oBAAsF,6CAAM,a,oBAAuB,iBAAQ,kCAAU,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAQ,kCAAO,kCAAO,kB,4BAAljC,0DAAuH,sEAAsF,oFAAwH,gHAAqG,6EAAyE,sEAA0H,wDAA+J,kDAA4D,+EAA2D,sEAAsH,mE,sQDc7tC,GAIa,EAAAstB,uB,+DAAAA,EAAmB,E,KAJ/B,EAAAj7C,U,MAAU,CACPnG,SAAU,kBACVoG,YAAa,kC,8HAGJwI,eAAc,E,KAAtB,EAAA1O,W,2+CEnBL,WAaA,GARA,KAIA,KACA,KACA,KAEA,QACA,UACA,U,yLCfiE,+BAAQ,uFAA0G,qCAAwF,Y,mBAAqB,iB,gCAAnI,mCAAqD,wEAAyD,2E,sBAAsC,6BAA+C,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,mDAAuQ,gCAAwD,6FAA8C,Y,mBAAuB,iB,MAAvB,6E,mDAAiC,wCAAkD,gGAA0B,KAA1B,CAAgC,sFAA8B,MAA+B,iC,iCAA/H,iD,sBAA2M,wBAA0B,Y,mBAA4B,kB,MAA5B,0E,mDAAsE,qC,mBAAoK,wCAAG,Y,sCAA+E,iBAAK,iDAAsC,iGAA+E,iDAA2C,a,oBAAyB,iBAAS,+CAA+B,+CAAkC,+CAA8B,mBAAG,iBAAO,kCAAO,iDAA6F,0GAA7F,iBAA6J,kCAAO,iDAA2C,a,oBAAyB,iBAAS,+CAA+B,+CAAkC,+CAA8B,mBAAG,iBAAO,kCAAO,iDAA6F,0GAA7F,iBAA6J,kCAAO,kDAAkG,wC,oBAAsF,6CAAM,a,oBAA8B,iBAAQ,kCAAU,kCAAQ,kC,oDAA5wC,yEAA2I,iJAAoJ,gEAAgG,sEAA+O,wDAAkH,sEAA+O,wDAAwI,kDAAkE,+EAA2D,8E,sBAKxyE,2BAAiC,Y,mBAA0B,kB,MAA1B,wE,4LALk/B,6BAAqC,yDAAuzC,wCAAI,sCAKn3E,+CAAmE,YAA8B,iBAAK,4C,8BALshC,8HAA2wC,qXAKh4E,yDAA4D,0E,mDAAmD,gCAAwD,iGAAsD,Y,mBAAwE,iB,iCAAxE,0H,mDAAkF,4CAAwH,iGAA2B,KAA3B,CAAiC,oFAA4B,MAAmC,iC,iCAApM,4EAAiE,oC,sBAA8M,wBAAyC,Y,mBAAuB,kB,MAAvB,qE,sBAAugB,2BAAsB,sCAA4D,Y,mBAAkB,kB,MAAlB,wE,sBAA0B,2BAAuB,sCAAuE,Y,mBAAoB,kB,MAApB,0E,yBAA9mB,yBAAgC,yCAAI,Y,mBAA8B,iBAAM,yCAAK,2C,mBAAgH,wCAAmD,iBAAK,6C,oBAAqF,a,oBAAqC,iBAAK,kCAAM,2CAAI,a,wBAA2B,iBAAM,2CAAK,iDAA4G,iDAA0H,kCAAM,mC,uBAA5mB,2EAA4C,wEAAgE,8EAAwG,qEAAgD,oEAAkC,0FAAoD,sEAA6C,2CAA4G,6C,yBAA9lB,+BAA+D,4CAAQ,gDAAspB,iCAAS,kC,8BAA7oB,mD,sBAA+sB,wBAAiD,Y,mBAA2B,kB,MAA3B,yE,sBAAuM,2BAAsF,Y,mBAAwB,kB,MAAxB,8E,sBAAgC,2BAAgD,Y,mBAAuB,kB,MAAvB,qE,qJAA0C,sB,4DAAmE,+S,oEAA3W,yBAAoC,yCAAI,Y,mBAAqC,iBAAM,yCAAK,+CAAsH,gDAA+E,kCAAM,2CAAK,+CAMt9D,aAAc,iBAAM,8C,oBAA+F,a,wBAA2B,iBAAM,mC,4CANkkD,kFAAuD,yGAAsH,sEAAwG,wDAM3+D,uDAAgE,8FAAxC,2DAA2F,+E,yBAN4+C,+BAAuE,4CAAQ,gDAMphD,iCAAS,kC,8BAN6hD,uD,yBAL7tC,6BAA+B,yCAAI,Y,mBAAiE,iBAAM,0CAAmB,6BAAQ,Y,uBAAkC,iBAAS,iBAAK,0CAAG,a,oBAA8B,iBAAK,mDAAuI,2DAAiK,8CAA0B,a,oBAA0B,iBAAM,8CAA2D,2DAK75B,mDAAgM,gEAA8O,8CAA0B,a,oBAAqB,iBAAM,8CAAqE,mDAA+uB,8CAA0B,a,oBAAyB,iBAAM,8CAAiF,mDAMn7C,iDAA0B,a,oBAA6C,iBAAS,4C,6BAX0Q,2GAAkG,8EAAmD,6EAAkH,qDAAiL,oDAAkE,yEAAoC,qDAAsE,oDAKz1B,yDAA2S,wDAA0E,oEAA+B,oEAA4F,kEAA8uB,wEAAmC,4EAAwG,0EAMp7C,kGDMtO,iBAkBI,WAAsB4e,EAAkClgB,EAC1Cg1B,EAA0CzX,GADlC,KAAA2C,aAAkC,KAAAlgB,cAC1C,KAAAg1B,iBAA0C,KAAAzX,uBAdxD,KAAA1b,SAAU,EACV,KAAA4gD,aAAc,EACd,KAAAC,mBAAoB,EACpB,KAAAC,eAAgB,EAEhB,KAAA1hC,kBAAoB,EAAAX,kBACpB,KAAAsiC,gBAAkB,EAAAC,gB,OAUZ,YAAA/hD,SAAN,W,0FACI,SAAMR,KAAKke,Q,cAAX,SACAle,KAAKmiD,aAAc,E,YAGjB,YAAAjkC,KAAN,W,kGACI,OAAIle,KAAKuB,QACL,KAEJvB,KAAKuB,SAAU,EACY,MAAvBvB,KAAK0P,eAAL,OACA,EAAA1P,KAAe,GAAMA,KAAK4f,WAAW4iC,uBAAuBxiD,KAAK0P,mB,cAAjE,EAAK+yC,QAAU,S,aAEA,OAAf,EAAAziD,KAAe,GAAMA,KAAK4f,WAAW8iC,kB,OAArC,EAAKD,QAAU,S,wBAEnBziD,KAAKuB,SAAU,E,YAGb,YAAAohD,WAAN,W,gGACI,GAAI3iD,KAAKuB,QACL,U,iBAQA,O,uBAJM8jB,EAAU,IAAI,EAAAu9B,mBACZC,QAAU7iD,KAAK8iD,cACvBz9B,EAAQ09B,QAAU/iD,KAAKgjD,cACvBhjD,KAAKijD,kBAAoBjjD,KAAK4f,WAAWsjC,2BAA2BljD,KAAK0P,eAAgB2V,GACzF,GAAMrlB,KAAKijD,mB,cAAX,SACAjjD,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,wBACjEyB,KAAKke,O,4DAIb,YAAAilC,UAAA,WACQnjD,KAAKojD,mBACLpjD,KAAKid,qBAAqB0nB,WAAW3kC,KAAKN,YAAYnB,EAAE,8BACpDyB,KAAKN,YAAYnB,EAAE,aAAc,KAAM,KAAM,WAGrDyB,KAAKqiD,eAAgB,GAGzB,YAAAgB,eAAA,SAAenlC,GACXle,KAAKqiD,eAAgB,EACjBnkC,GACAle,KAAKke,QAIb,YAAAolC,cAAA,WACQtjD,KAAKojD,mBACLpjD,KAAKid,qBAAqB0nB,WAAW3kC,KAAKN,YAAYnB,EAAE,8BACpDyB,KAAKN,YAAYnB,EAAE,uBAAwB,KAAM,KAAM,WAG/DyB,KAAKoiD,mBAAoB,GAG7B,YAAAmB,aAAA,SAAarlC,GACTle,KAAKoiD,mBAAoB,EACrBlkC,GACAle,KAAKke,QAIb,sBAAI,8BAAe,C,IAAnB,WACI,OAAuB,MAAhBle,KAAKyiD,SAAmBziD,KAAKyiD,QAAQe,SAAW,G,gCAG3D,sBAAI,8BAAe,C,IAAnB,WACI,OAAO93C,KAAKslB,IAAoB,MAAhBhxB,KAAKyiD,QAAkBziD,KAAKyiD,QAAQe,QAAU,I,gCAGlE,sBAAI,4BAAa,C,IAAjB,WACI,OAAuB,MAAhBxjD,KAAKyiD,QAAkBziD,KAAKyiD,QAAQgB,cAAgB,M,gCAG/D,sBAAI,iCAAkB,C,IAAtB,WACI,OAA6B,MAAtBzjD,KAAKyjD,gBACPzjD,KAAKyjD,cAAcl9C,OAAS,EAAAyZ,kBAAkB0jC,YAC3C1jD,KAAKyjD,cAAcl9C,OAAS,EAAAyZ,kBAAkB2jC,c,gCAG1D,sBAAI,uBAAQ,C,IAAZ,WACI,OAAuB,MAAhB3jD,KAAKyiD,QAAkBziD,KAAKyiD,QAAQmB,SAAW,M,gCAG1D,sBAAI,2BAAY,C,IAAhB,WACI,OAAuB,MAAhB5jD,KAAKyiD,QAAkBziD,KAAKyiD,QAAQoB,aAAe,M,iEA1GrDC,GAAoB,yJ,iCAApBA,EAAoB,6lECrBjC,4BAAiC,yCAAK,Y,mBAAqB,iBAAM,iDAAyO,iCAAO,uDAAkN,2DAWvN,kB,MAXtQ,0EAAoG,kDAAsL,8DAAkN,gD,iVDiBlhB,GAIa,EAAAA,wB,+DAAAA,EAAoB,E,KAJhC,EAAA78C,U,MAAU,CACPnG,SAAU,mBACVoG,YAAa,mC,omDEnBjB,WAcA,GAJA,KACA,KACA,KAEA,QAEA,UAEA,S,wIClB0T,6BAA+C,6CAA2C,+CAAwH,kGAAxH,iBAA8I,+CAA4D,sCAAsD,sBAAM,iBAAS,kCAAO,+CAA2C,iDAAyH,kGAAzH,iBAA+I,iDAA6D,wCAAuD,wBAAO,iBAAS,kCAAO,kC,gCAAtgB,gEAAkC,oBAAgS,iEAAkC,qBDoB70B,iBA2BI,WAAoBqwB,EAAkC3X,EAC1C3C,GADQ,KAAAsa,cAAkC,KAAA3X,aAC1C,KAAA3C,uBAtBH,KAAA6C,aAAc,EACd,KAAAC,OAAS,EAAAC,kBAAkB8B,OAE1B,KAAAiiC,QAAU,IAAI,EAAAl9B,aACd,KAAAoS,WAAa,IAAI,EAAApS,aAI3B,KAAAlG,kBAAoB,EAAAX,kBACpB,KAAAgkC,mBAAqB,EAAAxiC,aAAaoB,OAAOqhC,uBACzC,KAAAC,mBAAqB,EAAA1iC,aAAaoB,OAAOuhC,qBAEzC,KAAAC,WAAY,EAW2BnnC,EAAqBsE,UACpDvhB,KAAKgkD,mBAAqB,EAAAxiC,aAAaoB,OAAOyhC,oBAC9CrkD,KAAKkkD,mBAAqB,EAAA1iC,aAAaoB,OAAO0hC,mB,OAIhD,YAAA9jD,SAAN,W,2GAC+B,MAAvBR,KAAK0P,eAAL,OACyB,MAArB1P,KAAKukD,eACLvkD,KAAKukD,aAAe,SAExBvkD,KAAKwkD,oBAAsB,mBAAqBxkD,KAAK0P,eACzC,GAAM1P,KAAKu3B,YAAY4F,gBAAgBn9B,KAAK0P,kB,cAC7C,OADLwsC,EAAM,YAERl8C,KAAKykD,QAAUvI,EAAIr+C,KACnBmC,KAAKnC,KAAOq+C,EAAIr+C,M,aAMN,OAHW,MAArBmC,KAAKukD,eACLvkD,KAAKukD,aAAe,SAExB,EAAAvkD,KAAc,GAAMA,KAAKu3B,YAAY+f,a,OACtB,OADf,EAAK1kB,OAAS,SACd,EAAA5yB,KAAe,GAAMA,KAAKu3B,YAAYM,Y,OAAtC,EAAK4sB,QAAU,SACfzkD,KAAKkX,MAAQlX,KAAKykD,QAClBzkD,KAAKwkD,oBAAsB,WAAaxkD,KAAK4yB,O,wBAEjD5yB,KAAKwkD,qBAAuB,oBAC5BxkD,KAAK0kD,UAAYvlD,OAAOwlD,SAASp1C,K,YAG/B,YAAAqlB,OAAN,W,kGACI,GAAyB,MAArB50B,KAAKukD,cAA8C,KAAtBvkD,KAAKukD,aAClC,UAGJ,GAAIvkD,KAAK+f,SAAW,EAAAC,kBAAkB8B,OAGlC,OAFA9hB,KAAK4kD,gBAAgBnkD,cAAcm0B,SACnC50B,KAAKokD,WAAY,EACjB,I,GAEApkD,KAAK+f,SAAW,EAAAC,kBAAkB6kC,OAAlC,Y,iBAW8B,O,uBATpBC,EAAM,IAAI,EAAAC,sBACZ7tC,MAAQlX,KAAKkX,MACjB4tC,EAAIjnD,KAAOmC,KAAKnC,KAChBinD,EAAIE,QAAS,EACbF,EAAIG,OAASjlD,KAAKklD,mBAClBJ,EAAIp1C,eAAiB1P,KAAK0P,eAC1Bo1C,EAAIlyB,OAAS5yB,KAAK4yB,OAClBkyB,EAAIJ,UAAY1kD,KAAK0kD,UACrB1kD,KAAKi1B,YAAcj1B,KAAK4f,WAAWulC,kBAAkBL,GAC3B,GAAM9kD,KAAKi1B,a,cAA/BmwB,EAAoB,SAC1BplD,KAAKid,qBAAqByV,UAAU0yB,G,0CAExC,U,OAEJ,IACIplD,KAAK+jD,QAAQp8B,OACf,U,kBAGN,YAAAiU,OAAA,WACI57B,KAAKi5B,WAAWtR,QAGpB,YAAA09B,aAAA,WACI,IACI,GAAyB,MAArBrlD,KAAKukD,cAA8C,KAAtBvkD,KAAKukD,aAAqB,CACvD,IAAMe,EAAc55C,KAAKslB,IAAIu0B,WAAWvlD,KAAKukD,eAC7C,GAAIe,EAAc,EAGd,YAFAtlD,KAAKukD,aAAegB,YAAY75C,KAAK69B,MAAoB,IAAd+b,GAAqB,KAAKt7C,YAChEw7C,QAAQ,GAAGx7C,aAI1B,UACFhK,KAAKukD,aAAe,IAGxB,sBAAI,iCAAkB,C,IAAtB,WACI,GAAyB,MAArBvkD,KAAKukD,cAA8C,KAAtBvkD,KAAKukD,aAClC,IACI,OAAOgB,WAAWvlD,KAAKukD,cACzB,UAEN,OAAO,M,iEA9GFkB,GAAkB,mH,iCAAlBA,EAAkB,uD,GAAA,K,kBAQQ,EAAAC,Y,m1EChCvC,+BAAyB,2CAAY,EAAA9wB,YAAyD,4CAAwB,+CAAuE,wCAAS,EAAAgH,Y,mBAAU,6BAAyB,gBAAO,iBAAO,iBAAU,4CAA6B,a,oBAAsB,iBAAM,iDAA4rB,8CAAyB,8CAAkB,8CAAoB,iDAA0B,a,oBAAmB,iBAAS,+CAA0B,+CAAiC,+BAA+B,oBAAI,iBAAO,iBAAO,iDAA8E,qEAA0B,0BAAS,EAAAypB,kBAAjH,iBAA2I,kCAAO,kCAAO,kCAAO,iDAAoC,a,oBAA0B,iBAAS,kCAAO,kDAAiG,wC,oBAAsF,6CAAM,a,oBAAmB,iBAAQ,kCAAU,kDAAwD,wCAAS,EAAAzpB,YAAW,a,oBAAoB,iBAAU,kCAAO,kCAAQ,mDAAiF,4CAAiD,4CAAqE,4CAA6D,4CAA+C,4CAAmD,4CAA0C,4CAA0D,4CAAiE,4CAAuD,4CAA8F,4CAAgF,4CAA6D,4CAAoE,4CAAwE,4CAA6D,kCAAQ,kB,4BAA/uF,2CAA2G,oFAAoI,qEAAuD,kDAA0vB,kEAAsN,sDAAsH,yEAAmG,+DAAyE,+EAA2D,kEAAiH,2EAAiE,sFAAmJ,qEAA4Q,6DAAiE,4DAA+R,+DAA6D,sEAAiJ,4D,2QDoBjwF,GAIa,EAAA6pB,sB,+DAAAA,EAAkB,E,KAJ9B,EAAAx+C,U,MAAU,CACPnG,SAAU,iBACVoG,YAAa,iC,6FAGJq9C,aAAc,CAAF,C,KAApB,EAAAvjD,QACQ8e,YAAW,E,KAAnB,EAAA9e,QACQ+e,OAAM,E,KAAd,EAAA/e,QACQ0O,eAAgB,CAAF,C,KAAtB,EAAA1O,QACS+iD,QAAO,E,KAAhB,EAAAr7B,SACSuQ,WAAU,E,KAAnB,EAAAvQ,SAE8Dk8B,gBAAiB,CAAF,C,KAA7E,EAAAvlB,U,MAAU,eAAgB,CAAE6G,KAAM,EAAAwf,WAAYvf,QAAQ,S,6+CEhC3D,WAaA,GALA,KAEA,KACA,KAEA,SAEA,SAEA,SACA,S,6EAEA,aAgBI,WAAoBvmB,EAAgClgB,EACxCg1B,GADQ,KAAA9U,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBAPF,KAAAixB,WAAa,IAAI,EAAA9+B,aACjB,KAAAoS,WAAa,IAAI,EAAApS,aAE3B,KAAAlG,kBAAoB,EAAAX,kB,OAMd,YAAA4U,OAAN,W,uGAoBQ,O,sBAlBM,EAAU,IAAI,EAAAgxB,eACpB5lD,KAAKi1B,YAAcj1B,KAAK27B,iBAAiBvY,qBAAqB9hB,MAAK,SAAAzE,GAK/D,OAJA,EAAQihC,aAAejhC,EAAO,GAC9B,EAAQ8jB,kBAAoB9jB,EAAO,GACnC,EAAQuqB,WAAa,EAAKy+B,iBAAiB/+B,QAAQM,WACnD,EAAQ1G,QAAU,EAAKmlC,iBAAiB/+B,QAAQpG,QACrB,MAAvB,EAAKhR,eACE,EAAKkQ,WAAWkmC,mBAAmB,IAE1C,EAAQ/+B,MAAQ,EAAK8+B,iBAAiB/+B,QAAQC,MAC9C,EAAQI,MAAQ,EAAK0+B,iBAAiB/+B,QAAQK,MAC9C,EAAQH,MAAQ,EAAK6+B,iBAAiB/+B,QAAQE,MAC9C,EAAQC,MAAQ,EAAK4+B,iBAAiB/+B,QAAQG,MAC9C,EAAQC,KAAO,EAAK2+B,iBAAiB/+B,QAAQI,KAC7C,EAAQC,MAAQ,EAAK0+B,iBAAiB/+B,QAAQK,MACvC,EAAKvH,WAAWmmC,wBAAwB,EAAKr2C,eAAgB,OAG5E,GAAM1P,KAAKi1B,a,cAAX,SACAj1B,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,yBACjEyB,KAAK2lD,WAAWh+B,O,4DAIxB,YAAAiU,OAAA,WACI57B,KAAKi5B,WAAWtR,QAGpB,YAAAa,cAAA,WACkD,OAA1CxoB,KAAK6lD,iBAAiB/+B,QAAQpG,QAC9B1gB,KAAK27B,iBAAiB1b,UAAYjgB,KAAK0P,gBAEvC1P,KAAK27B,iBAAiB1b,UAAW,EAC7BjgB,KAAK27B,iBAAiB5b,SAAW,EAAAC,kBAAkB+B,cACnD/hB,KAAK27B,iBAAiB5b,OAAS,EAAAC,kBAAkB5B,KACjDpe,KAAK27B,iBAAiBtZ,kB,iCApDzB2jC,GAAsB,6G,iCAAtBA,EAAsB,2D,GAAA,M,cACpB,EAAAvhC,iBAAkB,G,cAClB,EAAAgE,iBAAkB,I,2vBC1BjC,+BAAyB,2CAAY,EAAAmM,YAAyD,4CAAwB,+CAAuE,wCAAS,EAAAgH,Y,mBAAU,6BAAyB,gBAAO,iBAAO,iBAAU,4CAA6B,a,oBAA6E,iBAAM,iDAA6E,uDAAc,mDAAoB,EAAApT,mBAAiB,iBAAgB,iDAAoF,uC,oBAAsF,6CAAM,a,oBAAmB,iBAAQ,kCAAU,kDAAwD,wCAAS,EAAAoT,YAAW,a,oBAAoB,iBAAU,kCAAO,kCAAQ,kB,4BAAhyB,2CAA2G,mFAAoI,sHAAgG,0DAA4B,iBAAgK,kDAA4D,+EAA2D,kEAAiH,6E,oKDoBlyB,GAIa,EAAAoqB,0B,+DAAAA,EAAsB,E,KAJlC,EAAA/+C,U,MAAU,CACPnG,SAAU,qBACVoG,YAAa,qC,uFAGkCy0B,iBAAkB,CAAF,C,KAA9D,EAAA0D,U,MAAU,EAAA5a,iBAAkB,CAAE0hB,QAAQ,MACQ0f,iBAAkB,CAAF,C,KAA9D,EAAAxmB,U,MAAU,EAAA5W,iBAAkB,CAAE0d,QAAQ,MAE9B8f,YAAW,E,KAAnB,EAAAjlD,QACQ0O,eAAgB,CAAF,C,KAAtB,EAAA1O,QACS2kD,WAAU,E,KAAnB,EAAAj9B,SACSuQ,WAAU,E,KAAnB,EAAAvQ,Y,6+CE/BL,W,GAOA,KAEA,KACA,K,kDAEA,aAWI,WAAoB9I,EAAgClgB,EACxCg1B,GADQ,KAAA9U,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBANF,KAAAyP,UAAY,IAAI,EAAAtd,aAChB,KAAAoS,WAAa,IAAI,EAAApS,a,OAOrB,YAAA+N,OAAN,W,6GAGI,GAFMgK,EAASx6B,SAASy6B,eAAe,QAE1B,OADPC,EAAQF,EAAOE,QACiB,IAAjBA,EAAM9iC,OAGvB,OAFAgE,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,eACvB,I,iBAkBA,O,uBAdMwgC,EAAK,IAAIC,UACZC,OAAO,UAAWH,EAAM,IAEvBonB,EAA8B,KAE9BA,EADuB,MAAvBlmD,KAAK0P,eACW1P,KAAK4f,WAAWumC,mBAAmBpnB,GAEnC/+B,KAAK4f,WAAWwmC,8BAA8BpmD,KAAK0P,eAAgBqvB,GAGvF/+B,KAAKi1B,YAAcixB,EAAc5kD,MAAK,WAClC,OAAO,EAAKse,WAAW6c,0BAG3B,GAAMz8B,KAAKi1B,a,cAAX,SACAj1B,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,mBACjEyB,KAAKmkC,UAAUxc,O,4DAIvB,YAAAiU,OAAA,WACI57B,KAAKi5B,WAAWtR,Q,iCAzCX0+B,GAAsB,6G,iCAAtBA,EAAsB,ykB,GAAA,MChBnC,+BAAY,2CAAY,EAAAzxB,YAAyD,4CAAyB,8CAAkC,Y,mBAAwB,iBAAS,yCAA6E,gDAAoC,a,oBAA2H,iBAAS,kCAAO,iDAAoF,uC,oBAAsF,6CAAM,a,oBAAmB,iBAAQ,kCAAU,iDAAwD,wCAAS,EAAAgH,YAAW,a,oBAAoB,iBAAU,kCAAQ,kB,4BAA9sB,2CAA0G,qEAAkJ,kKAAoM,kDAA4D,+EAA2D,kEAAiH,6E,yGDY1sB,GAIa,EAAAyqB,0B,+DAAAA,EAAsB,E,KAJlC,EAAAp/C,U,MAAU,CACPnG,SAAU,qBACVoG,YAAa,qC,uFAGJwI,eAAgB,CAAF,C,KAAtB,EAAA1O,QACSmjC,UAAS,E,KAAlB,EAAAzb,SACSuQ,WAAU,E,KAAnB,EAAAvQ,Y,6+CEnBL,WAkBA,GAVA,KAKA,KAEA,KACA,KAEA,SAIA,S,2GCtBipB,6BAA+B,6CAAQ,Y,mBAAmB,iBAAU,Y,iEAAuI,kB,6BAApK,uEAA6B,+MDwBrtB,iBAiBI,WAAoB9I,EAAgClgB,EACxCg1B,EAAwC8D,EACxCqK,GAFQ,KAAAjjB,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBAAwC,KAAA8D,SACxC,KAAAqK,iBAdH,KAAAyjB,eAAiB,EACjB,KAAAxhD,KAAM,EAEN,KAAAyhD,SAAW,OACV,KAAAZ,WAAa,IAAI,EAAA9+B,aACjB,KAAAoS,WAAa,IAAI,EAAApS,aAI3B,KAAA2/B,kBAAoB,E,OAOd,YAAA5xB,OAAN,W,2GA0BQ,O,uBAxBM,EAAU,IAAI,EAAA6xB,gBACZC,oBAAsB1mD,KAAKwmD,kBAC9BxmD,KAAK8E,MACN,EAAQ4hD,sBAAwB,GAGhC,GAAgB,EACdC,EAAS,gD,wDAOI,SALY,MAAvB3mD,KAAK0P,eACM1P,KAAKi1B,YAAcj1B,KAAK4f,WAAWgnC,mBAAmB,GAEtD5mD,KAAKi1B,YAAcj1B,KAAK4f,WAAWinC,wBAAwB7mD,KAAK0P,eAAgB,I,UAGjF,OADR7S,EAAS,WAC2C,MAApCA,EAAO2gC,0BAAzB,Y,iBAEI,O,sBAAA,GAAMx9B,KAAK27B,iBAAiBxX,wBAAwBtnB,EAAO2gC,0BAA2B,O,cAAtF,S,6BAEA,GAAgB,E,+BAI5Bx9B,KAAKi1B,YAAc0xB,IACnB,GAAM3mD,KAAKi1B,a,cAAX,SACAj1B,KAAK2lD,WAAWh+B,KAAK3nB,KAAKwmD,mBACtB,GACAxmD,KAAK00B,eAAeI,SAAS,CACzBzwB,KAAMrE,KAAKN,YAAYnB,EAAE,gCACzBgI,KAAM,UACNgX,QAAS,MAEbvd,KAAKw4B,OAAOkE,SAAS,CAAC,cAAe,CAAEoqB,WAAY9mD,KAAK6iC,kBAExD7iC,KAAK00B,eAAeI,SAAS,UAAW,KACpC90B,KAAKN,YAAYnB,EAAE,kBAAmB,EAAQmoD,oBAAoB18C,a,4DAKlF,YAAA4xB,OAAA,WACI57B,KAAKi5B,WAAWtR,QAGpB,sBAAI,mCAAoB,C,IAAxB,WACI,OAAO3nB,KAAKsmD,eAAiBtmD,KAAKwmD,mB,iEAhE7BO,GAAsB,iL,iCAAtBA,EAAsB,2D,GAAA,K,cAQpB,EAAAtiC,iBAAkB,G,89BCpCjC,+BAAyB,2CAAY,EAAAmQ,YAAyD,4CAAwB,+CAAuE,wCAAS,EAAAgH,Y,mBAAU,6BAAyB,gBAAO,iBAAO,iBAAU,4CAA6B,a,oBAAiD,iBAAM,8CAAkB,8CAA+B,gDAA+B,a,oBAAqD,iBAAS,gDAA4F,0EAA5F,iBAAgK,kCAAO,kCAAO,kDAAkN,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAmB,iBAAQ,kCAAU,kDAAwD,wCAAS,EAAAA,YAAW,a,oBAAoB,iBAAU,iDAAwC,a,oBAA0D,iBAAS,kCAAO,kCAAQ,kDAAkD,kB,4BAA/xC,2CAA2G,oFAAoI,4FAAuI,gGAA0J,2DAAwF,0CAAqQ,kDAA4D,+EAA2D,kEAAiH,2EAAsE,6GAA+F,gD,oQDwBzyC,GAIa,EAAAmrB,0B,+DAAAA,EAAsB,E,KAJlC,EAAA9/C,U,MAAU,CACPnG,SAAU,qBACVoG,YAAa,qC,+HAGJo/C,eAAc,E,KAAtB,EAAAtlD,QACQ8D,IAAG,E,KAAX,EAAA9D,QACQ0O,eAAgB,CAAF,C,KAAtB,EAAA1O,QACQulD,SAAQ,E,KAAhB,EAAAvlD,QACS2kD,WAAU,E,KAAnB,EAAAj9B,SACSuQ,WAAU,E,KAAnB,EAAAvQ,SAE8CiT,iBAAkB,CAAF,C,KAA9D,EAAA0D,U,MAAU,EAAA5a,iBAAkB,CAAE0hB,QAAQ,S,80DEpC3C,WAQA,GANA,KAEA,KACA,KACA,KAEA,QACA,UAGA,S,qJCZ4b,8CAAuE,4FAA2C,iC,gCAA3F,gDAAiC,gB,yBAA+N,6BAA+B,qD,mBAAiF,Y,mBAAyC,iBAAe,wCAAyD,6CAAQ,a,oBAAwC,iBAAU,aAAS,qBAAK,+CAAQ,a,oBAAmC,iBAAU,aAAS,qBAAK,+CAAQ,a,oBAAqC,iBAAU,aAAS,2B,8BAAjX,6EAAqD,+FAAyH,8FAAkD,oDAAsB,yFAA6C,oDAAsB,2FAA+C,qD,mDAAyB,6BAAgC,wCAAyD,wCAAG,Y,mBAA6B,iBAAK,6CAAyB,gDAAkB,a,oBAAuC,iBAAS,iDAAwE,iGAAxE,iBAAsH,kCAAO,+CAAyB,iDAAkB,a,oBAAkC,iBAAS,iDAAuE,iGAAvE,iBAAiJ,kCAAO,+CAAyB,iDAAkB,a,oBAAoC,iBAAS,iDAA8D,iG,oBAA9D,iBAAuK,kCAAO,2C,iCAA9uB,0EAA6E,sFAAwH,8CAAgG,iFAAkH,8CAA4H,mFAA8H,oHAAnB,gC,sBAA4U,2BAAuB,Y,mBAAmB,kB,MAAnB,iE,sBAA2B,2BAAsB,Y,mBAAoB,kB,MAApB,kE,mDAAtrD,iCAAY,4FAAuG,6CAAyB,0DAA4b,0DAA01B,iCAAO,8CAA2B,kDAAoF,wC,oBAAsF,kDAAkD,kDAAkD,kCAAU,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kC,mDAA1yD,2CAAyH,8CAA4b,+CAAs6B,kDAA4D,8EAA4D,+CAAkD,8CAAkI,kEDch3E,kBAWI,WAAYvmB,EAAwBlgB,EAChCg1B,EAAgCzX,GADpC,MAEI,YAAM2C,EAAYlgB,EAAag1B,EAAgBzX,IAAqB,K,OARxE,EAAA1W,KAAO,EAAAoY,sBAAsBwW,I,SADU,OAYvC,YAAAmP,KAAA,SAAKC,GACD,YAAMD,KAAI,UAACC,GACXvkC,KAAKgnD,gBAAgBziB,EAAa/iC,WAGtC,YAAAozB,OAAA,WACI,OAAI50B,KAAK8kB,QACE,YAAM4f,QAAO,UAAC1kC,KAAKi1B,aAEnBj1B,KAAKwkC,UAIV,YAAAA,OAAV,sBACUnf,EAAU,IAAI,EAAA4hC,0BAMpB,OALA5hC,EAAQ2P,mBAAqBh1B,KAAKg1B,mBAClC3P,EAAQ6hC,eAAiBlnD,KAAKmnD,KAC9B9hC,EAAQ+hC,UAAYpnD,KAAKqnD,KACzBhiC,EAAQhZ,KAAOrM,KAAKqM,KAEb,YAAMm4B,OAAM,WAAC,gD,wDAMC,OALU,MAAvBxkC,KAAK0P,eACL1P,KAAKi1B,YAAcj1B,KAAK4f,WAAW0nC,4BAA4BtnD,KAAK0P,eAAgB2V,GAEpFrlB,KAAKi1B,YAAcj1B,KAAK4f,WAAW2nC,gBAAgBliC,GAEtC,GAAMrlB,KAAKi1B,a,OAC5B,OADMzzB,EAAW,SACjB,GAAMxB,KAAKgnD,gBAAgBxlD,I,cAA3B,S,eAIA,YAAAwlD,gBAAR,SAAwBxlD,GACpBxB,KAAKmnD,KAAO3lD,EAAS0lD,eACrBlnD,KAAKqnD,KAAO7lD,EAAS4lD,UACrBpnD,KAAKqM,KAAO7K,EAAS6K,KACrBrM,KAAK8kB,QAAUtjB,EAASsjB,S,iCA/CnB0iC,GAAqB,yJ,iCAArBA,EAAqB,ygDClBlC,4BAAqG,4CAA2C,4CAA4B,4CAA2B,2CAA6C,Y,oBAA0B,6BAAO,mBAAG,iBAAS,kCAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,kEAA2I,mDAAo1D,kCAAO,kCAAO,kCAAO,kB,MAA5rE,gFAA4G,mFAA8L,8CAA0H,+C,mRDcxpB,CAI2C,EAAAziB,wBAA9B,EAAAyiB,yB,+DAAAA,EAAqB,E,KAJjC,EAAAvgD,U,MAAU,CACPnG,SAAU,qBACVoG,YAAa,qC,ymDEhBjB,WAaA,GALA,KACA,MACA,MACA,KAEA,QAMA,GAJA,MAIA,OACA,SAEA,SACA,SACA,SACA,SACA,SACA,S,uOC3BoE,wBAA2B,Y,mBAA6B,kB,MAA7B,2E,sBAAkC,wBAA0B,Y,mBAAyC,kB,MAAzC,uF,mDAA8C,qCAAqD,wCAAG,Y,mBAAwC,iBAAK,gDAAwD,+FAAyB,Y,mBAA6B,iBAAU,iC,MAArK,qFAA8H,2E,sBAAuH,4BAAwB,sC,mBAAuG,8CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAA2C,qCAAuD,Y,mBAA2C,kB,MAA3C,iG,sBAA4V,6BAAiC,sC,mBAA+F,8CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,mDAA4C,2BAA4F,mGAA6B,Y,mBAAqB,iB,MAArB,2E,mDAAtjB,4BAAmF,6CAAqD,wCAA4D,iCAAO,6CAAmB,4CAAkB,aAAW,wCAAkM,+CAAmJ,kCAAM,aAAkB,iBAAO,+CAAsB,kDAA2G,iHAA0B,a,oBAAoB,iBAAU,kCAAO,kC,8CAAlqB,sFAAmG,oDAA0B,8CAAyO,mEAAmG,2DAA8G,uEAAsE,2E,0ID6BxlD,aAmBI,WAAsB0Y,EAAkC2X,EAC1CyN,EAAsC3N,EACtC1O,GAFQ,KAAA/I,aAAkC,KAAA2X,cAC1C,KAAAyN,eAAsC,KAAA3N,mBACtC,KAAA1O,gBARd,KAAA+O,UAAmB,GAEnB,KAAA+vB,mBAAoB,EACpB,KAAAlmD,SAAU,E,OAOJ,YAAAf,SAAN,W,oGAC4B,OAAxB,EAAAR,KAAwB,GAAMA,KAAKu3B,YAAYuO,oB,OAE/C,IAAWlnC,KAFX,EAAKknC,iBAAmB,SAEN,EAAAiN,mBACT,EAAAA,mBAAmB52C,eAAeyC,KAIjCK,EAAK,EAAA8zC,mBAA2Bn0C,GAClCoB,KAAK0nD,eAAezoD,EAAEsH,OAI1BvG,KAAK03B,UAAUp7B,KAAK,CAChBiK,KAAMtH,EAAEsH,KACR1I,KAAMoB,EAAEpB,KACRm1C,YAAa/zC,EAAE+zC,YACfluB,SAAS,EACTgpB,QAAS7uC,EAAE6uC,QACXoF,KAAMj0C,EAAEi0C,QAKhB,OADAlzC,KAAK03B,UAAUwb,MAAK,SAACxlC,EAAQC,GAAW,OAAAD,EAAEwlC,KAAOvlC,EAAEulC,QACnD,GAAMlzC,KAAKke,Q,cAAX,S,YAGE,YAAAA,KAAN,W,qGAEyB,OADrBle,KAAKuB,SAAU,EACM,GAAMvB,KAAK2nD,yB,cAAX,SACRnsD,KAAK6R,SAAQ,SAAApO,GACtB,EAAKy4B,UAAUrqB,SAAQ,SAAAvN,GACfb,EAAEsH,OAASzG,EAAGyG,OACdzG,EAAGglB,QAAU7lB,EAAE6lB,eAI3B9kB,KAAK4nD,mBACL5nD,KAAKuB,SAAU,E,YAGb,YAAAsmD,OAAN,SAAathD,G,4GACDA,G,KACC,EAAAoY,sBAAsBgX,cAAtB,Y,KAMA,EAAAhX,sBAAsBkX,QAAtB,Y,KAMA,EAAAlX,sBAAsBwW,IAAtB,Y,KAMA,EAAAxW,sBAAsB4W,MAAtB,Y,KAMA,EAAA5W,sBAAsB8W,SAAtB,Y,oBAvBgB,SAAMz1B,KAAK8nD,UAAU9nD,KAAK+nD,sBAAuB,EAAAC,kC,OAIlE,OAJiB,SACR7jB,UAAU3/B,WAAU,SAACsgB,GAC1B,EAAKmjC,aAAanjC,EAAS,EAAAnG,sBAAsBgX,kBAErD,O,OAEiB,SAAM31B,KAAK8nD,UAAU9nD,KAAKkoD,gBAAiB,EAAAC,4B,OAI5D,OAJiB,SACRhkB,UAAU3/B,WAAU,SAACsgB,GAC1B,EAAKmjC,aAAanjC,EAAS,EAAAnG,sBAAsBkX,YAErD,O,OAEgB,SAAM71B,KAAK8nD,UAAU9nD,KAAKooD,YAAa,EAAAZ,wB,OAIvD,OAJgB,SACRrjB,UAAU3/B,WAAU,SAACsgB,GACzB,EAAKmjC,aAAanjC,EAAS,EAAAnG,sBAAsBwW,QAErD,O,OAEkB,SAAMn1B,KAAK8nD,UAAU9nD,KAAKqoD,cAAe,EAAAC,0B,OAI3D,OAJkB,SACRnkB,UAAU3/B,WAAU,SAACsgB,GAC3B,EAAKmjC,aAAanjC,EAAS,EAAAnG,sBAAsB4W,UAErD,O,OAEqB,SAAMv1B,KAAK8nD,UAAU9nD,KAAKuoD,iBAAkB,EAAAC,6B,QAIjE,OAJqB,SACRrkB,UAAU3/B,WAAU,SAACsgB,GAC9B,EAAKmjC,aAAanjC,EAAS,EAAAnG,sBAAsB8W,aAErD,O,QAEA,a,0BAIZ,YAAAgzB,aAAA,WACIzoD,KAAK8nD,UAAU9nD,KAAK0oD,iBAAkB,EAAAC,6BAGpC,YAAAlgB,gBAAN,W,mEACI,OAAKzoC,KAAK8lC,kBACN9lC,KAAKq3B,iBAAiBa,KAAK,mB,WAKzB,YAAAyvB,sBAAV,WACI,OAAO3nD,KAAK4f,WAAW+nC,yBAGjB,YAAAD,eAAV,SAAyBnhD,GACrB,OAAOA,IAAS,EAAAoY,sBAAsByW,iBAG1B,YAAA0yB,UAAhB,SAA6Bc,EAAuBriD,G,oGAChB,SAAMvG,KAAKglC,aAAaviC,YAAY8D,EAAMqiD,I,OAG1E,OAHM,EAA0B,SAAzBnjB,EAAK,KAAEojB,EAAc,KAC5B7oD,KAAKylC,MAAQA,EAEN,CAAP,EAAOojB,WAGD,YAAAZ,aAAV,SAAuBnjC,EAAkBve,GAChCue,GAAyB,MAAd9kB,KAAKylC,OACjBzlC,KAAKylC,MAAM//B,QAEf1F,KAAK03B,UAAUrqB,SAAQ,SAAApO,GACfA,EAAEsH,OAASA,IACXtH,EAAE6lB,QAAUA,MAGpB9kB,KAAK4nD,oBAGK,YAAAA,iBAAd,W,uGAC+B,MAAvB5nD,KAAK0P,gBAA2E,IAAjD1P,KAAK03B,UAAUnpB,QAAO,SAAAtP,GAAK,OAAAA,EAAE6lB,WAAS9oB,OAArE,OACA,EAAAgE,KAAyB,GAAMA,KAAK2oB,cAAcgU,oBAAoB,EAAAvlB,WAAW0xC,2B,cAAjF,EAAKrB,kBAAoB,S,aAEzBznD,KAAKynD,mBAAoB,E,oEA3IxBsB,GAAuB,wL,iCAAvBA,EAAuB,6D,GAAA,M,kBACO,EAAA9iB,kB,kBACK,EAAAA,kB,kBACN,EAAAA,kB,kBACJ,EAAAA,kB,kBACE,EAAAA,kB,kBACG,EAAAA,mB,44CCvC3C,4BAA0B,yCAAI,Y,mBAAyB,iBAAM,iCAAO,4CAA6D,4CAAwE,yDAA4O,6CAA0C,a,oBAAuB,iCAA0L,kCAAM,wDAAiH,6CAAuC,gDAAqzB,kCAAM,sFAAmD,sFAA8C,sFAAyC,sFAA2C,uFAA6C,uFAA8C,kB,MAA33D,sEAA0C,sDAA6D,qDAAiG,sDAAmN,iFAAsC,8EAA+B,8CAAqN,wDAA6I,qD,uHD6Bh2B,GAIa,EAAA8iB,2B,+DAAAA,EAAuB,E,KAJnC,EAAA9hD,U,MAAU,CACPnG,SAAU,uBACVoG,YAAa,uC,sIAG4DwhD,iBAAkB,CAAF,C,KAAxF,EAAArpB,U,MAAU,mBAAoB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACa4hB,sBAAuB,CAAF,C,KAAlG,EAAA1oB,U,MAAU,wBAAyB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACE+hB,gBAAiB,CAAF,C,KAAtF,EAAA7oB,U,MAAU,kBAAmB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACIiiB,YAAa,CAAF,C,KAA9E,EAAA/oB,U,MAAU,cAAe,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACUkiB,cAAe,CAAF,C,KAAlF,EAAAhpB,U,MAAU,gBAAiB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACWoiB,iBAAkB,CAAF,C,KAAxF,EAAAlpB,U,MAAU,mBAAoB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,S,6cEvCrE,WAQA,GANA,MACA,MACA,OACA,KACA,KAEA,S,6EAEA,cAOI,WAAYpqB,EAA8Brc,EACtCud,EAA4C+rC,EAC5C9hB,G,OACA,YAAMnrB,EAAerc,EAAaud,EAAsB+rC,EAAe9hB,EAAc/nC,SAAO,K,OAN/D,OASvB,YAAA8pD,MAAV,WACI,YAAMA,MAAK,WACXjpD,KAAK60B,eAAiB,KACtB70B,KAAKid,qBAAqBK,UAAU,UAAW,KAAMtd,KAAKN,YAAYnB,EAAE,mB,iCAZnE2qD,GAAe,+L,iCAAfA,EAAe,grB,GAAA,MCd5B,+BAAY,2CAAY,EAAAt0B,YAAyD,4CAA0B,yCAAI,Y,mBAAwB,iBAAM,iCAAO,yCAAG,a,oBAAiC,iBAAK,8CAAkB,8CAA+B,gDAAoB,a,oBAAuB,iBAAS,iDAAuD,+DAAsB,iDAAqB,qBAAK,iBAAU,iDAAoB,oBAAI,iBAAU,iDAA+B,iCAAiB,iBAAU,kCAAU,kCAAO,kCAAO,8CAAkB,8CAA+B,iDAA4B,a,oBAAuB,iBAAS,iDAAsF,uEAAtF,iBAA8I,kCAAO,kCAAO,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAwB,iBAAQ,kCAAU,kCAAQ,kB,4BAA/7B,2CAA4D,sEAAwC,gFAA2G,sEAAuF,gDAA2P,uEAAsH,wDAA+H,kDAA4D,+EAA2D,yE,yRDUh8B,CAIqC,mBAAxB,EAAAs0B,mB,+DAAAA,EAAe,E,KAJ3B,EAAAjiD,U,MAAU,CACPnG,SAAU,aACVoG,YAAa,6B,2+DEZjB,WAcA,GATA,MACA,MACA,MACA,KAEA,MAIA,OAEA,S,mHChBkZ,oC,mBAAmF,Y,mBAAgC,kB,MAAvF,+DAAuD,sF,mDAA+b,6BAA6E,2CAAyB,mI,mBAAwD,YAAU,iBAAK,0C,0CAA7C,8EAA8B,4C,yBAAyD,2CAAM,YAAU,iBAAQ,iB,uCAAlB,4C,sBAAiC,6BAAyD,sC,mBAAsF,8CAAsB,Y,mBAAmB,iBAAQ,2C,MAArG,4EAA0E,iE,sBAA2C,6BAAwC,sC,mBAAgG,8CAAsB,Y,mBAAwB,iBAAQ,2C,MAA/G,iFAA+E,sE,yBAA1vB,yBAA+B,4CAA6B,mDAA+C,iCAAM,4CAA6B,wDAA6L,uFAAiE,yDAAgN,yDAA8M,sCAAK,8CAAO,aAAc,iBAAS,kCAAM,8CAAwB,gDAAmC,a,0CAAqE,iBAAQ,kCAAM,mC,gEAAr5B,wCAAiF,0EAA4C,cAAkN,sEAAgN,qDAA2M,+CAAwF,sI,yBAAhpC,6BAAsC,oD,mBAAuE,Y,wCAAmE,iBAAe,+CAA2D,6CAAQ,kDAAu+B,kCAAS,kCAAS,4C,8BAA1rC,2FAA4C,gIAAuK,kD,yBAA3b,4BAAqC,sDAAkI,yDAA2wC,kC,6BAAl1C,sDAAsF,sD,iBDkBniB,kBAOI,WAAsB0/B,EAAwCE,EAC1D9B,EAA4B3N,EAC5BE,GAFJ,MAGI,YAAMyN,EAAczN,EAAaF,GAAkB,IAAK,K,OAHtC,EAAAuP,gBAAwC,EAAAE,eAF9D,EAAAqiB,mBAAqB,IAAI3mD,I,SADwB,OASjD,YAAAhC,SAAA,WACIR,KAAK4lC,eAGH,YAAA1nB,KAAN,W,0FACQ,SAAMle,KAAK4lC,e,cAAX,UACA,YAAM1nB,KAAI,W,YAIZ,YAAAinB,WAAN,W,2GACuB,SAAMnlC,KAAKopD,iB,OAe9B,OAfMC,EAAa,SACbC,EAAuC,GACvCnvC,EAA4B,GAClCkvC,EAAWh8C,SAAQ,SAAA1P,GACf,GAAIA,EAAE4I,OAAS,EAAAwN,WAAWC,OAA6B,MAApBrW,EAAEkW,MAAMmB,UAAyC,KAArBrX,EAAEkW,MAAMmB,WAAmBrX,EAAEquC,UAA5F,CAGA,IAAM1V,EAAU,EAAKwQ,aAAayiB,eAAe5rD,EAAEkW,MAAMmB,UAAU1T,MAAK,SAAAkoD,GAChEA,EAAe,IACfF,EAAuBhtD,KAAKqB,GAC5B,EAAKwrD,mBAAmBxlD,IAAIhG,EAAEiC,GAAI4pD,OAG1CrvC,EAAS7d,KAAKg6B,OAElB,GAAMhc,QAAQK,IAAIR,I,cAAlB,SACAna,KAAK6U,QAAUy0C,E,YAGT,YAAAF,cAAV,WACI,OAAOppD,KAAK4mC,cAAc6iB,mBAGpB,YAAAC,gBAAV,SAA0B/rD,GAEtB,OAAO,G,iCA7CFgsD,GAA+B,0L,iCAA/BA,EAA+B,k3BCtB5C,4BAA0B,yCAAI,Y,mBAAmC,iBAAM,iCAAO,wCAAG,Y,mBAAuC,iBAAK,iDAA8E,wCAAS,EAAAzrC,UAAS,uC,oBAAsF,6CAAM,a,oBAAkC,iBAAQ,kCAAU,gDAAy7C,sFAA2C,kB,MAAnzD,gFAAmD,oFAAqG,kDAAwE,+EAA2D,iFAAuE,kD,+JDkBhY,CAIqD,EAAA8nB,uBAAxC,EAAA2jB,mC,+DAAAA,EAA+B,E,KAJ3C,EAAA1iD,U,MAAU,CACPnG,SAAU,+BACVoG,YAAa,+C,u9DEpBjB,WAiBA,GAfA,KACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,OACA,KAEA,QACA,SAEA,SACA,SAEA,S,kOvFvBykB,qCAA+E,Y,mBAA6C,kB,MAA7C,mG,yBAA2T,gCAA0D,YAAU,kB,uBAA9B,gCAAoB,4C,mDAAzT,6BAAiD,6CAA+B,+CAAkB,Y,mBAA2B,iBAAS,gDAA8B,wGAA2F,mDAA8E,kCAAU,kCAAO,kC,iCAA5P,wEAAkE,qDAAyB,+BAAwF,sD,yBAAuiB,gCAAmD,YAAU,kB,uBAA3B,6BAAiB,4C,mDAA1R,6BAAqD,+CAAoB,Y,mBAAmB,iBAAS,gDAAoC,4GAA8F,kDAAuE,iCAAU,kC,iCAA/O,gEAAgE,yDAA6B,2CAAuF,kD,mDAAsb,6BAA2D,gDAAiG,mHAAqC,WAAY,e,mBAAc,sCAAqD,iCAAU,iC,MAAvK,0F,mDAA6W,2BAA+G,oG,mBAA0D,sCAA6D,iC,KAApK,8E,mDAAtI,6BAAoE,6CAA2O,8CAAyH,iG,mBAAiE,sCAAsG,uC,oBAAuI,kCAAK,kC,oDAA1gB,0DAA6K,0FAAoE,oDAAiF,gDAAiK,8EAArC,mC,mDAAsjD,2BAA0D,mGAAkG,Y,mBAAqB,iB,MAArB,2E,mDAA0B,2BAA0D,uGAAiL,Y,mBAAqB,iB,MAArB,2E,yBAA5iB,0BAA8C,wC,mBAA6F,6CAAsL,6CAAqQ,kC,8BAAnf,0FAA+I,mGAA0L,2K,uGAAiL,6BAA8E,8CAAwC,8CAAuB,YAAW,iBAAQ,6DAAM,wCAAI,6CAAoH,6CAAmE,kCAAK,kCAAO,kCAAQ,oE,oBAAuE,aAAqB,iBAAQ,kDAA4F,sGAAwB,uBAAwB,W,oBAAU,wCAA+C,kCAAU,kC,iCAA3hB,8CAAwF,yEAA6K,2FAA0C,wDAAwE,mG,yBAAgpD,gCAA8D,YAAW,kB,uBAA/B,gCAAoB,oD,mDAA+B,gCAA4D,gI,mBAAkG,sCAA4D,iC,KAAvI,oE,oDAA3lD,6BAA8F,6CAA+B,+CAA2B,Y,mBAAkC,iBAAS,6CAA0B,gDAAwF,sE,oBAAxF,iBAAyN,+CAAiC,kDAA2F,6G,oBAA+C,wCAAqD,kCAAU,kDAA4F,2GAAqB,MAAO,U,oBAAS,wCAAqD,kCAAU,kCAAO,kCAAO,kCAAO,+CAA+B,+CAAqB,iDAAiC,a,oBAA4B,iBAAS,6C,oBAAwJ,wCAA2D,kCAAK,kCAAO,+CAAqB,kDAAoG,wEAAqB,+GAA+E,oDAAmF,kCAAU,oDAAoO,kCAAO,kCAAO,kC,yDAAtnD,+DAAoB,0EAAiG,8DAA+B,yDAA2F,2FAA9D,8BAAmB,2CAAuM,qFAAuD,sCAAkJ,sFAAwN,qEAA0B,mFAAsJ,wFAAgL,mEAAwB,2DAA+B,gCAAqB,2CAAqG,yDAA8L,sE,0BAA3qD,6BAA4C,kDAAiwD,2C,8BAAluD,2DAAsB,mC,oDAA4tD,2BAAyB,0FAAuF,sCAA2D,Y,mBAAoB,iB,MAApB,0E,4IAArjM,6BAAwD,6CAAkB,6CAA+B,+CAA2B,Y,mBAAqB,iBAAS,8CAA0B,iDAAiF,kHAAjF,iBAAiL,iDAAiS,kCAAO,kCAAO,+CAA+B,+CAAqB,iDAA2B,a,oBAAqB,iBAAS,mDAAkuB,kCAAO,+CAA0B,iDAAkI,kHAAlI,iBAAsR,+CAAiC,kDAAqG,kG,oBAA8D,wCAAgH,kCAAU,kDAAiG,mHAAqC,WAAY,e,oBAAgD,wCAAqD,kCAAU,kCAAO,kCAAO,kCAAO,kCAAO,+CAAkB,+CAA+B,iDAAuB,a,oBAAiC,iBAAS,iDAAiI,8GAAjI,iBAAqP,kCAAO,+CAAwF,iDAA6kB,mDAA+qB,kCAAO,kCAAO,2DAA6zD,gDAAoM,2C,iCAA18L,mEAAyI,+DAAmC,2CAA8F,wDAA6V,oEAA2D,qEAAoyB,gFAAoE,gDAAmC,mEAA0M,+FAAwE,gDAA0E,+FAA2I,2FAAuG,gDAAsM,iFAAgE,uFAA2G,4CAA+B,mEAAsJ,0EAAoC,sEAA6kB,oEAAssB,2DAAu3D,sE,0BAA2sB,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,0BAA6pC,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAA91D,6BAAuD,6CAAkB,6CAA+B,+CAAgC,Y,mBAA2B,iBAAS,gDAA+F,uHAA/F,iBAAmL,kCAAO,+CAA+B,iDAAuB,a,oBAAkB,iBAAS,kDAA8D,8GAA2E,qDAAmF,kCAAU,kCAAO,kCAAO,+CAAkB,+CAA+B,iDAAwB,a,oBAAmB,iBAAS,+CAA0B,iDAA8H,+GAA9H,iBAAuP,+CAAiC,kDAAqG,oG,oBAA8B,wCAAoH,kCAAU,kDAA+F,gHAAkC,SAAU,a,oBAAY,wCAAqD,kCAAU,kCAAO,kCAAO,kCAAO,+CAA6B,iDAA0B,a,oBAA4B,iBAAS,kDAAoE,iHAA8E,qDAAsF,kCAAU,kCAAO,+CAA6B,iDAAyB,a,oBAA2B,iBAAS,kDAA6E,gH,oBAA7E,iBAA6L,kCAAO,kCAAO,+CAAkB,+CAA+B,kDAAsB,a,oBAAyB,iBAAS,+CAA0B,kDAAwH,6GAAxH,iBAA+O,+CAAiC,kDAAqG,kG,oBAA4B,wCAAgH,kCAAU,kDAAiG,8GAAgC,eAAgB,oB,oBAAmB,0CAAqD,mCAAU,mCAAO,mCAAO,mCAAO,mCAAO,4C,iCAA76F,yEAAmI,oEAAwC,2CAAyG,iEAAyF,2DAA+B,2CAAkE,0DAA8J,mEAAiH,kFAAmE,6CAAgC,2CAAkL,+FAAkH,mGAA+I,yFAA0O,4EAAyG,8DAAkC,2CAAkE,6DAAuI,0EAAmJ,4FAAlC,8CAAiC,2CAAoK,yEAAqH,gFAA+D,2CAA8B,2CAAkL,+FAAgH,+FAA2I,4F,0BAAkgB,gCAAmE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAA9W,6BAA2D,6CAAkB,8CAA+B,gDAAqB,Y,mBAAkB,iBAAS,kDAAgE,kHAA+E,qDAAuF,kCAAU,kCAAO,kCAAO,+CAAkB,gDAA+B,kDAAyB,a,oBAAsB,iBAAS,kDAAmF,sHAAnF,iBAAsK,kCAAO,gDAA+B,kDAA0B,a,oBAAuB,iBAAS,kDAAqF,uHAArF,iBAAyK,kCAAO,gDAA+B,kDAAwB,a,oBAAqB,iBAAS,kDAAiF,qHAAjF,iBAAmK,kCAAO,kCAAO,+CAAkB,gDAA+B,kDAAwB,a,oBAAqB,iBAAS,kDAAiF,qHAAjF,iBAAoL,kCAAO,gDAA+B,kDAAuB,a,oBAAoB,iBAAS,kDAA+E,oHAA/E,iBAAgK,kCAAO,kCAAO,+CAAkB,gDAA+B,kDAAmB,a,oBAAgB,iBAAS,kDAAuE,gHAAvE,iBAAqK,kCAAO,gDAA+B,kDAA8B,a,oBAA2B,iBAAS,kDAA6F,2HAA7F,iBAAsM,kCAAO,gDAA+B,kDAA6B,a,oBAA0B,iBAAS,kDAA2F,0HAA3F,iBAAmM,kCAAO,kCAAO,+CAAkB,gDAA+B,oDAAqB,c,qBAAkB,iBAAS,oDAA2E,kHAA3E,iBAA2K,mCAAO,iDAA+B,oDAAqB,c,qBAAkB,iBAAS,oDAA2E,kHAA3E,iBAA0J,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAwB,c,qBAAqB,iBAAS,oDAAiF,qHAAjF,iBAAmK,mCAAO,iDAA+B,oDAAwB,c,qBAAqB,iBAAS,oDAAiF,qHAAjF,iBAAmK,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAwB,c,qBAAqB,iBAAS,oDAAiF,qHAAjF,iBAAmK,mCAAO,iDAA+B,oDAAoB,c,qBAAqB,iBAAS,oDAAyE,iHAAzE,iBAAuJ,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAqB,c,qBAA0B,iBAAS,oDAA2E,kHAA3E,iBAA0J,mCAAO,iDAA+B,oDAA0B,c,qBAA0B,iBAAS,oDAAqF,uHAArF,iBAAyK,mCAAO,mCAAO,iDAAkB,iDAA+B,oDAAuB,c,qBAAoB,iBAAS,oDAA+E,oHAA/E,iBAAgK,mCAAO,mCAAO,4C,iCAAhyJ,gEAA2F,+DAAmC,2CAAkE,8DAAmK,sEAAkH,mEAAuC,2CAA4G,sEAAqH,oEAAwC,2CAA0G,oEAA+G,kEAAsC,2CAAmI,oEAA+G,kEAAsC,2CAA0H,mEAA4G,iEAAqC,2CAA8H,+DAAgG,6DAAiC,2CAAiI,0EAAiI,wEAA4C,2CAAgI,yEAA8H,uEAA2C,2CAAiJ,kEAAsG,+DAAmC,2CAAwH,kEAAsG,+DAAmC,2CAAmI,qEAA+G,kEAAsC,2CAA0G,qEAA+G,kEAAsC,2CAAmI,qEAA+G,kEAAsC,2CAAsG,qEAAuG,8DAAkC,2CAAgI,0EAA8G,+DAAmC,2CAA4G,0EAAwH,oEAAwC,2CAAkI,oEAA4G,iEAAqC,4C,oDAAunC,6BAA4D,gDAAqF,2GAArF,iBAAuK,6CAAiC,gDAA8F,6HAAuB,QAAS,Y,mBAAW,sCAAqD,kCAAU,kCAAO,kC,6EAAhZ,gEAAsD,oDAAwB,gCAAqB,2CAAsJ,uF,oDAA8J,6BAA8D,gDAAiG,2GAAjG,iBAA4R,6CAAiC,gDAAqG,uI,mBAAgF,2CAA0G,kCAAK,kCAAU,kDAA8F,iIAAuB,QAAS,EAAF,0BAAgC,UAAY,Y,oBAA4D,wCAAqD,kCAAU,kCAAO,kC,6EAA94B,gEAAqB,8DAA6C,oDAAwB,gCAAqB,gFAA+P,8FAA2E,6DAAyF,yFAA0I,wFAA0H,8D,oDAAuJ,gCAAoE,2GAApE,iB,6EAAO,iDAAqB,oDAAwC,gCAAqB,4C,oDAA8I,gCAA4D,kI,mBAAoG,sCAA4D,iC,KAAvI,oE,uBAAiJ,iC,mBAAiJ,uCAAoD,kC,KAAnI,wE,0BAA1qF,8BAAkG,6CAA+B,6CAAqB,+CAA4B,Y,mBAAiB,iBAAS,6C,oBAAkJ,wCAA2D,kCAAK,kCAAO,kDAA8D,uEAA9D,iBAAoK,kCAAO,+CAA+B,iDAA6B,a,oBAAkB,iBAAS,+CAAwC,oDAA0d,qDAA09B,gDAAwB,qDAAgO,kCAAO,qDAAsO,sDAA+M,kCAAO,kCAAO,mC,sDAAxqF,gEAAqB,+DAAqI,wFAAqH,+DAAgC,mDAAuB,+BAAoB,2CAA+H,iEAAsB,iEAA6F,8DAA0d,gEAAmjC,iEAAqQ,qEAAuN,sE,oDAAjyF,8BAAiB,uGAA8D,mDAA40F,iC,iCAAryF,uDAAkB,mC,oDAA0xF,4BAAyB,4FAAyF,sCAA2D,Y,mBAA4B,iB,MAA5B,kF,0BAAiR,gCAAkE,YAAU,kB,uBAA9B,gCAAoB,4C,oDAAlT,6BAAyD,8CAAoB,gDAA0C,Y,mBAAiB,iBAAS,iDAAmE,yGAA4B,oDAAsF,kCAAU,kCAAO,kC,iCAAhO,8DAA6F,sDAAkD,8D,0BAAqd,gCAA+D,YAAU,kB,uBAA9B,gCAAoB,4C,oDAA5b,6BAAkD,4CAAiB,Y,mBAAsB,iBAAM,6CAAkB,8CAAoB,iDAA4B,a,oBAA4B,iBAAS,mDAAuE,kHAAmC,2FAA6E,qDAAmF,kCAAU,kCAAO,kCAAO,2C,iCAAra,mEAA8F,0EAA4G,+DAAmC,2CAAmG,2D,uBAA6N,0BAAkD,Y,mBAAiC,kB,MAAjC,uF,0BAAiG,6BAAsE,gDAAgD,0EAAhD,iBAA0K,gDAAuD,YAAU,iBAAS,kC,sDAA5K,iEAAsB,6DAA9C,kCAAuB,2CAAmI,kEAAuB,4C,0BAAhW,6BAAyD,iDAAiU,2C,8BAA3R,sD,0BAAjT,6BAAyE,4CAAiB,Y,mBAAwB,iBAAM,gDAA0F,yDAA0Y,2C,8BAAlgB,qEAAoC,0EAAmG,yE,0BAAkkB,0BAA+B,4CAAgC,Y,mBAAiC,iBAAK,Y,mBAAuD,kB,8BAA7F,qFAAsC,+G,oDAA8D,0BAAiC,4CAAgC,Y,mBAA6B,iBAAK,4CAAyB,+F,mBAAmD,YAAkC,iBAAK,iC,iCAArJ,iFAAmF,0EAA2B,8E,0BAAgG,0BAAgD,Y,mBAAqC,+BAAmD,YAAe,iBAAQ,kC,uBAA/G,yFAAwF,gD,0BAA1L,8BAAkD,iDAAsK,kC,8BAAlJ,iE,0BAA7nB,6BAAgC,8CAAoC,0CAAM,4CAAgC,Y,mBAAyB,iBAAK,Y,oBAAwC,iBAAO,kDAAmK,mDAA6N,mDAA+N,kCAAO,4C,8BAAnrB,6EAA8B,gGAAqD,uDAAmK,yDAA0O,8D,oDAA7ipB,6BAAwC,uDAA2I,gDAAqW,6CAAkB,6CAA+B,gDAAkB,a,oBAAiB,iBAAS,iDAA8D,uGAA9D,iBAA4I,kCAAO,kDAA+T,kCAAO,6DAA8lM,8DAAqkG,8DAAi7J,+CAAyB,iDAAmB,a,oBAAkB,iBAAS,oDAA2C,wGAA0F,iBAAY,kCAAO,8CAAiB,a,oBAAyB,iBAAM,kDAAk6F,gDAA8M,mDAA8V,4DAAwf,4DAA4mB,6DAA6yB,+CAAe,8CAAiB,a,oBAAoB,iBAAM,+CAAyB,iDAAqE,mGAArE,iBAAuL,iDAAqD,a,oBAA2B,iBAAS,6C,oBAA4J,wCAA2D,kCAAK,kCAAO,2CAAgB,kC,gCAApyqB,mFAAmI,6DAAsZ,gEAAwF,qDAAyB,2CAA2F,oDAAsT,uEAA8lM,sEAAqkG,0EAA88J,iEAAsE,sDAA0B,2CAAoG,wEAAqF,uDAAu7F,qEAAqJ,qEAA2V,iEAAwf,wFAA4mB,+CAA8zB,mEAAmG,kDAAoB,2CAAwK,0EAAsE,yF,0BAAmP,iCAAsG,uC,mBAAsF,2CAAM,Y,mBAAmD,iBAAQ,kC,gDAApM,mCAA8E,6EAA2D,4G,4GAA0P,gCAAiE,kG,mBAAyH,sCAAoH,iC,iCAA7L,qGAA6F,qG,oDAA0G,qCAAiC,0F,mBAA8N,uCAA0F,uC,mBAAgI,iC,oDAAtY,2GAA6G,mCAA8B,gCAAsE,gDAAgI,6EAA9B,mC,0BAAhvB,8BAAkD,oDAAwT,qDAAme,kC,6BAAlxB,yEAAid,8DuFyB/ztB,mBAQI,WAAY0/B,EAA8BC,EACtCnnC,EAA0Bud,EAC1B6pB,EAA4BlpB,EAC5B2Z,EAA0BwP,EAC1BC,EAA0BC,EAClBrnB,EAAwByX,EAChC6P,EAA4Bve,GANhC,MAOI,YAAMie,EAAeC,EAAennC,EAAaud,EAAsB6pB,EAAclpB,EACjF2Z,EAAawP,EAAmBC,EAAaC,EAA2B5P,EACxE6P,EAAcve,IAAc,K,OAJxB,EAAA/I,aAPZ,EAAAgqC,eAAyB,K,SAFS,OAgBxB,YAAA3gB,yBAAV,WACI,OAA6B,MAAzBjpC,KAAKmpC,mBAA6BnpC,KAAKmpC,iBAAiBntC,OAAS,IAAMgE,KAAKopC,iBACnD,MAArBppC,KAAK4kB,aACE5kB,KAAKkpC,WAAalpC,KAAK4kB,aAAailC,yBAEnC7pD,KAAKooC,UAAYpoC,KAAKkpC,YAMhC,YAAA4gB,gBAAV,WACI,OAAK9pD,KAAK4kB,aAAailC,wBAGhBvvC,QAAQC,QAAQva,KAAK6S,aAFjB,YAAMi3C,gBAAe,YAKpB,YAAAC,WAAhB,W,yGACS/pD,KAAK4kB,aAAailC,wBAAnB,MACO,GAAM,YAAME,WAAU,Y,OAA7B,MAAO,CAAP,EAAO,U,OAEM,SAAM/pD,KAAK4f,WAAWoqC,eAAehqD,KAAK+tB,W,OAG3D,OAHMvsB,EAAW,SACXhG,EAAO,IAAI,EAAA63B,WAAW7xB,GAC5BxB,KAAK4pD,eAAiB,IAAI,EAAAzyB,OAAO37B,GAC1B,CAAP,EAAO,IAAI,EAAA27B,OAAO37B,YAGZ,YAAAyuD,cAAV,WACI,OAAKjqD,KAAK4kB,aAAailC,wBAGhB7pD,KAAK4mC,cAAc1K,QAAQl8B,KAAKmS,OAAQ,KAAMnS,KAAK4pD,gBAF/C,YAAMK,cAAa,YAKlB,YAAAC,WAAhB,SAA2B/3C,G,yEACvB,OAAKnS,KAAK4kB,aAAailC,yBAAoD,MAAzB13C,EAAOzC,eAGrD1P,KAAKooC,WAAapoC,KAAKkpC,WACjB7jB,EAAU,IAAI,EAAA0b,cAAc5uB,GAC3B,CAAP,EAAOnS,KAAK4f,WAAWuqC,eAAenqD,KAAK+tB,SAAU1I,MAE/CA,EAAU,IAAI,EAAA+kC,oBAAoBj4C,GACjC,CAAP,EAAOnS,KAAK4f,WAAWyqC,gBAAgBhlC,KAPhC,CAAP,EAAO,YAAM6kC,WAAU,UAAC/3C,WAWhB,YAAA85B,aAAhB,W,mEACI,OAAKjsC,KAAK4kB,aAAailC,wBAGhB,CAAP,EAAO7pD,KAAKmS,OAAO65B,UAAYhsC,KAAK4f,WAAW0qC,kBAAkBtqD,KAAK+tB,UAChE/tB,KAAK4f,WAAW2qC,qBAAqBvqD,KAAK+tB,WAHrC,CAAP,EAAO,YAAMke,aAAY,mB,iCAlExB5G,GAAgB,shB,iCAAhBA,EAAgB,myVvF7B7B,4BAA4G,4CAA4E,+CAAkC,2CAAY,EAAAzQ,YAA4E,4CAA2B,2CAAgD,aAAS,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,mDAA62qB,8CAA2B,qDAAuQ,kDAA8E,a,oBAA2C,iBAAU,kDAAo1B,kCAAO,kCAAQ,kCAAO,kCAAO,kB,MAAp7tB,0DAA6I,4CAAwE,mFAAqH,6CAAm8qB,gDAAiQ,6FAA2E,4D,4euFyBz0sB,CAIsC,oBAAzB,EAAAyQ,qB,+DAAAA,GAAgB,E,KAJ5B,EAAAp+B,U,MAAU,CACPnG,SAAU,yBACVoG,YAAa,2C,kdCzBjB,MAQI,SAAY1F,GACQ,MAAZA,IAGJxB,KAAKJ,GAAK4B,EAAS5B,GACnBI,KAAKiM,IAAMzK,EAASyK,IACpBjM,KAAK4gC,SAAWp/B,EAASo/B,SACzB5gC,KAAKpB,IAAM4C,EAAS5C,IACpBoB,KAAKgjB,KAAOxhB,EAASwhB,KACrBhjB,KAAKy7C,SAAWj6C,EAASi6C,WAjBpB,EAAAvoB,kB,gGCAb,MAQI,SAAY13B,GACI,MAARA,IAIJwE,KAAKoc,eAAiB5gB,EAAK4gB,eAC3Bpc,KAAK2c,MAAQnhB,EAAKmhB,MAClB3c,KAAK0c,OAASlhB,EAAKkhB,OACnB1c,KAAKwS,SAAWhX,EAAKgX,SACrBxS,KAAKyS,QAAUjX,EAAKiX,QACpBzS,KAAKqc,KAAO7gB,EAAK6gB,OAlBZ,EAAA0W,Y,iGCEb,MAKI,SAAYvxB,GACQ,MAAZA,IAGJxB,KAAKuG,KAAO/E,EAAS+E,KACrBvG,KAAKnC,KAAO2D,EAAS3D,KACrBmC,KAAK1B,MAAQkD,EAASlD,QAXjB,EAAA20B,a,oGCFb,MAoBI,SAAYz3B,GACI,MAARA,IAIJwE,KAAKO,MAAQ/E,EAAK+E,MAClBP,KAAKiyB,UAAYz2B,EAAKy2B,UACtBjyB,KAAKsxB,WAAa91B,EAAK81B,WACvBtxB,KAAKkyB,SAAW12B,EAAK02B,SACrBlyB,KAAKuxB,SAAW/1B,EAAK+1B,SACrBvxB,KAAKwxB,SAAWh2B,EAAKg2B,SACrBxxB,KAAKyxB,SAAWj2B,EAAKi2B,SACrBzxB,KAAKknB,KAAO1rB,EAAK0rB,KACjBlnB,KAAKmnB,MAAQ3rB,EAAK2rB,MAClBnnB,KAAKonB,WAAa5rB,EAAK4rB,WACvBpnB,KAAK0gB,QAAUllB,EAAKklB,QACpB1gB,KAAK0xB,QAAUl2B,EAAKk2B,QACpB1xB,KAAKkX,MAAQ1b,EAAK0b,MAClBlX,KAAK2xB,MAAQn2B,EAAKm2B,MAClB3xB,KAAK4xB,IAAMp2B,EAAKo2B,IAChB5xB,KAAK+U,SAAWvZ,EAAKuZ,SACrB/U,KAAK6xB,eAAiBr2B,EAAKq2B,eAC3B7xB,KAAK8xB,cAAgBt2B,EAAKs2B,gBA1CrB,EAAAkB,gB,iGCAb,aAEA,EAQI,SAAYx3B,GACI,MAARA,IAIJwE,KAAK+U,SAAWvZ,EAAKuZ,SACrB/U,KAAKgV,SAAWxZ,EAAKwZ,SACrBhV,KAAK0mB,qBAAuBlrB,EAAKkrB,qBACjC1mB,KAAKqyB,KAAO72B,EAAK62B,KACjBryB,KAAKsyB,mBAAqB92B,EAAK82B,mBAE3B92B,EAAKyZ,OACLjV,KAAKiV,KAAOzZ,EAAKyZ,KAAKjP,KAAI,SAAA0L,GAAK,WAAI,EAAAymC,aAAazmC,SApB/C,EAAAmhB,a,oGCAb,MAII,SAAYr3B,GAFZ,KAAA0T,MAAsB,KAGN,MAAR1T,IAGJwE,KAAKsR,IAAM9V,EAAK8V,IAChBtR,KAAKkP,MAAQ1T,EAAK0T,QATb,EAAAipC,gB,sGCAb,MAGI,SAAY38C,GACI,MAARA,IAIJwE,KAAKuG,KAAO/K,EAAK+K,OARZ,EAAAusB,kB,m0DCJb,aAEA,SAEA,QAEA,SAIA,QAEA,cAQI,WAAYzkB,EAAsBoL,QAAA,IAAAA,OAAA,GAAlC,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAK2U,KAAO3U,EAAI2U,KAChB,EAAKzJ,iBAAiB,EAAMlL,EAAK,CAC7BzO,GAAI,KACJqM,IAAK,KACLwvC,SAAU,KACV7a,SAAU,KACVhiC,IAAK,MACN6a,EAAkB,CAAC,KAAM,MAAO,c,EAyC3C,OA9DgC,OAwBtB,YAAAgB,QAAN,SAAcP,EAAeic,G,wGACZ,SAAMn2B,KAAKga,WAAW,IAAI,EAAAwwC,eAAexqD,MAAO,CACzD4gC,SAAU,MACX1mB,EAAOic,I,UAFJ8hB,EAAO,SAIG,MAAZj4C,KAAKpB,IAAL,YAGA,GAFImd,OAAa,IACXF,EAAoB,EAAA7T,MAAMW,OAAemT,2BAI3C,MAAM,IAAIvU,MAAM,qDAFhBwU,EAAgBF,EAAiBG,mB,iBAMlB,O,sBAAA,GAAMD,EAAcE,UAAU/B,I,OAC5B,OADXujB,EAAS,SACE,GAAM1hB,EAAc0uC,eAAezqD,KAAKpB,IAAK6+B,UAAUtH,I,cAAlEu0B,EAAW,SACjBzS,EAAKr5C,IAAM,IAAI,EAAAslC,mBAAmBwmB,G,0CAM1C,MAAO,CAAP,EAAOzS,WAGX,YAAAhhB,iBAAA,WACI,IAAMvpB,EAAI,IAAI,EAAAwlB,eASd,OARAxlB,EAAEsV,KAAOhjB,KAAKgjB,KACdhjB,KAAK6Z,eAAe7Z,KAAM0N,EAAG,CACzB9N,GAAI,KACJqM,IAAK,KACLwvC,SAAU,KACV7a,SAAU,KACVhiC,IAAK,MACN,CAAC,KAAM,MAAO,aACV8O,GAEf,EA9DA,CAAgC,WAAnB,EAAAsoB,c,2GCRb,MAII,SAAY7C,GAHZ,KAAAne,SAAmB,KACnB,KAAA0rB,aAAqB,KAGZvN,IAILnzB,KAAK0gC,aAAevN,EAAGuN,eATlB,EAAAiqB,uB,yrDCJb,WAaA,GATA,KAEA,KAEA,KACA,OACA,KACA,MAEA,OAEA,S,wGCfkE,qCAAwD,Y,mBAAoD,kB,MAApD,0G,yBAAoW,gCAAiE,YAAU,kB,uBAA3B,6BAAiB,4C,yBAAiI,gCAAyD,YAAU,kB,uBAA3B,6BAAiB,4C,yBAAtK,6BAA6D,2CAAgD,iDAA6E,2C,6BAAvD,wD,sBAAuL,6BAA+E,8DAA8C,2BAA+F,oEAAoD,iBAAK,2C,sBAAgB,6BAAgD,8DAA8C,2BAAmG,wEAAwD,iBAAK,2C,sBAAgB,6BAAgD,6HAAkH,2B,sBAAgB,6BAA6C,4GAAsG,2B,sBAAgB,6BAA4C,yJAA8I,2B,sBAAgB,6BAAmD,2HAAqH,2B,sBAAgB,6BAA+C,gLAAqK,2B,sBAAgB,6BAAgD,kIAAuH,2B,sBAAgB,6BAA2C,mIAAwH,2B,sBAAgB,6BAAiD,4LAA4K,2B,sBAAgB,6BAA+C,yJAAyI,2B,sBAAgB,6BAA8C,+LAA+K,2B,sBAAkH,2BAAsC,iFAAiE,kB,yBAAzM,6BAAkG,gDAA+G,8DAA8C,2BAAiG,sEAAsD,iBAAK,2C,8BAAlT,4D,sBAAkU,6BAA+C,8DAA8C,2BAAkG,uEAAuD,iBAAI,iBAAE,2B,sBAAgB,6BAAkH,8DAA8C,2BAAoG,yEAAyD,iBAAI,iBAAE,2B,sBAAgB,6BAAsD,6NAAuN,2B,sBAAgB,6BAA8C,8RAAwR,2B,sBAAgB,6BAA+C,+KAAoK,2B,sBAAgB,6BAA8C,uIAAiI,2B,sBAAgB,6BAAiD,8JAAwJ,2B,sBAAgB,6BAA+C,4HAAsH,2B,sBAAgB,6BAAsD,yLAAmL,2B,sBAAgB,6BAA+C,mMAAmL,2B,sBAAgB,6BAAiD,kPAAuO,2B,sBAAgB,6BAAgD,sWAAoW,2B,sBAAgB,6BAAgD,gRAAgQ,2B,sBAAgB,6BAA+C,mNAAwM,2B,sBAAgB,6BAAqD,+JAAyJ,2B,sBAAgB,6BAAiD,kTAAuS,2BAAM,8BAAe,iBAAO,iBAAE,2B,uBAAgB,6BAAgD,yLAA8K,2B,uBAAgB,6BAAgD,qKAAqJ,2B,uBAAgB,6BAA8C,8FAA8E,2BAAgE,0CAA2B,iBAAK,iDAAiC,2BAAM,2BAAY,iBAAO,uCAAwB,2BAAM,6CAA8B,iBAAQ,0BAAS,4BAAM,4EAA4D,iBAAO,4CAA4B,4BAAM,iCAAiB,iBAAQ,yCAAwB,2B,uBAAgB,6BAAqD,2PAAgP,2B,uBAAgB,6BAAgD,kJAAuI,2B,uBAAgB,6BAAgD,qRAAoQ,2B,uBAAgB,6BAA6C,qMAA0L,2B,uBAAgB,6BAA8C,uMAA4L,2B,uBAAgB,6BAA+C,0LAA+K,2B,uBAAgB,6BAAiD,oNAAyM,2B,uBAAgB,6BAAiD,iMAA2L,2B,uBAAgB,6BAAsD,qMAA+L,2B,uBAAgB,6BAA4C,qOAAyN,2B,uBAAgB,6BAAkD,2FAA2E,2B,uBAAgB,6BAAiD,6IAAkI,2B,uBAAgB,6BAAkD,kNAAuM,2B,uBAAgB,6BAAiD,0JAAyI,2B,uBAAgB,6BAAgD,2JAAgJ,2B,uBAAgB,6BAAgD,gQAAgP,2B,uBAAgB,6BAA4C,wHAAwG,2B,0BAAlyY,qCAAiF,wDAAqS,wDAA8Q,wDAAkL,wDAAmK,yDAA0M,0DAAwL,0DAAoO,0DAAuL,0DAAmL,0DAA6O,0DAAwM,0DAA6O,0DAA2a,0DAA4Q,0DAAmV,0DAA6R,0DAAsV,0DAAmO,0DAA+L,0DAAyN,0DAAqL,0DAAyP,0DAAkP,0DAAwS,0DAAoa,0DAAgU,0DAAuQ,0DAA8N,0DAAsY,2DAA8O,2DAAqN,4DAA+gB,2DAAqT,2DAAuM,2DAAoU,2DAAuP,2DAA0P,2DAA8O,2DAA0Q,2DAA4P,2DAAqQ,2DAAqR,2DAA6I,2DAAmM,2DAAyQ,2DAA0M,2DAAgN,2DAAgT,2DAAoK,mC,6BAAzxY,+DAAuE,0FAAqS,6DAA8Q,6DAAkL,0DAAmK,yDAA0M,gEAAwL,4DAAoO,6DAAuL,wDAAmL,8DAA6O,4DAAwM,2DAA6O,2GAA2a,4DAA4Q,2HAAmV,mEAA6R,2DAAsV,4DAAmO,2DAA+L,8DAAyN,4DAAqL,mEAAyP,4DAAkP,8DAAwS,6DAAoa,6DAAgU,4DAAuQ,kEAA8N,8DAAsY,6DAA8O,6DAAqN,2DAA+gB,kEAAqT,6DAAuM,6DAAoU,0DAAuP,2DAA0P,4DAA8O,8DAA0Q,8DAA4P,mEAAqQ,yDAAqR,+DAA6I,8DAAmM,+DAAyQ,8DAA0M,6DAAgN,6DAAgT,0D,qCDiBz7Z,cAgBI,WAAsBjrD,EAAoCg1B,EAC5Ck2B,EAAwCpyB,EACxCvb,EAAsD0L,GAF9C,KAAAjpB,cAAoC,KAAAg1B,iBAC5C,KAAAk2B,gBAAwC,KAAApyB,SACxC,KAAAvb,uBAAsD,KAAA0L,gBAXpE,KAAAkiC,OAAiB,KAGjB,KAAAtpD,SAAmB,EACnB,KAAAupD,uBAAiC,EAEvB,KAAAp7C,eAAyB,KACzB,KAAAq7C,gBAAyB,CAAC,S,OAM9B,YAAAvqD,SAAN,W,uGAiBiC,OAhB7BR,KAAKgrD,mBACLhrD,KAAKirD,cAAc/X,MAAK,SAACxlC,EAAGC,GACxB,OAAc,MAAVD,EAAE7P,MAA0B,MAAV8P,EAAE9P,MACZ,EAEE,MAAV6P,EAAE7P,MAA0B,MAAV8P,EAAE9P,KACb,EAEG,MAAV6P,EAAE7P,MAA0B,MAAV8P,EAAE9P,KACb,EAGJ,EAAK6B,YAAYkO,SAAW,EAAKlO,YAAYkO,SAASC,QAAQH,EAAE7P,KAAM8P,EAAE9P,MAC3E6P,EAAE7P,KAAKiQ,cAAcH,EAAE9P,SAG/B,EAAAmC,KAA6B,GAAMA,KAAK2oB,cAAcgU,oBAAoB,EAAAvlB,WAAW8zC,oB,cAArF,EAAKJ,sBAAwB,S,YAG3B,YAAAl2B,OAAN,W,0GACI,GAAI50B,KAAK8qD,sBAGL,OAFA9qD,KAAKid,qBAAqBK,UAAU,QAAS,KACzCtd,KAAKN,YAAYnB,EAAE,2CACvB,IAMJ,GAHAyB,KAAKuB,SAAU,EAGE,QADX4pD,EAAWnrD,KAAK4qD,cAAcQ,YAAYprD,KAAK6qD,OAAQ7qD,KAAK0P,iBAK9D,OAHA1P,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,iBACvByB,KAAKuB,SAAU,EACf,IAKJ,GAFMq9B,EAASx6B,SAASy6B,eAAe,UAEzB,OADRC,EAAQF,EAAOE,QACkB,IAAjBA,EAAM9iC,QAAuC,MAArBgE,KAAKqrD,cAA8C,KAAtBrrD,KAAKqrD,cAI5E,OAHArrD,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,eACvByB,KAAKuB,SAAU,EACf,I,GAGA8pD,EAAerrD,KAAKqrD,eACX,MAATvsB,GAAiBA,EAAM9iC,OAAS,GAAhC,Y,iBAEoB,O,sBAAA,GAAMgE,KAAKsrD,gBAAgBxsB,EAAM,K,cAClC,OADTysB,EAAU,YAEZF,EAAeE,G,0CAK3B,GAAoB,MAAhBF,GAAyC,KAAjBA,EAIxB,OAHArrD,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,eACvByB,KAAKuB,SAAU,EACf,I,iBAKc,O,sBADdvB,KAAKi1B,YAAcj1B,KAAK4qD,cAAcY,OAAOL,EAAUE,EAAcrrD,KAAK0P,gBAC5D,GAAM1P,KAAKi1B,a,OACzB,OAAa,OADPpzB,EAAQ,WAEV7B,KAAK6B,MAAMA,GACX7B,KAAKuB,SAAU,EACf,MAEJvB,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,kBACjEyB,KAAKw4B,OAAOkE,SAAS18B,KAAK+qD,iB,kDAG9B/qD,KAAKuB,SAAU,E,YAGnB,YAAAkqD,0BAAA,sBACI,GAAmB,MAAfzrD,KAAK6qD,OACL,OAAO,KAGX,IAAMa,EAAU1rD,KAAK2rD,sBAAsBvuC,OAAOpd,KAAKirD,eAAe18C,QAAO,SAAAxQ,GAAK,OAAAA,EAAE6B,KAAO,EAAKirD,UAChG,OAAIa,EAAQ1vD,OAAS,EACVgE,KAAKN,YAAYnB,EAAE,kBAAmBmtD,EAAQ,GAAG7tD,MAErD,MAGD,YAAAmtD,iBAAV,WACIhrD,KAAK2rD,sBAAwB,EAAH,CAAI,CAC1B/rD,GAAI,KACJ/B,KAAM,MAAQmC,KAAKN,YAAYnB,EAAE,UAAY,QAC3CyB,KAAK4qD,cAAce,uBACzB3rD,KAAKirD,cAAgBjrD,KAAK4qD,cAAcgB,sBAG9B,YAAA/pD,MAAd,SAAoBA,G,0FAChB,SAAM,UAAKgqD,KAAK,CACZC,YAAY,EACZC,gBAAgB,EAChBplD,KAAM,QACNqlD,SAAU,0DACVC,MAAO,WACPC,WAAYrqD,EAAMoP,QAClBk7C,gBAAiB,CACb,SAAY,QAEhBC,UAAWpsD,KAAKN,YAAYnB,EAAE,eAC9Bi2B,KAAMx0B,KAAKN,YAAYnB,EAAE,mBACzB8tD,mBAAmB,EACnBC,kBAAmBtsD,KAAKN,YAAYnB,EAAE,MACtCguD,OAAQ,SAAAC,GACJA,EAAQrnD,cAAc,mBAAmBsnD,SAAS,EAAG,O,cAf7D,S,YAoBI,YAAAnB,gBAAR,SAAwB9M,GAAxB,WACI,OAAO,IAAIlkC,SAAQ,SAACC,EAAS8I,GACzB,IAAMqpC,EAAS,IAAIC,WACnBD,EAAOE,WAAWpO,EAAM,SACxBkO,EAAOrrC,OAAS,SAAAwrC,GACZ,GAAoB,gBAAhB,EAAKhC,QAA0C,cAAdrM,EAAKj4C,KAAsB,CAC5D,IAEMumD,GAFS,IAAIx8C,WACAC,gBAAiBs8C,EAAI3+C,OAAerR,OAAQ,aAC/CsI,cAAc,OAC9B,OAAW,MAAP2nD,OACAvyC,EAAQuyC,EAAIC,kBAGhB1pC,IAIJ9I,EAASsyC,EAAI3+C,OAAerR,SAEhC6vD,EAAOM,QAAU,WACb3pC,S,iCA3JH4pC,GAAe,+N,iCAAfA,EAAe,w5CCrB5B,4BAA0B,yCAAI,Y,mBAAuB,iBAAM,iCAAO,sDAA2H,+CAAY,2CAAY,EAAAr4B,YAA4B,8CAAkB,8CAAoB,8CAAyB,gDAAkB,a,oBAA4B,iBAAS,iDAAgC,+DAAuF,mDAAqF,0DAA0M,kCAAU,kCAAO,kCAAO,kCAAO,6DAAi0Y,8CAAkB,8CAAoB,8CAAyB,iDAAkB,a,oBAAgC,iBAAS,4CAAuG,kCAAO,kCAAO,kCAAO,8CAAyB,iDAA0B,a,oBAAoC,iBAAS,oDAAqE,qEAA8D,iBAAY,kCAAO,kDAAmJ,wC,oBAAsF,6CAAM,a,oBAAuB,iBAAQ,kCAAU,kCAAQ,kB,MAA30b,qEAA8D,4DAAsO,mFAAqE,gDAAoB,oCAAyF,+DAA8E,4EAA4R,6CAAg1Y,sFAA4G,gEAA4G,mFAAkH,sDAA0B,oCAAgH,2EAA6C,4DAA8E,+EAA2D,wE,yRDiBxzb,GAIa,EAAAq4B,oB,+DAAAA,GAAe,E,KAJ3B,EAAAhmD,U,MAAU,CACPnG,SAAU,aACVoG,YAAa,6B,8/DEnBjB,WAaA,GARA,MACA,MACA,KAEA,MAIA,OAEA,QAEA,S,2GCjB8D,4BAAqC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAA4F,0BAAoC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAwE,oC,mBAAmF,Y,mBAA2B,kB,MAAlF,+DAAuD,iF,sBAAghB,6BAAyD,sC,mBAAsF,6CAAsB,Y,mBAAmB,iBAAQ,2C,MAArG,4EAA0E,iE,sBAA2C,6BAAwC,sC,mBAAgG,6CAAsB,Y,mBAAwB,iBAAQ,2C,MAA/G,iFAA+E,sE,yBAAiH,2BAA4H,Y,mBAAyB,kB,4DAAtH,uEAA6F,+E,mDAAz0B,yBAA+B,4CAA6B,mDAA+C,iCAAM,4CAA6B,2CAAyB,mH,oBAAwD,aAAU,iBAAK,yDAAgN,yDAA8M,sCAAK,8CAAO,aAAc,iBAAS,kCAAM,8CAAwB,+CAA0J,kCAAM,kC,+CAAjyB,wCAAqH,+EAA8B,2CAA8B,sEAAgN,qDAA2M,+CAAoJ,4D,yBAApiC,6BAAsC,oD,mBAAkE,Y,wCAA8D,iBAAe,+CAA2D,6CAAQ,iDAAm3B,kCAAS,kCAAS,4C,8BAA5jC,sFAAuC,2HAAkK,kD,yBAA5a,4BAAqC,sDAA6H,yDAA6oC,kC,6BAA/sC,sDAAiF,sD,iBDmBrqB,kBAQI,WAAsB0/B,EAA8B5B,EAChD3N,EAAoCE,GADxC,MAEI,YAAMyN,EAAczN,EAAaF,GAAkB,IAAK,K,OAFtC,EAAAuP,gBAHtB,EAAAsmB,SAAW,IAAI1qD,IACf,EAAA2qD,WAAa,IAAI3qD,I,SAFiC,OAS5C,YAAAhC,SAAN,W,0FACQ,SAAMR,KAAK4lC,e,cAAX,SACA,GAAM,YAAM1nB,KAAI,YADhB,M,OACA,S,mCAIF,YAAAinB,WAAN,W,6GAEQ,O,sBAAA,GAAMnlC,KAAKotD,W,cAAX,S,iDAEAptD,KAAKktD,SAASlqC,KAAO,EACF,GAAMhjB,KAAKopD,iBAD9B,M,OAwBA,OAvBMC,EAAa,SACb,EAAmC,GACnClvC,EAA4B,GAC5B,EAAO,IAAI3X,IACjB6mD,EAAWh8C,SAAQ,SAAA1P,GACf,GAAIA,EAAE4I,OAAS,EAAAwN,WAAWC,QAA0B,MAAhBrW,EAAEkW,MAAMwe,MAAiC,KAAjB10B,EAAEkW,MAAMwe,OAAiB10B,EAAEkW,MAAM0e,UACzF50B,EAAEquC,UAGN,IAAK,IAAIlwC,EAAI,EAAGA,EAAI6B,EAAEkW,MAAMoB,KAAKjZ,OAAQF,IAAK,CAC1C,IAAM4V,EAAI/T,EAAEkW,MAAMoB,KAAKnZ,GACvB,GAAa,MAAT4V,EAAEJ,KAAyB,KAAVI,EAAEJ,IAAY,CAC/B,IAAMnF,EAAW,EAAAnE,MAAM+D,YAAY2F,EAAEJ,KACrC,GAAgB,MAAZnF,GAAoB,EAAK+gD,SAASrpD,IAAIsI,GAAW,CACd,MAA/B,EAAK+gD,SAAShvD,IAAIiO,IAClB,EAAKxI,IAAIhG,EAAEiC,GAAI,EAAKstD,SAAShvD,IAAIiO,IAErC,EAAmB7P,KAAKqB,GACxB,YAKhB,GAAM2c,QAAQK,IAAIR,I,OAAlB,SACAna,KAAK6U,QAAU,EACf7U,KAAKmtD,WAAa,E,mCAIhB,YAAA/D,cAAV,WACI,OAAOppD,KAAK4mC,cAAc6iB,mBAGhB,YAAA2D,QAAd,W,4GACI,OAAIptD,KAAKktD,SAASlqC,KAAO,EACrB,IAEa,GAAMqqC,MAAM,IAAIC,QAAQ,4C,OACzC,GAAwB,OADlB9rD,EAAW,UACJuiB,OACT,MAAM,IAAIxc,MAEO,SAAM/F,EAAS+rD,Q,OACpC,IAAWC,KADLC,EAAe,SAEjB,GAAIA,EAAatxD,eAAeqxD,GAE5B,IAAWE,KADLC,EAAWF,EAAaD,GAEtBG,EAASxxD,eAAeuxD,IAEL,OADbE,EAAUD,EAASD,IACbzhD,KAEQ,OADVE,EAAW,EAAAnE,MAAM+D,YAAY6hD,EAAQ3hD,OAEvCjM,KAAKktD,SAASvpD,IAAIwI,EAAUyhD,EAAQv9C,K,mDAvEvDw9C,GAAgC,sJ,iCAAhCA,EAAgC,+4BCvB7C,4BAA0B,yCAAK,Y,mBAA+B,gCAAiM,iCAAM,iCAAO,wCAAG,a,oBAAkC,iBAAK,gDAA8L,gDAAszC,sFAA2C,kB,MAAtzD,oFAAuC,2DAAyM,gFAA6C,4DAA2M,kD,+JDmBvgB,CAIsD,EAAA7nB,uBAAzC,EAAA6nB,oC,+DAAAA,EAAgC,E,KAJ5C,EAAA5mD,U,MAAU,CACPnG,SAAU,iCACVoG,YAAa,iD,+8DErBjB,WAaA,GARA,MACA,MACA,KAEA,MAIA,OAEA,S,2GCfkE,4BAAqC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAgG,0BAAoC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAwE,oC,mBAAmF,Y,mBAA+B,kB,MAAtF,+DAAuD,qF,mDAA4b,6BAA6E,2CAAyB,mI,mBAAwD,YAAU,iBAAK,0C,0CAA7C,8EAA8B,4C,yBAAyD,2CAAM,YAAU,iBAAQ,iB,uCAAlB,4C,sBAAiC,6BAAyD,sC,mBAAsF,6CAAsB,Y,mBAAmB,iBAAQ,2C,MAArG,4EAA0E,iE,sBAA2C,6BAAwC,sC,mBAAgG,6CAAsB,Y,mBAAwB,iBAAQ,2C,MAA/G,iFAA+E,sE,yBAA1vB,yBAA+B,4CAA6B,mDAA+C,iCAAM,4CAA6B,wDAA6L,uFAAiE,yDAAgN,yDAA8M,sCAAK,8CAAO,aAAc,iBAAS,kCAAM,8CAAwB,gDAAmC,a,oBAAiE,iBAAQ,kCAAM,mC,gEAAj5B,wCAAiF,0EAA4C,cAAkN,sEAAgN,qDAA2M,+CAAwF,wH,yBAA9oC,6BAAsC,oD,mBAAsE,Y,wCAAkE,iBAAe,+CAA2D,6CAAQ,kDAAm+B,kCAAS,kCAAS,4C,8BAAprC,0FAA2C,+HAAsK,kD,yBAAxb,4BAAqC,sDAAiI,yDAAqwC,kC,6BAA30C,sDAAqF,sD,iBDiBjrB,kBAOI,WAAsB0/B,EAA8B5B,EAChD3N,EAAoCE,GADxC,MAEI,YAAMyN,EAAczN,EAAaF,GAAkB,IAAK,K,OAFtC,EAAAuP,gB,SAH0B,OAQ1C,YAAApmC,SAAN,W,0FACQ,SAAMR,KAAK4lC,e,cAAX,SACA,GAAM,YAAM1nB,KAAI,YADhB,M,OACA,S,mCAIF,YAAAinB,WAAN,W,2GACuB,SAAMnlC,KAAKopD,iB,cAAxBC,EAAa,SACbyE,EAAqC,GAC3C9tD,KAAK+tD,eAAiB,IAAIvrD,IAC1B6mD,EAAWh8C,SAAQ,SAAA1P,GACXA,EAAE4I,OAAS,EAAAwN,WAAWC,OAA6B,MAApBrW,EAAEkW,MAAMmB,UAAyC,KAArBrX,EAAEkW,MAAMmB,UAAmBrX,EAAEquC,YAG5F8hB,EAAqBxxD,KAAKqB,GACtB,EAAKowD,eAAelqD,IAAIlG,EAAEkW,MAAMmB,UAChC,EAAK+4C,eAAepqD,IAAIhG,EAAEkW,MAAMmB,SAAU,EAAK+4C,eAAe7vD,IAAIP,EAAEkW,MAAMmB,UAAY,GAEtF,EAAK+4C,eAAepqD,IAAIhG,EAAEkW,MAAMmB,SAAU,OAG5Cg5C,EAAwBF,EAAqBv/C,QAAO,SAAA5Q,GACtD,SAAKowD,eAAelqD,IAAIlG,EAAEkW,MAAMmB,WAAa,EAAK+4C,eAAe7vD,IAAIP,EAAEkW,MAAMmB,UAAY,KAC7FhV,KAAK6U,QAAUm5C,E,YAGT,YAAA5E,cAAV,WACI,OAAOppD,KAAK4mC,cAAc6iB,mBAGpB,YAAAC,gBAAV,SAA0B/rD,GAEtB,OAAO,G,iCAxCFswD,GAA8B,sJ,iCAA9BA,EAA8B,mzBCrB3C,4BAA0B,yCAAK,Y,mBAAmC,gCAAiM,iCAAM,iCAAO,wCAAG,a,oBAAsC,iBAAK,gDAA8L,gDAAk7C,sFAA2C,kB,MAA17D,wFAA2C,2DAAyM,oFAAiD,4DAA2M,kD,+JDiB/gB,CAIoD,EAAAjoB,uBAAvC,EAAAioB,kC,+DAAAA,EAA8B,E,KAJ1C,EAAAhnD,U,MAAU,CACPnG,SAAU,8BACVoG,YAAa,8C,i9DEnBjB,WAWA,GANA,MACA,MACA,KAEA,MAEA,OAIA,S,2GCfoE,4BAAqC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAkG,0BAAoC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAwE,oC,mBAAmF,Y,mBAAiC,kB,MAAxF,+DAAuD,uF,sBAAkiB,6BAAyD,sC,mBAAsF,6CAAsB,Y,mBAAmB,iBAAQ,2C,MAArG,4EAA0E,iE,sBAA2C,6BAAwC,sC,mBAAgG,6CAAsB,Y,mBAAwB,iBAAQ,2C,MAA/G,iFAA+E,sE,mDAA5lB,yBAA+B,4CAA6B,mDAA+C,iCAAM,4CAA6B,2CAAyB,mH,oBAAwD,aAAU,iBAAK,yDAAgN,yDAA8M,sCAAK,8CAAO,aAAc,iBAAS,kCAAM,kC,+CAAzmB,wCAAqH,+EAA8B,2CAA8B,sEAAgN,qDAA2M,gD,yBAA55B,6BAAsC,oD,mBAAwE,Y,wCAAoE,iBAAe,+CAA2D,6CAAQ,iDAA2rB,kCAAS,kCAAS,4C,8BAAh5B,4FAA6C,iIAAwK,kD,yBAA9b,4BAAqC,sDAAmI,yDAAi+B,kC,6BAAziC,sDAAuF,sD,iBDiBvrB,kBAKI,WAAsB0/B,EAA8B5B,EAChD3N,EAAoCE,GADxC,MAEI,YAAMyN,EAAczN,EAAaF,GAAkB,IAAK,K,OAFtC,EAAAuP,gB,SAD4B,OAM5C,YAAApmC,SAAN,W,0FACQ,SAAMR,KAAK4lC,e,cAAX,SACA,GAAM,YAAM1nB,KAAI,YADhB,M,OACA,S,mCAIF,YAAAinB,WAAN,W,kGACuB,SAAMnlC,KAAKopD,iB,cAAxBC,EAAa,SACb6E,EAAmB7E,EAAW96C,QAAO,SAAA5Q,GACvC,QAAIA,EAAE4I,OAAS,EAAAwN,WAAWC,QAAUrW,EAAEkW,MAAM0e,SAAW50B,EAAEquC,YAGlDruC,EAAEkW,MAAMoB,KAAKud,MAAK,SAAA9gB,GAAK,OAAS,MAATA,EAAEJ,KAA4C,IAA7BI,EAAEJ,IAAI5E,QAAQ,iBAEjE1M,KAAK6U,QAAUq5C,E,YAGT,YAAA9E,cAAV,WACI,OAAOppD,KAAK4mC,cAAc6iB,mB,iCAxBrB0E,GAAgC,sJ,iCAAhCA,EAAgC,guBCrB7C,4BAA0B,yCAAK,Y,mBAAqC,gCAAiM,iCAAM,iCAAO,wCAAG,a,oBAAwC,iBAAK,gDAA8L,gDAAgpC,sFAA2C,kB,MAA5pD,0FAA6C,2DAAyM,sFAAmD,4DAA2M,kD,+JDiBnhB,CAIsD,EAAAnoB,uBAAzC,EAAAmoB,oC,+DAAAA,EAAgC,E,KAJ5C,EAAAlnD,U,MAAU,CACPnG,SAAU,gCACVoG,YAAa,gD,68DEnBjB,WAcA,GATA,MACA,MACA,MACA,KAEA,MAIA,OAEA,S,mHChBgE,4BAAqC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAA8F,0BAAoC,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,sBAAwE,oC,mBAAmF,Y,mBAA6B,kB,MAApF,+DAAuD,mF,mDAAsb,6BAA6E,2CAAyB,mI,mBAAwD,YAAU,iBAAK,0C,0CAA7C,8EAA8B,4C,yBAAyD,2CAAM,YAAU,iBAAQ,iB,uCAAlB,4C,sBAAiC,6BAAyD,sC,mBAAsF,6CAAsB,Y,mBAAmB,iBAAQ,2C,MAArG,4EAA0E,iE,sBAA2C,6BAAwC,sC,mBAAgG,6CAAsB,Y,mBAAwB,iBAAQ,2C,MAA/G,iFAA+E,sE,yBAA1vB,yBAA+B,4CAA6B,mDAA+C,iCAAM,4CAA6B,wDAA6L,uFAAiE,yDAAgN,yDAA8M,sCAAK,8CAAO,aAAc,iBAAS,kCAAM,8CAAwB,6CAAgE,a,oBAA4C,iBAAQ,kCAAM,mC,gEAAz5B,wCAAiF,0EAA4C,cAAkN,sEAAgN,qDAA2M,+CAA2D,8FAA0D,sG,yBAAvqC,6BAAsC,oD,mBAAoE,Y,wCAAgE,iBAAe,+CAA2D,6CAAQ,kDAA2+B,kCAAS,kCAAS,4C,8BAAxrC,wFAAyC,6HAAoK,kD,yBAAlb,4BAAqC,sDAA+H,yDAAywC,kC,6BAA70C,sDAAmF,sD,iBDkB3qB,kBAUI,WAAsB0/B,EAAwCK,EAC1DjC,EAA4B3N,EAC5BE,GAFJ,MAGI,YAAMyN,EAAczN,EAAaF,GAAkB,IAAK,K,OAHtC,EAAAuP,gBAAwC,EAAAK,4BAJ9D,EAAAmnB,oBAAsB,IAAI5rD,IAElB,EAAA6rD,sBAAwB,IAAI7rD,I,SAJU,OAYxC,YAAAhC,SAAN,W,0FACQ,SAAMR,KAAK4lC,e,cAAX,SACA,GAAM,YAAM1nB,KAAI,YADhB,M,OACA,S,mCAIF,YAAAinB,WAAN,W,6GACuB,SAAMnlC,KAAKopD,iB,cAAxBC,EAAa,SACbiF,EAAoC,GACpCC,EAAqB,SAAC5wD,GACxB,OAA2B,MAApBA,EAAEkW,MAAMkB,UAAgD,KAA5BpX,EAAEkW,MAAMkB,SAASxI,QAElDiiD,EAAc,SAAC7wD,GACjB,OAAOA,EAAEkW,MAAMmB,SAAW,SAAWu5C,EAAmB5wD,GAAKA,EAAEkW,MAAMkB,SAAW,KAGpFs0C,EAAWh8C,SAAQ,SAAA1P,GACf,GAAIA,EAAE4I,OAAS,EAAAwN,WAAWC,OAA6B,MAApBrW,EAAEkW,MAAMmB,UAAyC,KAArBrX,EAAEkW,MAAMmB,WAAmBrX,EAAEquC,UAA5F,CAGA,IAAMyiB,EAAcF,EAAmB5wD,GACjC+wD,EAAWF,EAAY7wD,GAC7B,IAAK,EAAK0wD,sBAAsBxqD,IAAI6qD,GAAW,CAC3C,IAAI9b,EAAsB,GAC1B,GAAI6b,EAAa,CACb,IAAM5b,EAAal1C,EAAEkW,MAAMkB,SAASrI,QAAQ,KAExCkmC,EADAC,GAAc,EACFD,EAAUx1B,OAClBzf,EAAEkW,MAAMkB,SAASxL,OAAO,EAAGspC,GAAYtmC,OAAO5E,cAAcyF,MAAM,iBACjEmB,QAAO,SAAAzS,GAAK,OAAAA,EAAEE,QAAU,KAEjB2B,EAAEkW,MAAMkB,SAASxI,OAAO5E,cAAcyF,MAAM,gBACnDmB,QAAO,SAAAzS,GAAK,OAAAA,EAAEE,QAAU,KAGrC,IAAMa,EAAS,EAAKoqC,0BAA0BoL,iBAAiB10C,EAAEkW,MAAMmB,SACnE49B,EAAU52C,OAAS,EAAI42C,EAAY,MACvC,EAAKyb,sBAAsB1qD,IAAI+qD,EAAU7xD,EAAO03B,OAEpD,IAAMA,EAAQ,EAAK85B,sBAAsBnwD,IAAIwwD,GAChC,MAATn6B,GAAiBA,GAAS,IAC1B,EAAK65B,oBAAoBzqD,IAAIhG,EAAEiC,GAAI,EAAK+uD,SAASp6B,IACjD+5B,EAAoBhyD,KAAKqB,QAGjC2wD,EAAoBpb,MAAK,SAACxlC,EAAGC,GACzB,OAAO,EAAK0gD,sBAAsBnwD,IAAIswD,EAAY9gD,IAC9C,EAAK2gD,sBAAsBnwD,IAAIswD,EAAY7gD,OAEnD3N,KAAK6U,QAAUy5C,E,YAGT,YAAAlF,cAAV,WACI,OAAOppD,KAAK4mC,cAAc6iB,mBAGpB,YAAAC,gBAAV,SAA0B/rD,GAEtB,OAAO,GAGH,YAAAgxD,SAAR,SAAiBp6B,GACb,OAAQA,GACJ,KAAK,EACD,MAAO,CAAC,SAAU,WACtB,KAAK,EACD,MAAO,CAAC,OAAQ,WACpB,KAAK,EACD,MAAO,CAAC,OAAQ,WACpB,QACI,MAAO,CAAC,WAAY,Y,iCAlFvBq6B,GAA4B,uM,iCAA5BA,EAA4B,qxBCtBzC,4BAA0B,yCAAK,Y,mBAAiC,gCAAiM,iCAAM,iCAAO,wCAAG,a,oBAAoC,iBAAK,gDAA8L,gDAAo7C,sFAA2C,kB,MAAx7D,sFAAyC,2DAAyM,kFAA+C,4DAA2M,kD,+JDkB3gB,CAIkD,EAAA5oB,uBAArC,EAAA4oB,gC,+DAAAA,EAA4B,E,KAJxC,EAAA3nD,U,MAAU,CACPnG,SAAU,4BACVoG,YAAa,4C,w+DEpBjB,WAWA,GATA,KACA,MACA,MACA,KACA,KACA,KAIA,Q,0HCXuX,4BAAsB,YAAe,kB,6BAAf,mD,qBAAgX,sB,qBAAmF,sB,mDAA0M,6BAAoD,2CAAiH,sC,mBAAkH,8CAAsB,Y,mBAA8B,iBAAO,iBAAK,qDAA2E,+HAA4G,a,oBAAgB,iBAAU,kC,mFAAhV,uFAAqF,2EAAwJ,qEAAuC,sBAAkC,+D,mDAA4E,4BAAkD,mDAAqG,6H,mBAAqG,sCAA0F,sC,mBAAgI,kCAAU,kC,kFAA5W,mFAAkE,oDAAqC,sBAAsE,gDAAgI,6EAA9B,mC,mDAAj0C,yBAA0C,4CAA6B,6CAAmF,6CAA2F,iCAAM,4CAAkB,+CAAqB,6CAAyB,+GAAsB,aAAc,iBAAK,mDAA+iB,kCAAO,8CAAO,aAAc,iBAAS,kCAAM,kDAAse,kC,+CAAxzC,mDAA4F,kDAAyI,+CAAyB,+DAAujB,+CAA6D,iD,yBAA3jC,+BAAqF,4CAAQ,+CAA06C,iCAAS,kC,6BAAj6C,6D,sBAA06C,0BAAwB,yCAAI,Y,mBAA0B,iBAAM,+CAAkC,Y,mBAAiB,iBAAS,2CAA6E,iDAAoC,a,oBAAwB,iBAAS,mC,MAA9O,uEAAkE,8DAA2I,uE,yBAA0E,gCAAsG,sC,mBAAsF,2CAAM,Y,mBAAiB,iBAAQ,kC,8CAAlK,mCAA8E,6EAA2D,+DDavmF,kBAOI,WAAY0/B,EAA8BlnC,EACtCqc,EAA8Bwb,EAC9Bta,EAA4C2C,GAFhD,MAGI,YAAMgnB,EAAelnC,EAAaqc,EAAewb,EAAata,EAAsB2C,EAAYzgB,SAAO,K,OAL3G,EAAAmoC,UAAW,E,SAD2B,OAStB,YAAAunB,SAAhB,SAAyBt4B,G,iGACjBv2B,KAAKgtC,sBAAsBzW,GAC3B,GAAMv2B,KAAK8uD,yBAAyBv4B,GAAY,IADhD,M,OACA,S,mCAIE,YAAAyW,sBAAV,SAAgCzW,GAC5B,OAAyB,MAAlBA,EAAW33B,KAA6C,MAA9BoB,KAAKmS,OAAOzC,gB,iCAhBxCq/C,GAAoB,gO,iCAApBA,EAAoB,2pECjBjC,4BAA0G,4CAAmE,+CAAkC,2CAAY,EAAAn6B,YAAyD,4CAA2B,2CAA+C,a,oBAAyB,iCAA8C,kCAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,mDAAyhD,iDAAiR,kCAAO,+CAA2B,oDAAqO,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAQ,kCAAO,kCAAO,kB,MAA3iF,0DAAyH,+EAAiC,6CAAqG,oFAAkK,uEAAk/C,gDAAiY,gDAA8N,mE,oKDavtF,CAI0C,wBAA7B,EAAAm6B,wB,+DAAAA,EAAoB,E,KAJhC,EAAA9nD,U,MAAU,CACPnG,SAAU,wBACVoG,YAAa,kC,++DEfjB,WAqBA,GAfA,KAEA,KACA,MACA,MACA,KACA,OACA,KACA,MACA,OACA,KAKA,Q,0K1GrB6sB,6BAAyD,sC,mBAAsF,8CAAsB,Y,mBAAmB,iBAAQ,2C,MAArG,4EAA0E,iE,sBAAyO,6BAAgD,sC,mBAA+H,8CAAsB,Y,mBAA+B,iBAAQ,2C,MAA7H,wFAAsF,6E,yBAAnY,6BAAwC,sC,mBAAgG,8CAAsB,Y,mBAAwB,iBAAQ,uDAA4P,4C,4DAA3W,iFAA+E,qEAA+C,gE,mDAAq9B,2BAA+C,yIAAmC,WAAY,eAAqC,sCAAqD,Y,mBAA0B,iB,MAA1B,gF,mDAA+B,2BAA+C,qIAA+B,uBAAwB,WAA2C,sCAAqD,Y,mBAAkC,iB,MAAlC,wF,mDAAuC,2BAAyE,8IAAqC,sCAA8D,Y,mBAAoB,iB,MAApB,0E,mDAAn3B,6BAAmE,2CAA+C,wIAAmC,WAAY,eAAc,sCAAqD,Y,mBAA0B,iBAAK,6CAAuN,8CAA6O,+CAAqM,2C,+DAAxqB,+EAA2I,mDAA2N,+DAA6K,uD,mDAAqU,2BAA8H,4HAAoB,sCAAuD,Y,mBAAmB,iB,MAAnB,yE,mDAAwB,2BAA0G,4HAAoB,sCAAoE,Y,mBAAgC,iB,MAAhC,sF,mDAAqC,2BAAwF,kIAA0B,sCAAqD,Y,mBAAyB,iB,MAAzB,+E,mDAA8B,2BAAwF,6HAAqB,sCAA2D,Y,mBAAuB,iB,MAAvB,6E,mDAA4B,2BAA+C,8HAA0C,sCAAoD,Y,mBAAqB,iB,MAArB,2E,mDAAzjH,yBAAuC,2CAAI,kHAAsD,8CAAuB,0EAAvB,iBAA4D,iCAAM,2CAAI,kHAAkD,kDAA+C,kCAAM,6CAAI,kHAAkD,6CAAqC,mH,oBAAwD,aAAU,iBAAK,yDAAgN,0DAA0c,sCAAK,iDAAmB,aAAc,iBAAS,kCAAM,8CAAgC,+CAAuC,kD,oBAAuM,wCAAmD,kCAAU,+CAAqF,0DAA45B,6CAA+C,kHAA0B,wCAAyD,a,oBAAyB,iBAAK,+CAAiO,+CAAuO,+CAAqM,+CAAoM,+CAAuK,6CAA2D,6GAAqB,wCAAuD,a,oBAA0D,iBAAK,kCAAO,kCAAO,kCAAM,kC,+CAArrH,iDAAiH,wCAA0J,gFAA8B,2CAA8B,sEAAgN,qDAAmd,+CAAsQ,sFAAsM,8EAA+gC,gFAA8E,uGAAiO,qFAAuO,mEAAqM,qEAAyN,gDAAyO,4G,mDAAv6H,8BAA4K,+FAAyB,4CAAQ,+CAAmzH,iCAAS,iC,yDAAj6H,yCAA4B,wCAA2F,0C,sBAA02H,6BAA+B,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,mDAA4G,gCAAQ,6FAA0E,sCAAgC,Y,mBAAoB,iB,MAApB,kE,yBAAlL,6BAA8B,wCAAG,Y,mBAA0B,iBAAK,kDAAgJ,2C,8BAA/K,uEAA8F,kD,yBAAxX,6BAAuD,uDAAkM,uDAAgO,kC,8BAAnZ,8CAAkM,8C,yBAA12I,6BAAgF,gDAAkhI,8CAAge,2C,kBAAv7I,6CAA8+H,+C0GuBznI,kBAYI,WAAY2iC,EAA8BnV,EAAgCh1B,EACtEud,EAA4C2pB,EACpChnB,EAAwBsnB,EAA4BF,EAC5DzP,EAA0BuS,GAH9B,MAII,YAAMD,EAAenV,EAAgBh1B,EAAaud,EAAsB2pB,EACpEM,EAAcF,EAAazP,EAAauS,IAAwB,K,OAH5D,EAAAlqB,aATF,EAAAovC,gBAAkB,IAAI,EAAAnoC,aAGhC,EAAAooC,cAAe,EAEL,EAAA5F,WAA2B,G,SANH,OAgB5B,YAAAnrC,KAAN,SAAW3P,G,YAAA,IAAAA,MAAA,M,yGACHvO,KAAK4kB,aAAailC,yBAClB7pD,KAAKivD,aAAejvD,KAAK4kB,aAAao1B,UACtC,EAAAh6C,KAAkB,GAAMA,KAAK4mC,cAAcsoB,6BAA6BlvD,KAAK4kB,aAAahlB,MAF1F,M,cAEA,EAAKypD,WAAa,S,aAEC,OAAnB,EAAArpD,KAAmB,GAAMA,KAAK4mC,cAAc6iB,mB,OAA5C,EAAKJ,WAAc,SAA4C96C,QAAO,SAAA5Q,GAAK,OAAAA,EAAE+R,iBAAmB,EAAKkV,aAAahlB,M,iBAEtH,SAAMI,KAAK6pC,cAAcslB,aAAanvD,KAAK4kB,aAAahlB,GAAII,KAAKqpD,a,OACjE,OADA,SACA,GAAMrpD,KAAKovD,YAAY7gD,I,cAAvB,SACAvO,KAAK6vC,QAAS,E,YAGZ,YAAAuf,YAAN,SAAkB7gD,G,YAAA,IAAAA,MAAA,M,uGACVvO,KAAK4kB,aAAailC,wBAClB,GAAM,YAAMuF,YAAW,UAAC7gD,IADxB,M,cACA,S,aAGA,OADMwE,EAAI,SAACpV,GAAkB,OAAAA,EAAE+R,iBAAmB,EAAKkV,aAAahlB,KAAiB,MAAV2O,GAAkBA,EAAO5Q,KACpG,GAAM,YAAMyxD,YAAW,UAACr8C,I,OAAxB,S,mCAIF,YAAA5F,OAAN,SAAaoQ,G,YAAA,IAAAA,MAAA,M,mFACT,SAAM,YAAMpQ,OAAM,UAACoQ,EAASvd,KAAKqpD,a,cAAjC,S,YAEJ,YAAApmB,OAAA,SAAOtlC,GACHqC,KAAKgvD,gBAAgBrnC,KAAKhqB,IAGpB,YAAAsuC,aAAV,SAAuBrsC,GACnB,OAAKI,KAAK4kB,aAAailC,wBAGhB7pD,KAAKirC,QAAUjrC,KAAK4f,WAAW0qC,kBAAkB1qD,GAAMI,KAAK4f,WAAW2qC,qBAAqB3qD,GAFxF,YAAMqsC,aAAY,UAACrsC,EAAII,KAAKirC,UAKjC,YAAA+B,sBAAV,SAAgCrvC,GAC5B,OAAOqC,KAAK4kB,aAAailC,yBAA2BlsD,EAAEsvC,mB,iCApDjDE,GAAgB,4X,iCAAhBA,EAAgB,swE1G3B7B,uCAAklJ,iB,KAAnkJ,4D,wO0GuBf,CAIsC,oBAAzB,EAAAA,oB,+DAAAA,EAAgB,E,KAJ5B,EAAAlmC,U,MAAU,CACPnG,SAAU,wBACVoG,YAAa,0C,oQAGH8nD,gBAAe,E,KAAxB,EAAAtmC,Y,kdC5BL,WAYA,GAPA,MACA,MACA,KACA,KAIA,S,4GCZsW,4BAAsB,YAAe,kB,6BAAf,mD,mDAAuS,6BAAuE,gDAAsB,wFAAmB,MAAyC,Y,mBAAuB,iBAAU,gDAAsB,wFAAmB,MAA0C,Y,mBAAyB,iBAAU,iC,MAAvJ,4EAAoH,+E,sBAAiD,0BAAkD,Y,mBAAiC,kB,MAAjC,uF,mDAA4I,4BAAiD,4GAAoB,4CAAiC,+CAAuB,0EAAvB,iBAA6F,iCAAM,yCAAK,YAAW,iBAAM,iC,oCAA1E,4EAAxB,kCAAiF,qD,yBAAlT,+BAA4F,4CAAQ,+CAAqO,iCAAS,kC,6BAA5N,sDDcjrC,kBAKI,WAAYqe,EAAsC9pB,EAC9Cvd,EAA0BknC,G,OAC1B,YAAMG,EAAmB9pB,EAAsBvd,EAAaknC,IAAc,K,OAHxC,OAMtC,YAAA1kB,YAAA,WACIliB,KAAK2qC,WAAU,IAGnB,YAAA0W,MAAA,SAAM1jD,EAAmB4uC,GACpB5uC,EAAU+uC,QAAoB,MAAVH,GAAmB5uC,EAAU+uC,QAAUH,GAGhE,YAAA5B,UAAA,SAAU4B,GAAV,WACIvsC,KAAK6S,YAAYxF,SAAQ,SAAA1P,GAAK,SAAK0jD,MAAM1jD,EAAG4uC,O,iCAfvC8iB,GAAoB,+J,iCAApBA,EAAoB,inC,GAAA,MClBjC,4BAA0G,4CAAmE,+CAAkC,2CAAY,EAAAz6B,YAAwC,4CAA2B,2CAA+C,a,oBAAyB,iCAA8C,kCAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,0CAAG,a,oBAA4B,iBAAK,+CAAqB,2CAAI,a,oBAAwB,iBAAM,kDAAuT,kCAAO,gDAA0F,mDAA2V,kCAAO,+CAA2B,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAiB,iBAAQ,kCAAU,kDAA6E,a,oBAAmB,iBAAU,kCAAO,kCAAQ,kCAAO,kCAAO,kB,4BAA7iD,0DAAwG,gFAAiC,6CAAqG,oFAAwH,4EAA0D,uEAA2D,wEAAuS,0EAAsI,wEAAoY,kDAA4D,+EAA2D,gEAAgH,oE,iQDcxtD,CAI0C,wBAA7B,EAAAy6B,wB,+DAAAA,EAAoB,E,KAJhC,EAAApoD,U,MAAU,CACPnG,SAAU,wBACVoG,YAAa,kC,48DEhBjB,WASA,GAPA,KACA,MACA,MACA,KACA,MACA,KAEA,QACA,SAGA,SAEA,S,qLhFf6sB,2BAAmE,0CAAyB,kGAA6B,sCAAsC,Y,mBAAuB,iBAAK,iC,gCAAvL,mEAA2J,4E,mDAAkC,2BAA2D,0CAAyB,8FAAyB,sCAAyC,Y,mBAAmB,iBAAK,iC,gCAA1K,+DAAkJ,wE,sBAAo6B,2BAAuC,sC,mBAAsF,8CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,qHAA6f,2BAA6K,oI,mBAA2B,iB,+DAA1J,qEAAoC,6F,qBAAuM,sB,mDAA4G,2BAAgE,sI,mBAAuF,sCAAsD,iC,KAAhH,wE,sBAAgN,6BAAuF,2C,gEAA3K,4BAAoF,wDAAuG,kC,kFAAxF,kDAAoC,8D,mDAAh2B,2BAAsG,6CAAqB,6CAA6M,2CAA4C,wHAAgC,6CAAuF,YAAgB,iBAAK,+CAAkN,kCAAO,gDAAiM,kC,+CAA53B,gGAAiG,sDAAyR,0DAAmF,wDAA0J,8CAAsH,+E,yBAA3vB,+CAAg6B,iB,uBAA94B,0C,sBAA65B,6BAA0F,2C,mDAA50C,6BAAmC,4CAAoB,Y,mBAAqB,2BAAoD,6F,mBAA6D,sCAAoD,iCAAK,kCAAM,6CAA2B,uFAA29B,0DAA0G,kCAAM,2C,qDAA3yC,0EAA+F,sFAA2mC,mDAAoC,mE,mDAAsW,2BAA6K,oI,mBAA2B,iB,+DAA1J,qEAAoC,6F,qBAA2M,sB,sBAA4L,6BAA2F,2C,yBAA/K,4BAAoF,wDAA2G,kC,iFAA5F,kDAAwC,8D,mDAA5mB,2BAA4F,6CAA6M,2CAA4C,4HAAoC,6CAAmF,YAAgB,iBAAK,8CAAqM,kC,+CAApoB,kFAA8D,sDAA6R,0DAA+E,wDAAuD,+E,yBAAngB,+CAA4qB,iB,uBAA1pB,0C,sBAAyqB,6BAAkG,2C,yBAA19B,6BAA4E,yCAAI,Y,mBAAwB,iBAAM,2CAA2B,qFAA+uB,0DAAkH,kCAAM,4C,iDAAh6B,qEAAuzB,kDAAwC,uE,yBAA/zE,6BAA8B,0DAAk3C,yDAAggC,2C,6BAAn2E,kDAAk3C,4FgFiB3hH,kBAOI,WAAY6/B,EAAsCF,EAC9C0S,EAAgChiB,EACxB3X,EAAgClgB,GAF5C,MAGI,YAAMqnC,EAAmBF,EAAe0S,EAAgBhiB,IAAY,K,OAD5D,EAAA3X,aAAgC,EAAAlgB,c,SALR,OAS9B,YAAAoqD,gBAAN,W,+GACS9pD,KAAK4kB,aAAailC,wBAAnB,MACA,GAAM,YAAMC,gBAAe,UAAC9pD,KAAK4kB,aAAahlB,K,OAC9C,OADA,SACA,I,OAGgB,SAAMI,KAAK4f,WAAW0vC,eAAetvD,KAAK4kB,aAAahlB,K,cACxD,OADbiT,EAAc,WAC2B,MAApBA,EAAYrX,MAAgBqX,EAAYrX,KAAKQ,QAC9DuzD,EAAoB18C,EAAYrX,KAAKwK,KAAI,SAAA7H,GAC3C,WAAI,EAAAkzB,WAAW,IAAI,EAAAsB,eAAex0B,OACtC,EAAA6B,KAAmB,GAAMA,KAAK+mC,kBAAkByoB,YAAYD,KAH5D,M,cAGA,EAAK18C,YAAc,S,aAEnB7S,KAAK6S,YAAc,G,iBASE,OANnB48C,EAAuB,IAAI,EAAAx8C,gBACZpV,KAAOmC,KAAKN,YAAYnB,EAAE,cAC/CkxD,EAAqB7vD,GAAK,aAC1B6vD,EAAqB//C,eAAiB1P,KAAK4kB,aAAahlB,GACxD6vD,EAAqBt+B,UAAW,EAChCnxB,KAAK6S,YAAYvW,KAAKmzD,GACtB,EAAAzvD,KAAyB,GAAMA,KAAK+mC,kBAAkB2oB,aAAa1vD,KAAK6S,c,cAAxE,EAAK88C,kBAAoB,S,YAG7B,YAAAC,SAAA,SAASC,GACL,YAAMD,SAAQ,UAACC,EAAU,SAG7B,YAAAC,YAAA,SAAYD,GACR,OAAO,YAAMC,YAAW,UAACD,EAAU,S,iCAtC9BlW,GAAkB,8N,iCAAlBA,EAAkB,09DhFrB/B,4BAAiC,4CAAiC,Y,mBAAqB,0B,mBAAoJ,qCAA2D,iCAAK,kCAAO,8CAAwB,gDAAoH,mEAAwB,2BAAU,EAAAD,uB,oBAAtJ,iBAA4M,6CAA2B,6CAAuC,4CAAyB,wCAAS,EAAA/O,eAAc,uCAAoC,a,oBAAsB,iBAAK,kCAAM,gDAAiM,gDAAoL,kCAAM,2CAAI,a,oBAAkB,iBAAM,6CAA2B,6CAA6D,4CAAyB,wCAAS,EAAAiP,WAAA,uBAA+B,wCAAuC,a,oBAAuB,iBAAK,kCAAM,6CAA4D,4CAAyB,wCAAS,EAAAA,WAAA,sBAA8B,wCAA6C,a,oBAAsB,iBAAK,kCAAM,6CAAgE,4CAAyB,wCAAS,EAAAA,WAAA,0BAAkC,wCAA2C,a,oBAA0B,iBAAK,kCAAM,6CAAkE,4CAAyB,wCAAS,EAAAA,WAAA,4BAAoC,wCAA+C,a,oBAA4B,iBAAK,kCAAM,kCAAM,+CAAoL,0DAAg6E,kCAAO,kCAAO,kB,MAAx+I,2EAAkI,uFAA2J,8GAA+F,qCAAuH,6EAAuH,4EAA8E,oDAA6L,gDAAqJ,iEAAuD,mGAAiK,6EAAsC,kGAAqK,4EAAqC,sGAA2K,gFAAyC,wGAAmL,kFAAiD,8CAA+L,+C,oNgFiB3oE,CAIwC,sBAA3B,EAAAD,sB,+DAAAA,EAAkB,E,KAJ9B,EAAA1yC,U,MAAU,CACPnG,SAAU,0BACVoG,YAAa,4C,+oDCnBjB,WAUA,GAJA,KAEA,KACA,OACA,QAMA,GAJA,MAEA,OAEA,QACA,SACA,SACA,S,GACA,O,wNCpBoY,+BAA2C,2FAAwD,sCAAqD,Y,mBAA0B,iB,MAA1B,gF,mDAAoC,+BAA2C,4FAAyD,sCAAoE,Y,mBAA+B,iB,MAA/B,qF,mDAAyC,gCAA8B,8FAA0D,sCAAoD,Y,mBAA6B,iB,MAA7B,mF,oEDsB75B,iBAcI,WAAoBwtB,EAAwCh1B,EAChDslC,EAAoC8E,GAD5B,KAAApV,iBAAwC,KAAAh1B,cAChD,KAAAslC,eAAoC,KAAA8E,0B,OAE1C,YAAAimB,WAAN,W,yGACS,SAAM/vD,KAAKgwD,kB,OAAhB,OAAK,SAKsB,KADrBC,EAAcjwD,KAAKkwD,iBAAiBtjB,kBAC1B5wC,QACZgE,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,oBACvB,KAGY,GAAMyB,KAAKglC,aAAaviC,YAAY,EAAA0tD,oBAAqBnwD,KAAKowD,oBAAoB,SAAA7qB,GAC9FA,EAAKwG,UAAY,EAAKd,QACtB1F,EAAK8qB,UAAYJ,EACjB1qB,EAAK3gB,aAAe,EAAKA,aACzB2gB,EAAK+qB,UAAU9rD,WAAU,gD,kDAErB,OADAihC,EAAM//B,QACN,GAAM1F,KAAKkwD,iBAAiBnlB,W,cAA5B,S,kBAhBJ,I,cAUGtF,EAAS,SAQd,G,YAGA,YAAA8qB,YAAN,W,yGACS,SAAMvwD,KAAKgwD,kB,OAAhB,OAAK,SAKsB,KADrBC,EAAcjwD,KAAKkwD,iBAAiBtjB,kBAC1B5wC,QACZgE,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,oBACvB,KAGY,GAAMyB,KAAKglC,aAAaviC,YAAY,EAAA+tD,qBAAsBxwD,KAAKywD,qBAAqB,SAAAlrB,GAChGA,EAAK8qB,UAAYJ,EACjB1qB,EAAKmrB,WAAWlsD,WAAU,gD,kDAEtB,OADAihC,EAAM//B,QACN,GAAM1F,KAAKkwD,iBAAiBnlB,W,cAA5B,S,kBAdJ,I,cAUGtF,EAAS,SAMd,G,YAGA,YAAAkrB,UAAN,W,yGACS,SAAM3wD,KAAKgwD,kB,OAAhB,OAAK,SAK0B,KADzBY,EAAkB5wD,KAAKkwD,iBAAiBvjB,eAC1B3wC,QAChBgE,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,oBACvB,KAGY,GAAMyB,KAAKglC,aAAaviC,YAAY,EAAAouD,mBAAoB7wD,KAAK8wD,mBAAmB,SAAAvrB,GAC5FA,EAAK1wB,QAAU+7C,EACfrrB,EAAKwrB,SAASvsD,WAAU,gD,kDAEpB,OADAihC,EAAM//B,QACN,GAAM1F,KAAKkwD,iBAAiBnlB,W,cAA5B,S,kBAdJ,I,cAUGtF,EAAS,SAMd,G,YAGA,YAAAurB,SAAN,W,yGACS,SAAMhxD,KAAKgwD,kB,OAAhB,OAAK,SAKsB,KADrBC,EAAcjwD,KAAKkwD,iBAAiBtjB,kBAC1B5wC,QACZgE,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,oBACvB,KAGY,GAAMyB,KAAKglC,aAAaviC,YAAY,EAAAwuD,kBAAmBjxD,KAAKkxD,kBAAkB,SAAA3rB,GAC1FA,EAAK8qB,UAAYJ,EACjB1qB,EAAK4rB,QAAQ3sD,WAAU,gD,kDAEnB,OADAihC,EAAM//B,QACN,GAAM1F,KAAKkwD,iBAAiBnlB,W,cAA5B,S,kBAdJ,I,cAUGtF,EAAS,SAMd,G,YAGN,YAAAkF,UAAA,SAAU4B,GACNvsC,KAAKkwD,iBAAiBvlB,UAAU4B,IAGtB,YAAAyjB,eAAd,W,2GACUY,EAAkB5wD,KAAKkwD,iBAAiBvjB,cACxCykB,GAAgBR,EAAgB7oC,MAAK,SAAA5V,GAAU,OAAAA,EAAOiU,WAAa,EAAAC,mBAAmBC,SAErF,EAAA8qC,GAAA,MAAgB,GAAMpxD,KAAK8pC,wBAAwBoD,sB,SAAnC,S,iBAAvB,MAAO,CAAP,a,iCA3GKmkB,GAAoB,8J,iCAApBA,EAAoB,+D,GAAA,M,kBAKY,EAAAprB,kB,kBACC,EAAAA,kB,kBACH,EAAAA,kB,kBACC,EAAAA,mB,g8CClC5C,4BAA4C,+C,mBAA6M,qCAA6C,iCAAU,4CAAoF,kDAA4L,mDAAiN,mDAAmL,iDAA0C,wCAAS,EAAA8pB,gBAAe,uCAAuD,a,oBAAsE,iBAAU,yCAAqC,iDAA2C,wCAAS,EAAAplB,WAAU,MAAQ,wCAA8D,a,oBAAuB,iBAAU,iDAA2C,wCAAS,EAAAA,WAAU,MAAS,wCAA8D,a,oBAAyB,iBAAU,kCAAO,kCAAO,uFAAgD,uFAAiD,uFAA8C,uFAA+C,kB,MAAv/C,oFAAiP,gEAA6L,gEAAsM,+DAAqP,wHAAyP,8EAAsK,kF,qGDsB59C,GAIa,EAAA0mB,wB,+DAAAA,EAAoB,E,KAJhC,EAAApqD,U,MAAU,CACPnG,SAAU,yBACVoG,YAAa,mC,0HAGJgpD,iBAAkB,CAAF,C,KAAxB,EAAAlvD,QACQiqC,QAAS,CAAF,C,KAAf,EAAAjqC,QACQ4jB,aAAc,CAAF,C,KAApB,EAAA5jB,QAE0EovD,mBAAoB,CAAF,C,KAA5F,EAAA/wB,U,MAAU,qBAAsB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACSsqB,oBAAqB,CAAF,C,KAA9F,EAAApxB,U,MAAU,sBAAuB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACK+qB,iBAAkB,CAAF,C,KAAxF,EAAA7xB,U,MAAU,mBAAoB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACS2qB,kBAAmB,CAAF,C,KAA1F,EAAAzxB,U,MAAU,oBAAqB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,S,i0DElCtE,YAMA,SAEA,cAMI,WAAY93B,EAAoBoL,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAK2U,KAAO3U,EAAI2U,KAChB,EAAKzJ,iBAAiB,EAAMlL,EAAK,CAC7BzO,GAAI,KACJ67C,SAAU,KACV7a,SAAU,MACXnnB,EAAkB,CAAC,KAAM,c,EASpC,OA1B8B,OAoBpB,YAAAgB,QAAN,SAAc7b,G,0FACG,SAAMoB,KAAKga,WAAW,IAAI,EAAA0hC,aAAa17C,MAAO,CACvD4gC,SAAU,MACX,KAAMhiC,I,OACT,MAAO,CAAP,EAHa,kBAKrB,EA1BA,CAA8B,WAAjB,EAAA0yD,Y,scCRb,YAMA,SAEA,cAII,WAAYjjD,EAAoBoL,QAAA,IAAAA,OAAA,GAAhC,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAKstC,OAASttC,EAAIstC,OAClB,EAAKpiC,iBAAiB,EAAMlL,EAAK,CAC7BmmB,KAAM,MACP/a,EAAkB,K,EAQ7B,OArB8B,OAgB1B,YAAAgB,QAAA,SAAQ7b,GACJ,OAAOoB,KAAKga,WAAW,IAAI,EAAA4hC,aAAa57C,MAAO,CAC3Cw0B,KAAM,MACP,KAAM51B,IAEjB,EArBA,CAA8B,WAAjB,EAAA2yD,Y,idCRb,IAIA,cAGI,WAAYp/C,GAAZ,MACI,YAAMA,IAAO,K,OACb,EAAKvS,GAAKuS,EAAOvS,G,EAEzB,OAPyC,OAOzC,EAPA,CAJA,OAIyCmhC,eAA5B,EAAAywB,uB,qGCFb,MAGI,SAAYC,GACRzxD,KAAKnC,KAAO4zD,EAAO5zD,KAAO4zD,EAAO5zD,KAAKkc,gBAAkB,MAJnD,EAAA23C,iB,kGCAb,MAMI,SAAYlwD,EAA0BoxB,GAClC5yB,KAAK4yB,OAASA,EACd5yB,KAAKnC,KAAO2D,EAAS3D,KACrBmC,KAAKJ,GAAK4B,EAAS5B,GACnBI,KAAKkmB,aAAe1kB,EAAS0kB,cAVxB,EAAAyrC,c,ocCAb,aAKA,cAKI,WAAYtjD,EAAkBoL,QAAA,IAAAA,OAAA,GAA9B,MACI,cAAO,KACP,OAAW,MAAPpL,IAIJ,EAAKkL,iBAAiB,EAAMlL,EAAK,CAC7BzO,GAAI,KACJ/B,KAAM,MACP4b,EAAkB,CAAC,OAEtB,EAAKyM,aAAmC,MAApB7X,EAAI6X,aAAuB,IAAI2C,KAAKxa,EAAI6X,cAAgB,M,EAQpF,OAxB4B,OAmBxB,YAAAzL,QAAA,WACI,OAAOza,KAAKga,WAAW,IAAI,EAAApF,WAAW5U,MAAO,CACzCnC,KAAM,MACP,OAEX,EAxBA,CAHA,MAG4B,SAAf,EAAA+zD,U,2GCPb,W,GAMA,K,aAEA,aAII,WAAoBvxD,EAAwB4c,GAAxB,KAAA5c,KAAwB,KAAA4c,uB,OAEtB,YAAA40C,OAAtB,WACI,GAAc,MAAV1yD,OAAJ,CAKA,IAFA,IAAI2yD,EAAW,GACTC,EAAY5yD,OAAO6yD,eAChBl2D,EAAI,EAAGA,EAAIi2D,EAAUE,WAAYn2D,IAAK,CAC3C,IACM04B,EADQu9B,EAAUG,WAAWp2D,GAChBkO,WAMfmoD,EAAe39B,EAAKx4B,OAClBo2D,EAAa59B,EAAKrnB,OAAO,kBAC/B,GAAIilD,GAAc,EAEI,KADA59B,EAAKjrB,OAAO6oD,GAAY7lD,SAEtC4lD,EAAeC,GAGvBN,GAAYt9B,EAAK7iB,UAAU,EAAGwgD,GAElCnyD,KAAKid,qBAAqBkrB,gBAAgB2pB,EAAU,CAAE3yD,OAAQA,W,iCA3BzDkzD,GAAmB,gF,iCAAnBA,EAAmB,oE,uCAAnB,iB,EAHb,GAGa,EAAAA,uB,+DAAAA,EAAmB,E,KAH/B,EAAAxxD,U,MAAU,CACPC,SAAU,uB,wEAKY+wD,OAAM,E,KAA3B,EAAA97C,a,MAAa,a,yGCdlB,WAIA,Q,OAMA,2B,OAEI,YAAApW,UAAA,SAAUqV,GAIN,IAFA,IAAMs9C,EAAgBhtD,MAAMC,KAAKyP,GAC7Bu9C,EAAoB,GACfz2D,EAAI,EAAGA,EAAIw2D,EAAct2D,OAAQF,IAAK,CAC3C,IAAI02D,EAAYF,EAAcx2D,GAC1B22D,GAAY,EAEhB,OAAQD,GACJ,IAAK,IACDA,EAAY,QACZC,GAAY,EACZ,MACJ,IAAK,IACDD,EAAY,OACZC,GAAY,EACZ,MACJ,IAAK,IACDD,EAAY,OACZC,GAAY,EACZ,MACJ,IAAK,IACDD,EAAY,SACZC,GAAY,EAKpB,IAAIlsD,EAAO,SACPisD,EAAUtjD,MAAM,EAAAlH,MAAMwH,yBACtBjJ,EAAO,QACAksD,GAAaD,EAAUtjD,MAAM,UACpC3I,EAAO,UACAisD,EAAUtjD,MAAM,QACvB3I,EAAO,UAEXgsD,GAAqB,yBAA2BhsD,EAAO,KAAOisD,EAAY,UAE9E,OAAOD,G,iCAvCFG,I,kDAAAA,EAAiB,U,EAD9B,GACa,EAAAA,qB,+DAAAA,EAAiB,E,KAD7B,EAAAxyD,K,MAAK,CAAErC,KAAM,oB,mGCVd,SAAS80D,EAAyB7N,GAGjC,OAAOxqC,QAAQC,UAAUjZ,MAAK,WAC7B,IAAIG,EAAI,IAAI8F,MAAM,uBAAyBu9C,EAAM,KAEjD,MADArjD,EAAE4a,KAAO,mBACH5a,KAGRkxD,EAAyBrkD,KAAO,WAAa,MAAO,IACpDqkD,EAAyBp4C,QAAUo4C,EACnCn1D,EAAOD,QAAUo1D,EACjBA,EAAyB/yD,GAAK,K,k/CCZ9B,W,GACA,KAMA,KAEA,KACA,K,kCAEA,aAEI,WAAoB23B,EAAkCiB,EAC1C9D,EAAwCh1B,GADhC,KAAA63B,cAAkC,KAAAiB,SAC1C,KAAA9D,iBAAwC,KAAAh1B,c,OAE9C,YAAAw9C,YAAN,SAAkBv2B,G,gGACG,SAAM3mB,KAAKu3B,YAAYq7B,YAAYjsC,EAAMa,OAAO+I,a,OACjE,OAAgB,OADV8kB,EAAW,WAEbr1C,KAAKw4B,OAAOkE,SAAS,CAAC,MACf,CAAP,GAAO,IAEN2Y,EAASwd,iBAAoBxd,EAASvwB,QAMpC,CAAP,GAAO,IALH9kB,KAAK00B,eAAeI,SAAS,QAAS,KAAM90B,KAAKN,YAAYnB,EAAE,uBAC/DyB,KAAKw4B,OAAOkE,SAAS,CAAC,MACf,CAAP,GAAO,Y,iCAbNo2B,GAAoB,wG,oCAApBA,EAAoB,QAApBA,EAAoB,O,EADjC,GACa,EAAAA,wB,+DAAAA,EAAoB,E,KADhC,EAAAzsD,c,6lDCZD,WASA,GARA,KAMA,KAEA,Q,qBAEA,aAEI,WAAoBkxB,EAAkCiB,GAAlC,KAAAjB,cAAkC,KAAAiB,S,OAEhD,YAAA0kB,YAAN,SAAkBv2B,G,kGACG,SAAM3mB,KAAKu3B,YAAYq7B,YAAYjsC,EAAMa,OAAO+I,a,OAGjE,OAHM8kB,EAAW,UAI0C,KAHrDwF,EAA4B,MAAdl0B,EAAMnrB,KAAe,KAAOmrB,EAAMnrB,KAAKq/C,aAG1CnuC,QAAQ,EAAA0gC,YAAY2lB,kBAA2B1d,EAAS2d,qBACf,IAArDnY,EAAYnuC,QAAQ,EAAA0gC,YAAY6lB,iBAA0B5d,EAASwd,kBACjB,IAAlDhY,EAAYnuC,QAAQ,EAAA0gC,YAAY8lB,cAAuB7d,EAAS8d,eAE1D,CAAP,GAAO,IAGXnzD,KAAKw4B,OAAOkE,SAAS,CAAC,aAAc2Y,EAASz1C,KACtC,CAAP,GAAO,Y,iCAhBFwzD,GAAwB,iD,oCAAxBA,EAAwB,QAAxBA,EAAwB,O,EADrC,GACa,EAAAA,4B,+DAAAA,EAAwB,E,KADpC,EAAA/sD,c,gjDCXD,W,GACA,KAEA,K,kFCH2X,6BAA2F,6CAA6B,sCAA8D,Y,mBAAgC,iBAAO,kC,MAAvC,sF,yBAAiR,4BAA4C,2CAA0E,sCAAiD,Y,mBAAoB,iBAAK,kC,8BAAhI,wDAAuG,0E,sBAA+B,4BAA8C,2CAAqE,sCAA8C,Y,mBAAsB,iBAAK,kC,MAA3B,4E,yBAAnkB,4BAA8C,4CAAsB,2CAAoE,sCAAoD,Y,mBAAqB,iBAAK,iCAAM,gDAAsM,gDAAkM,mC,8BAAxa,0EAAsD,oDAAsM,uD,yBAApgC,4BAAuC,4CAA+B,4CAAiC,4CAAqD,8CAA2E,6CAA4B,6CAAM,aAAiB,iBAAQ,gDAA0B,a,oBAAqB,iBAAS,kCAAO,gDAAoO,kCAAO,iDAA0mB,kCAAO,kCAAO,mC,6BAA5hC,oDAAsB,aAA2E,oDAAmD,mEAAsG,wDAAoM,mDDOhoB,iBASI,WAAoBsgB,EAA+B4Q,GAA/B,KAAA5Q,QAA+B,KAAA4Q,c,OAEnD,YAAA/2B,SAAA,sBACI4D,SAASC,KAAKQ,UAAUgB,OAAO,mBAC/B7F,KAAK2mB,MAAMa,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,kDAEpC,OADAxnB,KAAKuwB,WAAa/I,EAAO+I,WACzB,GAAMvwB,KAAKke,Q,cAAX,S,eAIF,YAAAA,KAAN,W,gGACoB,OAAhB,EAAAle,KAAgB,GAAMA,KAAKu3B,YAAYq7B,YAAY5yD,KAAKuwB,a,cAAxD,EAAK8kB,SAAW,S,YAGpB,sBAAI,0BAAW,C,IAAf,WACI,OAAOr1C,KAAKqzD,eAAiBrzD,KAAKszD,iB,gCAGtC,sBAAI,4BAAa,C,IAAjB,WACI,OAAOtzD,KAAKq1C,SAAS8d,gBAAkBnzD,KAAKq1C,SAAS2d,oB,gCAGzD,sBAAI,8BAAe,C,IAAnB,WACI,OAAOhzD,KAAKq1C,SAASwd,iB,gCAGzB,sBAAI,0BAAW,C,IAAf,WACI,QAAQ,GACJ,KAAK7yD,KAAKq1C,SAAS8d,eACf,MAAO,gBACX,KAAKnzD,KAAKq1C,SAAS2d,mBACf,MAAO,kB,iEApCVO,GAAwB,2E,iCAAxBA,EAAwB,28BCXrC,4BAA0B,+CAA2sC,4CAAqC,+CAAgC,iCAAO,4CAA0B,kB,MAA3xC,iD,wKDOhD,GAIa,EAAAA,4B,+DAAAA,EAAwB,E,KAJpC,EAAAtsD,U,MAAU,CACPnG,SAAU,mBACVoG,YAAa,uC,kjDETjB,WAmBA,GAbA,KACA,KAEA,KACA,KACA,MACA,KACA,MACA,KAEA,MACA,MAEA,QACA,SASA,GAFA,OAEA,Q,iLC7B2S,0BAAgG,qCAAoD,Y,mBAAmC,kB,MAAnC,yF,mDAAwC,gCAAoD,0GAAoF,qCAAoD,Y,mBAAqC,iB,MAArC,2F,sBAA6D,6BAA+B,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,sBAAwJ,wBAAmC,Y,mBAA4B,kB,MAA5B,0E,mDAAye,4BAA4D,6CAAuC,gD,mBAA+K,sCAAmD,iCAAU,8CAAgD,6CAA2D,6HAAqB,wCAAsD,a,oBAAoB,iBAAK,kCAAO,kCAAO,kC,MAA/T,oFAAwR,4E,uEAA/vB,yBAAuC,4CAAgB,+CAAgG,iCAAM,yCAAK,2CAAuD,aAAsB,iBAAK,kCAAM,iDAAkjB,mC,4CAAzuB,uDAA2B,YAA3B,CAA2B,eAAuE,kFAAoD,uDAAiE,2D,mDAAxe,6BAA8C,+CAA+H,+FAAyB,4CAAQ,+CAAkzB,iCAAS,iCAAS,0C,yDAAz6B,wDAA4B,wCAA2F,0C,yBAAhZ,6BAA4G,4CAAoE,wDAAkiC,2C,kBAAlmC,8CAA+E,8C,iBD+BjmC,IAAMssD,EAAsB,CAAC,EAAAz6B,SAASF,KAAM,EAAAE,SAAS06B,qBAAsB,EAAA16B,SAAS26B,kBAEpF,aAsBI,WAAoB/sC,EAA+B4Q,EACvC3X,EAAgCiqB,EAChC5sB,EAAoDvd,EACpDg1B,EAAwCzzB,EACxC0yD,EAA0CzyD,EAC1C8jC,GALQ,KAAAre,QAA+B,KAAA4Q,cACvC,KAAA3X,aAAgC,KAAAiqB,gBAChC,KAAA5sB,uBAAoD,KAAAvd,cACpD,KAAAg1B,iBAAwC,KAAAzzB,oBACxC,KAAA0yD,kBAA0C,KAAAzyD,aAC1C,KAAA8jC,eAjBZ,KAAAzjC,SAAU,EACV,KAAAqyD,qBAAsB,EACtB,KAAAC,iBAAkB,EAKR,KAAArpB,WAAY,EACZ,KAAAH,SAAW,IAEb,KAAAypB,kBAAoB,E,OAStB,YAAAtzD,SAAN,W,qFACIR,KAAK2mB,MAAMY,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,+DAG3C,OAFAxnB,KAAKuwB,WAAa/I,EAAO+I,WAEzB,GAAMvwB,KAAKke,Q,cAAX,SAEM61C,EAAiB/zD,KAAK2mB,MAAMkoB,YAAYrqC,WAAU,SAAMsqC,GAAO,qC,kCACjE9uC,KAAK8e,WAAagwB,EAAQ3hC,OACJ,MAAlB4mD,GACAA,EAAeC,c,sCAMzB,YAAA91C,KAAN,W,6GACqB,SAAMle,KAAK4f,WAAWq0C,mBAAmBj0D,KAAKuwB,a,OAEnC,OAFtB/uB,EAAW,SACjBxB,KAAKk0D,QAA2B,MAAjB1yD,EAAShG,MAAgBgG,EAAShG,KAAKQ,OAAS,EAAIwF,EAAShG,KAAO,GACnF,EAAAwE,KAA4B,GAAMA,KAAKu3B,YAAYq7B,YAAY5yD,KAAKuwB,a,OAC7C,OADvB,EAAKqjC,oBAAuB,SAAqDrtD,OAAS,EAAA8mC,iBAAiB8mB,cACpF,GAAMn0D,KAAKu3B,YAAYukB,uB,OACvB,OADjBsY,EAAiB,SAA8C7lD,QAAO,SAAAxQ,GAAK,OAAAA,EAAEs2D,SAA2B,MAAhBt2D,EAAEwyB,cACzE,GAAMjW,QAAQK,IAAIy5C,EAAcpuD,KAAI,SAAAjI,GAAK,SAAK6hB,WAAWud,gBAAgBp/B,EAAE6B,QAAM0B,MAAK,SAAAy6C,GACzG,OAAAA,EAAKxtC,QAAO,SAAAxQ,GAAK,OAACy1D,EAAoBnnB,SAAStuC,EAAEi/B,aAC5Ch3B,KAAI,SAAAjI,GAAK,OAAAA,EAAE6B,U,cAFd00D,EAAiB,SAGvBt0D,KAAKu0D,qBAAuBH,EAAc7lD,QAAO,SAAAxQ,GAAK,OAAAu2D,EAAejoB,SAAStuC,EAAE6B,OAEhFI,KAAK6zD,gBAAuD,IAArC7zD,KAAKu0D,qBAAqBv4D,OACjDgE,KAAKuB,SAAU,E,YAGnB,YAAA2pC,SAAA,WACI,IAAMC,EAAYnrC,KAAKorC,cAIvB,OAHID,GAAanrC,KAAKwqC,WAClBxqC,KAAKqrC,eAEDF,GAAanrC,KAAKk0D,SAAWl0D,KAAKk0D,QAAQl4D,OAASgE,KAAKqqC,UAGpE,YAAAe,YAAA,WACI,OAAOprC,KAAK6pC,cAAc2qB,aAAax0D,KAAK8e,aAG1C,YAAAusB,YAAN,W,0EACIrrC,KAAKy0D,aAAe,GACpBz0D,KAAK4qC,W,WAIT,YAAAA,SAAA,WACI,GAAK5qC,KAAKk0D,WAAWl0D,KAAKk0D,QAAQl4D,QAAUgE,KAAKqqC,UAAjD,CAGA,IAAMQ,EAAc7qC,KAAKy0D,aAAaz4D,OAClC8uC,EAAY9qC,KAAKqqC,SACD,IAAhBQ,GAAqB7qC,KAAK8zD,kBAAoB9zD,KAAKqqC,WACnDS,EAAY9qC,KAAK8zD,mBAEjB9zD,KAAKk0D,QAAQl4D,OAAS6uC,IACtB7qC,KAAKy0D,aAAez0D,KAAKy0D,aAAar3C,OAAOpd,KAAKk0D,QAAQ70D,MAAMwrC,EAAaA,EAAcC,KAE/F9qC,KAAK8zD,kBAAoB9zD,KAAKy0D,aAAaz4D,OAC3CgE,KAAKwqC,UAAYxqC,KAAKy0D,aAAaz4D,OAASgE,KAAKqqC,WAG/C,YAAAqqB,wBAAN,W,uGACoB,SAAM10D,KAAKglC,aAAaviC,YAAY,EAAAkyD,yBAA0B30D,KAAK40D,aAAa,SAAArvB,GAC5FA,EAAKhV,WAAa,EAAKA,WACvBgV,EAAKmI,cAAgB,EAAK6mB,qBAC1BhvB,EAAKsvB,oBAAoBrwD,WAAU,gD,wDAE3B,O,sBAAA,GAAMxE,KAAKke,Q,cAAX,SACAunB,EAAM//B,Q,+BAEN1F,KAAKkB,WAAWW,MAAM,sBAAsB,G,mDARjD4jC,EAAS,SAWd,G,YAGA,YAAA5/B,OAAN,SAAa+e,G,gGACS,SAAM5kB,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAE,kCAAmCqmB,EAAakwC,iBACnE90D,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,Y,OAEzD,IAJkB,SAKd,MAAO,CAAP,GAAO,GAGXyB,KAAK8rC,cAAgB9rC,KAAK2zD,gBAAgBxxB,oBAAoBniC,KAAKuwB,WAAY3L,EAAahlB,I,iBAExF,O,sBAAA,GAAMI,KAAK8rC,e,OAEX,OAFA,SACA9rC,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,uBAAwBqmB,EAAakwC,mBACtG,GAAM90D,KAAKke,Q,cAAX,S,+BAEAle,KAAKiB,kBAAkBc,UAAU,G,oBAErC/B,KAAK8rC,cAAgB,K,6CAzHhBipB,GAAgB,6Z,iCAAhBA,EAAgB,qD,GAAA,K,kBAEC,EAAA9uB,kB,g6CCtC9B,4BAAiC,yCAAI,Y,mBAAoB,iBAAM,4CAA6B,0CAAM,+CAAoC,a,oBAAmB,iBAAS,gDAAwG,mE,oBAAxG,iBAAkI,kCAAO,8CAA4L,mDAA2O,kCAAO,kCAAO,yDAAkM,yD,sBAAkuC,sFAAiC,kB,MAAhoE,iEAAiG,kEAAkG,oFAAkC,qCAAqG,0DAAiN,6EAA+K,8CAAkM,sH,sNDiCj7B,GAGa,EAAA8uB,oB,+DAAAA,EAAgB,E,KAH5B,EAAA9tD,U,MAAU,CACPC,YAAa,8B,uRAI+C0tD,YAAa,CAAF,C,KAAtE,EAAAv1B,U,MAAU,MAAO,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,S,++CEtCxD,W,GAOA,KAEA,KACA,KACA,KACA,KAEA,MAEA,O,8GChB4d,6BAAoD,sC,mBAAsF,Y,mBAAqB,kB,MAA1E,6EAAqD,2E,mDAAyG,yBAAqC,4CAAgB,+CAAoF,iCAAM,yCAAK,YAAW,iBAAM,0CAAK,kDAAqD,0GAA0C,mBAAG,iBAAU,kCAAM,kC,+CAA3N,2CAAe,YAAf,CAAe,eAAoE,oDAA4F,uD,yBAA7T,6BAAgC,+CAA6C,+CAAkS,iCAAS,2C,6BAAzR,wDDuBjuB,iBAcI,WAAoB5O,EAAkCo8B,EAC1Cj/B,EAAwCh1B,EACxCud,EAAoDhc,EACpD2e,GAHQ,KAAA2X,cAAkC,KAAAo8B,kBAC1C,KAAAj/B,iBAAwC,KAAAh1B,cACxC,KAAAud,uBAAoD,KAAAhc,oBACpD,KAAA2e,aATF,KAAAi1C,oBAAsB,IAAI,EAAAhuC,aAIpC,KAAAtlB,SAAU,E,OAOJ,YAAAf,SAAN,W,0FACI,SAAMR,KAAKke,Q,cAAX,S,YAGE,YAAAA,KAAN,W,gGACI,OAAuB,MAAnBle,KAAKuwB,WACL,KAGJ,EAAAvwB,KAAgB,GAAMA,KAAKu3B,YAAYq7B,YAAY5yD,KAAKuwB,c,cAAxD,EAAK8kB,SAAW,SAEhBr1C,KAAKuB,SAAU,E,YAGb,YAAAuD,IAAN,SAAU8f,G,gGACN,OAAI5kB,KAAKi1B,YACL,IAGc,GAAMj1B,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAE,8BAA+BqmB,EAAa/mB,KAAMmC,KAAKq1C,SAASx3C,MAAO+mB,EAAa/mB,KACvGmC,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,Y,OAEzD,IAJkB,SAKd,MAAO,CAAP,GAAO,G,iBAKP,O,uBADAyB,KAAKi1B,YAAcj1B,KAAK2zD,gBAAgB5xB,0BAA0B/hC,KAAKuwB,WAAY3L,EAAahlB,IAChG,GAAMI,KAAKi1B,a,cAAX,S,aAGA,O,WADAj1B,KAAKiB,kBAAkBc,UAAU,GACjC,I,cAEA/B,KAAKi1B,YAAc,K,kBAGvBj1B,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,+BACjEyB,KAAK60D,oBAAoBltC,O,6CArDpBgtC,GAAwB,4Q,iCAAxBA,EAAwB,y3BC3BrC,4BAAkG,4CAAmE,4CAA4B,4CAA2B,2CAAuC,Y,oBAAqC,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,gDAAsK,yDAAwY,kCAAO,kCAAO,kCAAO,kCAAO,kB,MAAnyB,2FAAoG,mFAAyJ,+CAAiJ,iD,4GDuBjpB,GAIa,EAAAA,4B,+DAAAA,EAAwB,E,KAJpC,EAAA1tD,U,MAAU,CACPnG,SAAU,4BACVoG,YAAa,uC,8LAIJqpB,WAAY,CAAF,C,KAAlB,EAAAvvB,QACQ0sC,cAAe,CAAF,C,KAArB,EAAA1sC,QACS6zD,oBAAmB,E,KAA5B,EAAAnsC,Y,k/CE/BL,WAOA,GAFA,KAEA,Q,8BAEA,aASI,WAAoB/B,GAAA,KAAAA,Q,OAEpB,YAAAnmB,SAAA,sBACIR,KAAK2mB,MAAMY,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,kCAC3CxnB,KAAKuwB,WAAa/I,EAAO+I,W,+CATxBykC,GAA2B,wC,iCAA3BA,EAA2B,gE,GAAA,K,cACzB,EAAA51B,2BAA4B,G,yKCd3C,4BAA0B,yCAAI,Y,mBAAkC,iBAAM,iCAAO,wCAAG,Y,mBAAsC,iBAAK,4DAA4E,kB,MAAzK,+EAAkD,mFAAmE,yD,iFDSnJ,GAIa,EAAA41B,+B,+DAAAA,EAA2B,E,KAJvC,EAAA/tD,U,MAAU,CACPnG,SAAU,0BACVoG,YAAa,0C,8CAG4C+tD,kBAAmB,CAAF,C,KAAzE,EAAA51B,U,MAAU,EAAAD,2BAA4B,CAAE+G,QAAQ,S,oGEdrD,+BAWA,OAVoB,EAAA1kB,cAAgB,mCAChB,EAAAC,cAAgB,mCAChB,EAAAwzC,aAAe,oCACf,EAAAzyC,gBAAkB,uCAClB,EAAAG,OAAS,CACrBuhC,qBAAsB,gBACtBG,kBAAmB,gBACnBL,uBAAwB,wCACxBI,oBAAqB,iDAE7B,EAXA,GAAa,EAAA7iC,gB,ydCAb,IAEA,yE,OACI,EAAAza,cAAwB,EACxB,EAAAouD,UAAoB,EACpB,EAAAC,cAAwB,EACxB,EAAAC,cAAwB,EACxB,EAAAC,gBAA0B,EAC1B,EAAAC,gBAA0B,E,EAC9B,OAPiD,OAOjD,EAPA,CAFA,MAEiD,SAApC,EAAAC,+B,8dCFb,IAEA,2B,+CAMA,OANsD,OAMtD,EANA,CAFA,OAEsDrtC,sBAAzC,EAAAD,oC,4GCFb,mBAAa,EAAAC,wB,4XCAb,aAAS,oFAAAma,sBACT,aAAS,gFAAAG,kBACT,aAAS,oFAAA8a,sBACT,aAAS,gFAAAkY,kBACT,aAAS,iFAAA1X,mBACT,aAAS,+EAAAr8C,iBACT,aAAS,gFAAAs8C,kBACT,aAAS,sFAAAF,wBACT,aAAS,uFAAA4X,yBACT,aAAS,2FAAAC,6BACT,aAAS,8EAAAC,gBACT,aAAS,8EAAAC,gBACT,aAAS,6FAAAznB,+BACT,aAAS,iFAAAG,mBACT,aAAS,8EAAAunB,iB,qcCdT,IAEA,cAQI,WAAYt6D,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAK4gB,eAAiB,EAAKhV,oBAAoB,kBAC/C,EAAKuV,MAAQ,EAAKvV,oBAAoB,SACtC,EAAKsV,OAAS,EAAKtV,oBAAoB,UACvC,EAAKoL,SAAW,EAAKpL,oBAAoB,YACzC,EAAKqL,QAAU,EAAKrL,oBAAoB,WACxC,EAAKiV,KAAO,EAAKjV,oBAAoB,S,EAE7C,OApB6B,OAoB7B,EApBA,CAFA,MAE6BQ,cAAhB,EAAA24B,W,scCFb,IAIA,cAKI,WAAY/kC,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAK+K,KAAO,EAAKa,oBAAoB,QACrC,EAAKvJ,KAAO,EAAKuJ,oBAAoB,QACrC,EAAK9I,MAAQ,EAAK8I,oBAAoB,U,EAE9C,OAd8B,OAc9B,EAdA,CAJA,MAI8BQ,cAAjB,EAAA64B,Y,ycCJb,IAEA,cAoBI,WAAYjlC,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAK+E,MAAQ,EAAK6G,oBAAoB,SACtC,EAAK6qB,UAAY,EAAK7qB,oBAAoB,aAC1C,EAAKkqB,WAAa,EAAKlqB,oBAAoB,cAC3C,EAAK8qB,SAAW,EAAK9qB,oBAAoB,YACzC,EAAKmqB,SAAW,EAAKnqB,oBAAoB,YACzC,EAAKoqB,SAAW,EAAKpqB,oBAAoB,YACzC,EAAKqqB,SAAW,EAAKrqB,oBAAoB,YACzC,EAAK8f,KAAO,EAAK9f,oBAAoB,QACrC,EAAK+f,MAAQ,EAAK/f,oBAAoB,SACtC,EAAKggB,WAAa,EAAKhgB,oBAAoB,cAC3C,EAAKsZ,QAAU,EAAKtZ,oBAAoB,WACxC,EAAKsqB,QAAU,EAAKtqB,oBAAoB,WACxC,EAAK8P,MAAQ,EAAK9P,oBAAoB,SACtC,EAAKuqB,MAAQ,EAAKvqB,oBAAoB,SACtC,EAAKwqB,IAAM,EAAKxqB,oBAAoB,OACpC,EAAK2N,SAAW,EAAK3N,oBAAoB,YACzC,EAAKyqB,eAAiB,EAAKzqB,oBAAoB,kBAC/C,EAAK0qB,cAAgB,EAAK1qB,oBAAoB,kB,EAEtD,OA5CiC,OA4CjC,EA5CA,CAFA,MAEiCQ,cAApB,EAAA44B,e,scCFb,YAEA,SAEA,cAQI,WAAYhlC,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,GAAY,MAARA,E,SAGJ,EAAKuZ,SAAW,EAAK3N,oBAAoB,YACzC,EAAK4N,SAAW,EAAK5N,oBAAoB,YACzC,EAAKsf,qBAAuB,EAAKtf,oBAAoB,wBACrD,EAAKirB,KAAO,EAAKjrB,oBAAoB,QACrC,EAAKkrB,mBAAqB,EAAKlrB,oBAAoB,sBAEnD,IAAM6N,EAAO,EAAK7N,oBAAoB,Q,OAC1B,MAAR6N,IACA,EAAKA,KAAOA,EAAKjP,KAAI,SAAC0L,GAAW,WAAI,EAAA2uB,YAAY3uB,O,EAG7D,OAxB8B,OAwB9B,EAxBA,CAA8B,EAAA9J,cAAjB,EAAAw4B,Y,ycCJb,IAIA,cAII,WAAY5kC,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,GAJJ,EAAA0T,MAAsB,KAIN,MAAR1T,E,SAGJ,EAAK8V,IAAM,EAAKlK,oBAAoB,OACpC,IAAM8H,EAAQ,EAAK9H,oBAAoB,S,OACvC,EAAK8H,MAAiB,MAATA,EAAgBA,EAAQ,K,EAE7C,OAbiC,OAajC,EAbA,CAJA,MAIiCtH,cAApB,EAAAy4B,e,2cCJb,IAIA,cAGI,WAAY7kC,QAAA,IAAAA,MAAA,MAAZ,MACI,YAAMA,IAAK,KACX,OAAY,MAARA,IAGJ,EAAK+K,KAAO,EAAKa,oBAAoB,S,EAE7C,OAVmC,OAUnC,EAVA,CAJA,MAImCQ,cAAtB,EAAA04B,iB,kdCJb,IAEA,cAKI,WAAY9+B,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK+E,KAAO,EAAKa,oBAAoB,QACrC,EAAK2uD,QAAU,EAAK3uD,oBAAoB,WACxC,EAAK4uD,SAAW,EAAK5uD,oBAAoB,Y,EAEjD,OAX0C,OAW1C,EAXA,CAFA,MAE0CQ,cAA7B,EAAAk2C,wB,mdCFb,IAIA,cAaI,WAAYt8C,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK21C,YAAc31C,EAASy0D,aAC5B,EAAKC,UAAY10D,EAAS20D,WAC1B,EAAK/e,aAAe51C,EAAS40D,cAC7B,EAAKC,UAAY70D,EAAS80D,WAE1B,EAAKtf,oBAAsB,EAAK5vC,oBAAoB,uBACpD,EAAK6mC,WAAa,EAAK7mC,oBAAoB,cAC3C,EAAKxI,IAAM,EAAKwI,oBAAoB,OACpC,EAAKitC,eAAiB,EAAKjtC,oBAAoB,kBAC/C,EAAKsqC,IAAM,EAAKtqC,oBAAoB,OACpC,EAAKwqC,cAAgB,EAAKxqC,oBAAoB,iB,EAEtD,OA3B2C,OA2B3C,EA3BA,CAJA,MAI2CQ,cAA9B,EAAA8tD,yB,udCJb,IAIA,cAKI,WAAYl0D,GAAZ,MACI,YAAMA,IAAS,KAJnB,EAAAo1C,oBAAsB,IAAIp0C,IAKtB,EAAKgxC,aAAe,EAAKpsC,oBAAoB,sBAC7C,EAAK0vC,mBAAqB,EAAK1vC,oBAAoB,sBACnD,IAAMwvC,EAAsB,EAAKxvC,oBAAoB,uBACrD,GAA2B,MAAvBwvC,EACA,IAAK,IAAMnpC,KAAQmpC,EACXA,EAAoBz6C,eAAesR,IACnC,EAAKmpC,oBAAoBjzC,IAAI2F,SAASmE,EAAM,MAAOmpC,EAAoBnpC,I,SAK3F,OAlB+C,OAkB/C,EAlBA,CAJA,MAI+C7F,cAAlC,EAAA+tD,6B,0cCJb,IAEA,cAII,WAAYn0D,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKysC,WAAa,EAAK7mC,oBAAoB,cAC3C,EAAKkmC,UAAY,EAAKlmC,oBAAoB,a,EAElD,OATkC,OASlC,EATA,CAFA,MAEkCQ,cAArB,EAAAguD,gB,0cCFb,IAEA,cAII,WAAYp0D,EAAejD,GAA3B,MACI,YAAMiD,IAAS,KACThG,EAAO,EAAK4L,oBAAoB,Q,OACtC,EAAK5L,KAAe,MAARA,EAAe,GAAKA,EAAKwK,KAAI,SAACuwD,GAAY,WAAIh4D,EAAEg4D,MAC5D,EAAK7lB,kBAAoB,EAAKtpC,oBAAoB,qB,EAE1D,OAVqC,OAUrC,EAVA,CAFA,MAEqCQ,cAAxB,EAAAiuD,gB,ydCFb,YAIA,SAEA,cA+BI,WAAYr0D,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAK5B,GAAK,EAAKwH,oBAAoB,MACnC,EAAKvJ,KAAO,EAAKuJ,oBAAoB,QACrC,EAAKyyC,YAAc,EAAKzyC,oBAAoB,eAC5C,EAAK0yC,UAAY,EAAK1yC,oBAAoB,aAC1C,EAAK2yC,aAAe,EAAK3yC,oBAAoB,gBAC7C,EAAK4yC,UAAY,EAAK5yC,oBAAoB,aAC1C,EAAKy+B,QAAU,EAAKz+B,oBAAoB,WACxC,EAAK6yC,OAAS,EAAK7yC,oBAAoB,UACvC,EAAK8yC,OAAS,EAAK9yC,oBAAoB,UACvC,EAAK+yC,kBAAoB,EAAK/yC,oBAAoB,qBAClD,EAAKgzC,OAAS,EAAKhzC,oBAAoB,UACvC,EAAKizC,iBAAmB,EAAKjzC,oBAAoB,oBACjD,EAAKkzC,SAAW,EAAKlzC,oBAAoB,YACzC,EAAKmzC,gBAAkB,EAAKnzC,oBAAoB,mBAChD,EAAKozC,MAAQ,EAAKpzC,oBAAoB,SACtC,EAAKqzC,eAAiB,EAAKrzC,oBAAoB,kBAC/C,EAAKszC,aAAe,EAAKtzC,oBAAoB,gBAC7C,EAAKxI,IAAM,EAAKwI,oBAAoB,OACpC,EAAKg2B,wBAA0B,EAAKh2B,oBAAoB,2BACxD,EAAK2c,OAAS,EAAK3c,oBAAoB,UACvC,EAAKb,KAAO,EAAKa,oBAAoB,QACrC,EAAK0d,QAAU,EAAK1d,oBAAoB,WACxC,EAAKuzC,SAAW,EAAKvzC,oBAAoB,YACzC,EAAKwzC,WAAa,EAAKxzC,oBAAoB,cAC3C,EAAKyzC,YAAc,IAAI,EAAA1mB,eAAe,EAAK/sB,oBAAoB,gBAC/D,EAAK0zC,sBAAwB,EAAK1zC,oBAAoB,yBACtD,EAAKwrB,OAAS,EAAKxrB,oBAAoB,UACvC,EAAKmpB,WAAa,EAAKnpB,oBAAoB,cAC3C,EAAK2zC,aAAe,EAAK3zC,oBAAoB,gB,EAErD,OA/DiD,OA+DjD,EA/DA,CAAiD,EAAAQ,cAApC,EAAAwmC,+B,0cCNb,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,cASI,WAAY5sC,GAAZ,MACI,YAAMA,IAAS,KARnB,EAAAsR,QAA4B,GAC5B,EAAAD,YAA2C,GAC3C,EAAAgC,QAA4B,GAE5B,EAAA2Z,SAA8B,GAC9B,EAAAgoC,MAAwB,GAKpB,IAAMC,EAAU,EAAKrvD,oBAAoB,WAC1B,MAAXqvD,IACA,EAAKA,QAAU,IAAI,EAAAloB,gBAAgBkoB,IAGvC,IAAM3jD,EAAU,EAAK1L,oBAAoB,WAC1B,MAAX0L,IACA,EAAKA,QAAUA,EAAQ9M,KAAI,SAAC+M,GAAW,WAAI,EAAAirC,eAAejrC,OAG9D,IAAMF,EAAc,EAAKzL,oBAAoB,eAC1B,MAAfyL,IACA,EAAKA,YAAcA,EAAY7M,KAAI,SAACrI,GAAW,WAAI,EAAA6/C,0BAA0B7/C,OAGjF,IAAMkX,EAAU,EAAKzN,oBAAoB,WAC1B,MAAXyN,IACA,EAAKA,QAAUA,EAAQ7O,KAAI,SAACrI,GAAW,WAAI,EAAA8kC,eAAe9kC,OAG9D,IAAMo4D,EAAU,EAAK3uD,oBAAoB,WAC1B,MAAX2uD,IACA,EAAKA,QAAU,IAAI,EAAAhY,gBAAgBgY,IAGvC,IAAMvnC,EAAW,EAAKpnB,oBAAoB,YAC1B,MAAZonB,IACA,EAAKA,SAAWA,EAASxoB,KAAI,SAAC/G,GAAW,WAAI,EAAAuvC,eAAevvC,OAGhE,IAAMu3D,EAAQ,EAAKpvD,oBAAoB,S,OAC1B,MAATovD,IACA,EAAKA,MAAQA,EAAMxwD,KAAI,SAAC5I,GAAW,WAAI,EAAAshD,aAAathD,O,EAGhE,OA/CkC,OA+ClC,EA/CA,CAAkC,EAAAwK,cAArB,EAAAkuD,gB,g1DCTb,WAIA,GAHA,KACA,KAEA,QAOA,GALA,KAEA,KACA,MACA,KACA,Q,sFCXA,4BAAiE,0CAAM,uCAA2E,0CAAwB,qC,mBAAuG,+CAAsB,a,oBAAoB,iBAAQ,kCAAK,kCAAO,mC,MAAnH,6EAA2E,mE,4DAA+C,4BAAoD,4CAAiD,4CAAoB,2CAAiC,Y,mBAAyB,iBAAK,8CAA2B,+CAAwB,4CAAwB,aAAiB,iCAA6B,aAAS,iBAAU,kCAAK,0CAAG,a,oBAA6B,iBAAK,sCAAK,+CAAqB,6CAAoF,a,oBAAmB,iBAAK,6CAAsG,a,oBAA2B,iBAAK,kCAAO,kCAAO,kCAAO,kCAAO,kCAAO,mC,6BAAngB,sEAAyG,4DAA8C,4CAA2B,4EAA8E,2EAAkE,0EAAkD,2EAA4E,mFDah7B,kBAWI,WAAYt9B,EAAgB9D,EAAgCh1B,EAA0BinB,EAClF4Q,EAA0B3Z,EAAoCgC,GADlE,MAEI,YAAM4Y,EAAQ9D,EAAgBh1B,EAAainB,EAAO4Q,EAAa3Z,IAAa,K,OADd,EAAAgC,aALlE,EAAA+uB,cAAgB,6BAEhB,EAAAF,mBAAqB,CAAC,aAAc,iBAAkB,S,SALb,OAYnC,YAAAQ,cAAN,SAAoBH,G,kGAIhB,OAHMzpB,EAAU,IAAI,EAAAqxC,2BACZxyC,MAAQ4qB,EAAQ5qB,MAExB,GAAMlkB,KAAK4f,WAAW+2C,uBAAuB7nB,EAAQve,WAAYue,EAAQngB,eAAgBtJ,I,cAAzF,SACMgqB,EAAe,CACjB9oC,KAAM,UACNhG,MAAOP,KAAKN,YAAYnB,EAAE,kBAC1B8F,KAAMrE,KAAKN,YAAYnB,EAAE,8BACzBgf,QAAS,KAEbvd,KAAK00B,eAAeI,SAASua,GAC7BrvC,KAAKw4B,OAAOkE,SAAS,CAAC,W,YAGpB,YAAA0S,gBAAN,SAAsBN,G,0EAClB9uC,KAAK+6C,aAAejM,EAAQiM,a,4CA5BvB6b,GAAuB,wP,iCAAvBA,EAAuB,kxBCjBpC,+BAAsV,gDAAoqB,iB,MAAz8B,+BAA6T,4D,gFDa9W,CAI6C,EAAApnB,qBAAhC,EAAAonB,2B,+DAAAA,EAAuB,E,KAJnC,EAAA3vD,U,MAAU,CACPnG,SAAU,sBACVoG,YAAa,sC,w/DEfjB,WAoBA,GAhBA,KACA,KAEA,KACA,OACA,KACA,MACA,KACA,KAEA,MAIA,OAEA,Q,uICpB04C,6BAA+B,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,sBAA0E,wBAAqC,Y,mBAA2B,kB,MAA3B,yE,yBAAgZ,yBAA8B,yCAAI,Y,mBAA0B,iBAAM,yCAAK,sCAAqG,+CAAsB,aAAuB,iBAAQ,kCAAM,2CAAK,gDAA8B,aAAc,iBAAQ,kCAAM,yCAAkC,mC,uBAAtS,wEAAwC,6EAA0C,4DAA8E,+DAAgD,4DAAwB,+CAAgC,qE,yBAA1pB,+BAAkE,4CAAQ,yCAAK,4CAAqC,Y,mBAAsB,iBAAM,6CAAqC,gDAAsB,a,oBAAmB,iBAAQ,kCAAM,8CAAqC,a,oBAAiB,iBAAM,8CAAyB,a,oBAAkB,iBAAM,kCAAM,kCAAS,8CAAQ,kDAA8U,kCAAS,mC,8BAAnlB,mEAAuF,iEAAsE,+DAAgD,iEAAiE,iD,mDAA8U,mCAAsG,0FAAoB,MAA0E,sC,mBAAsF,2CAAM,Y,mBAAqB,iBAAQ,iC,oDAA5S,2CAA4B,gCAAwL,6EAA2D,mE,yBAAnlC,6BAA8B,6CAAqE,mDAAgtB,mDAAuU,2C,6BAAxlC,gEAAmG,8DAAw1B,yD,wEDsBziF,cAWI,WAAoB0Y,EAAgC+G,EAAuBugB,EACvExnC,EAA0Bg1B,EAAwC6C,EAClEyxB,EAA8B/rC,EAAoDub,EAClFt3B,EAAgCyuC,GAHpC,MAII,YAAMzI,EAAcxnC,EAAag1B,EAAgBs0B,EAAe/rC,EAAsB/b,IAAW,K,OAJjF,EAAA0e,aAAgC,EAAA+G,QACkB,EAAA4Q,cACgB,EAAAiB,SAClD,EAAAmX,eATpC,EAAAknB,eAAyB,kBAGjB,EAAAC,uBAAyB,IAAIt0D,IAC7B,EAAAu0D,mBAAqB,IAAIv0D,I,SALA,OAc3B,YAAAhC,SAAN,W,qFACIR,KAAK2mB,MAAMY,OAAOA,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,wDAEjC,OADjBxnB,KAAKuwB,WAAa/I,EAAO+I,WACR,GAAMvwB,KAAKu3B,YAAYq7B,YAAY5yD,KAAKuwB,a,OACzD,OAAgB,OADV8kB,EAAW,WACQA,EAAS2E,UAIlC,GAAMh6C,KAAKke,SAHPle,KAAKw4B,OAAOkE,SAAS,CAAC,aAAc18B,KAAKuwB,aACzC,K,cAEJ,S,yBAIF,YAAArS,KAAN,W,qGACqB,SAAMle,KAAK4f,WAAWo3C,iBAAiBh3D,KAAKuwB,a,OAM7D,OANiB,SACR/0B,KAAK6R,SAAQ,SAAAqE,GAClB,IAAM7T,EAAO,EAAK8xC,aAAahwC,UAAU+R,GACzC,EAAKqlD,mBAAmBpzD,IAAI+N,EAAE9R,GAAI,CAAE/B,KAAMA,EAAMqZ,MAAOxF,EAAEwF,QACzD,EAAK4/C,uBAAuBnzD,IAAI+N,EAAEkhB,OAAQ,CAAE/0B,KAAMA,EAAMqZ,MAAOxF,EAAEwF,WAErE,GAAMlX,KAAKkwC,YAAW,I,cAAtB,SACAlwC,KAAK6vC,QAAS,E,YAGR,YAAAonB,cAAV,SAAwBC,EAAmBC,EAAiBzmB,GACxD,OAAO1wC,KAAK4f,WAAWw3C,kBAAkBp3D,KAAKuwB,WAAY2mC,EAAWC,EAASzmB,IAGxE,YAAA2mB,YAAV,SAAsBl5D,EAAkBy0B,GACpC,OAAiB,MAAVA,GAAkB5yB,KAAK82D,uBAAuBjzD,IAAI+uB,GAAU5yB,KAAK82D,uBAAuB54D,IAAI00B,GAAU,M,iCA1CxG0kC,GAAe,+Y,iCAAfA,EAAe,okD,GAAA,MC1B5B,4BAAiC,yCAAI,Y,mBAAsB,iBAAM,4CAA6B,4CAA0B,+CAAmC,a,oBAAsB,iBAAS,gDAAkH,8DAAmB,0CAAuD,K,oBAA5L,iBAAmM,+CAAmB,iBAAC,iBAAQ,gDAAiC,a,oBAAoB,iBAAS,gDAA8G,4DAAiB,0CAAuD,K,oBAAtL,iBAA6L,kCAAO,iDAAqE,kDAAkE,wCAAS,EAAApnB,YAAW,MAAmD,wCAA8G,a,oBAAqB,iBAAU,kCAAQ,kDAAmE,kDAA6H,wCAAS,EAAAqnB,kBAAyE,wCAAyD,6CAAM,a,oBAAmB,iBAAQ,kCAAU,kCAAQ,kCAAO,kCAAO,0DAAkM,0DAA0oC,kB,iDAAjrF,oEAAsH,qEAA4G,uFAAqC,gCAA8I,mEAAwG,qFAAmC,8BAAyG,6DAA+I,4DAA8F,mFAA4D,4EAAyD,4DAAqI,yEAAwC,8CAAkJ,kEAA0E,8CAAkM,+C,qODsB3lD,CAIqC,EAAAC,qBAAxB,EAAAF,mB,+DAAAA,EAAe,E,KAJ3B,EAAArwD,U,MAAU,CACPnG,SAAU,kBACVoG,YAAa,6B,yvDExBjB,WAOA,GANA,KAEA,OACA,KACA,KAEA,Q,GAKA,OACA,O,sDAEA,aAeI,WAAsBggC,EAAsCxnC,EAC9Cg1B,EAA0Cs0B,EAC1C/rC,EAAsD/b,GAF9C,KAAAgmC,eAAsC,KAAAxnC,cAC9C,KAAAg1B,iBAA0C,KAAAs0B,gBAC1C,KAAA/rC,uBAAsD,KAAA/b,aAfpE,KAAAK,SAAU,EACV,KAAAsuC,QAAS,EAIT,KAAA4nB,YAAsB,EAWlB,IAAMznB,EAAehwC,KAAKknC,aAAate,wBACvC5oB,KAAKmpB,MAAQ6mB,EAAa,GAC1BhwC,KAAK8oB,IAAMknB,EAAa,G,OAGtB,YAAAunB,aAAN,W,kGACI,GAAIv3D,KAAK03D,4BAA8B13D,KAAKy3D,WACxC,UAMJ,GAHAz3D,KAAKuB,SAAU,EAGF,OADP+uC,EAAQtwC,KAAK23D,cAEf,U,iBAMA,O,sBAFA33D,KAAK43D,cAAgB53D,KAAK63D,OAAOvnB,EAAM,GAAIA,EAAM,IAEjD,GAAMtwC,KAAK43D,e,cAAX,S,+BAEA53D,KAAKkB,WAAWW,MAAM,sBAAsB,G,oBAGhD7B,KAAK43D,cAAgB,KACrB53D,KAAKuB,SAAU,E,YAGb,YAAA2uC,WAAN,SAAiBC,G,wGACb,GAAInwC,KAAK03D,2BACL,UAIJ,GAAa,OADPpnB,EAAQtwC,KAAK23D,cAEf,UAGJ33D,KAAKuB,SAAU,EACX0hC,EAAsB,G,iBAQP,O,sBANT3M,EAAUt2B,KAAK83D,mBAAmBxnB,EAAM,GAAIA,EAAM,GAAIH,EAAgB,KAAOnwC,KAAK0wC,mBACpFP,EACAnwC,KAAKowC,eAAiB9Z,EAEtBt2B,KAAKqwC,YAAc/Z,EAER,GAAMA,G,cAAfz5B,EAAS,SACfmD,KAAK0wC,kBAAoB7zC,EAAO6zC,kBAChCzN,EAASpmC,EAAOomC,O,+BAEhBjjC,KAAKkB,WAAWW,MAAM,sBAAsB,G,oBAG3CsuC,GAAgC,MAAfnwC,KAAKijC,QAAkBjjC,KAAKijC,OAAOjnC,OAAS,EAC9DgE,KAAKijC,OAASjjC,KAAKijC,OAAO7lB,OAAO6lB,GAEjCjjC,KAAKijC,OAASA,EAGlBjjC,KAAKy3D,YAAa,EAClBz3D,KAAKuB,SAAU,EACfvB,KAAKqwC,YAAc,KACnBrwC,KAAKowC,eAAiB,K,YAMV,YAAA0nB,mBAAhB,SAAmCZ,EAAmBC,EAAiBzmB,G,yGAClD,SAAM1wC,KAAKi3D,cAAcC,EAAWC,EAASzmB,I,OAE/C,OAFTlvC,EAAW,SAEF,GAAM8Y,QAAQK,IAAInZ,EAAShG,KAAKwK,KAAI,SAAM7H,GAAC,qC,4DAEpC,OADZy0B,EAA2B,MAAlBz0B,EAAE0yC,aAAuB1yC,EAAEy0B,OAASz0B,EAAE0yC,aACnC,GAAM7wC,KAAKknC,aAAaxd,aAAavrB,I,OAEvD,OAFM2yC,EAAY,SACZ75B,EAAOjX,KAAKq3D,YAAYl5D,EAAGy0B,GAC1B,CAAP,EAAO,IAAI,EAAAmlC,UAAU,CACjB9mD,QAAS6/B,EAAU7/B,QACnBgZ,qBAAsB6mB,EAAU7mB,qBAChCC,QAAS4mB,EAAU5mB,QACnBC,QAAS2mB,EAAU3mB,QACnByI,OAAQA,EACRme,SAAkB,MAAR95B,EAAeA,EAAKpZ,KAAOmC,KAAKN,YAAYnB,EAAE,WACxDyyC,UAAmB,MAAR/5B,EAAeA,EAAKC,MAAQ,GACvCuZ,KAAMtyB,EAAEsyB,KACRwgB,GAAI9yC,EAAE+yC,UACN3qC,KAAMpI,EAAEoI,oB,OAGhB,OAjBM08B,EAAS,SAiBR,CAAP,EAAO,CAAEyN,kBAAmBlvC,EAASkvC,kBAAmBzN,OAAQA,YAG1D,YAAA00B,WAAV,WACI,IAAIrnB,EAAkB,KACtB,IACIA,EAAQtwC,KAAKknC,aAAa7d,kBAAkBrpB,KAAKmpB,MAAOnpB,KAAK8oB,KAC/D,MAAOrnB,GAGL,OAFAzB,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,qBAChB,KAEX,OAAO+xC,GAGD,YAAAonB,yBAAV,WACI,OAA8B,MAAvB13D,KAAKowC,gBAA8C,MAApBpwC,KAAKqwC,aAA6C,MAAtBrwC,KAAK43D,eAG7D,YAAAC,OAAd,SAAqB1uC,EAAeL,G,wGAC5B4nB,EAAoB1wC,KAAK0wC,kBACzBzN,EAAS,GAAG7lB,OAAOpd,KAAKijC,Q,wBAEA,MAArByN,EAAyB,MACb,GAAM1wC,KAAK83D,mBAAmB3uC,EAAOL,EAAK4nB,I,cAAnD7zC,EAAS,SACf6zC,EAAoB7zC,EAAO6zC,kBAC3BzN,EAASA,EAAO7lB,OAAOvgB,EAAOomC,Q,aAGrB,SAAMjjC,KAAKgpD,cAAcgP,eAAe/0B,I,cAA/CznC,EAAO,SACPolC,EAAW5gC,KAAKgpD,cAAciP,YAAYj4D,KAAK62D,eAAgB,OACrE72D,KAAKid,qBAAqBi7C,SAAS/4D,OAAQ3D,EAAM,CAAE+K,KAAM,cAAgBq6B,G,6CA1I3D42B,GAAmB,kO,iCAAnBA,I,EADtB,GACsB,EAAAA,uB,+DAAAA,EAAmB,E,KADxC,EAAA32D,a,8oDCfD,W,GAIA,KAEA,K,wDCN4M,2BAA0G,Y,mBAAoB,kB,MAApB,0E,sBAAyB,2BAA8H,Y,mBAAuB,kB,MAAvB,6E,yBAAlY,4BAAoC,4CAAyB,Y,mBAAmB,iBAAO,4CAA0C,4CAAmI,6CAA0J,kCAAO,mC,6BAAxW,gEAA8I,8DAAmI,mFDUzZ,iBAQI,WAAoB8lB,EAA+B4Q,GAA/B,KAAA5Q,QAA+B,KAAA4Q,cAFnD,KAAA03B,cAAe,E,OAIf,YAAAzuD,SAAA,sBACIR,KAAK2mB,MAAMY,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,wDAC3B,OAAhB,EAAAxnB,KAAgB,GAAMA,KAAKu3B,YAAYq7B,YAAYprC,EAAO+I,a,cAA1D,EAAK8kB,SAAW,SAChBr1C,KAAKivD,aAAejvD,KAAKq1C,SAAS2E,U,gDATjCme,GAAe,2E,iCAAfA,EAAe,gjBCd5B,4BAAqC,4CAAkB,4CAAoB,+CAA4a,iCAAO,4CAAoB,iDAAgC,kCAAO,kCAAO,kCAAO,kB,MAAze,iD,kHDU9F,GAIa,EAAAA,mB,+DAAAA,EAAe,E,KAJ3B,EAAAlxD,U,MAAU,CACPnG,SAAU,kBACVoG,YAAa,6B,qnEEZjB,WAqBA,GAfA,KACA,KAEA,KACA,MACA,KACA,MACA,KACA,MACA,MACA,KAEA,MACA,MAEA,QACA,SAQA,GANA,OACA,MAKA,QACA,SAGA,SACA,SACA,SACA,SACA,SACA,S,6UCvCmR,8BAA2D,YAAY,kB,6BAAZ,gD,yBAA4M,8BAA+D,YAAgB,kB,6BAAhB,oD,yBAAmN,8BAAmE,YAAiB,kB,6BAAjB,qD,mDAAizB,gCAAwD,8FAAsD,sCAAqD,Y,mBAA6B,iB,MAA7B,mF,sBAAowB,6BAA+B,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,2C,MAAvG,6EAA2E,kE,sBAA0K,wBAAiC,Y,mBAA0B,kB,MAA1B,wE,uBAA2E,qC,mBAA4G,Y,mBAAwC,kB,MAA3H,mEAAmF,8F,uBAAwjB,8BAAgF,Y,mBAAoB,kB,MAApB,kE,uBAA4B,8BAA+E,Y,mBAAqB,kB,MAArB,mE,0BAA6B,+BAAiD,YAAU,kB,uCAAV,4C,uBAA8B,6BAA0C,sC,mBAAoF,8CAAsB,Y,mBAA6B,iBAAQ,2C,MAAzH,sFAAoF,2E,uBAAgE,2BAAgD,Y,mBAA0B,kB,MAA1B,wE,uBAAkC,2BAA8C,Y,mBAAwB,kB,MAAxB,sE,uBAAgC,2BAAyC,Y,mBAAmB,kB,MAAnB,iE,oDAAoY,2BAA+C,+HAAmE,sCAA0D,Y,mBAA8B,iB,MAA9B,oF,oDAAmC,2BAA4D,8HAAmE,sCAAqD,Y,mBAAqB,iB,MAArB,2E,oDAA0B,2BAA+C,6HAA0C,sCAAuD,Y,mBAAoB,iB,MAApB,0E,oDAAyB,2BAA+C,6HAAmF,sCAA2D,Y,mBAAuB,iB,MAAvB,6E,oDAA5qE,yBAAqC,4CAAI,gHAAoD,+CAAuB,0EAAvB,iBAA4D,iCAAM,4CAAgB,+C,wBAA4G,kCAAM,2CAAK,6CAAyB,2GAAkB,aAAW,iBAAK,mDAA4G,mDAA4G,oDAAoE,kCAAM,2CAAK,2DAAyM,kCAAM,2CAAK,mDAAkF,mDAA8E,mDAAoE,kCAAM,8CAAgC,+CAAuC,kD,oBAA+K,wCAAmD,kCAAU,+CAAgD,gDAA+M,gDAA8M,gDAAyK,gDAAyN,6CAA2D,6GAAqB,wCAAsD,a,oBAAoB,iBAAK,kCAAO,kCAAO,kCAAM,kC,+CAAvwE,iDAAuE,2DAAqB,gBAArB,CAAqB,YAArB,CAAqB,eAAiI,4CAAqD,wEAA0G,yEAA4G,2CAA2D,uDAA4M,sEAAkF,oEAA8E,+DAAoR,sFAAwN,wEAA2N,yEAAgM,mDAAyK,0FAA2R,4E,oDAA7rF,6BAA4C,wDAAmK,+CAA+H,+FAAyB,4CAAQ,iDAAi4E,iCAAS,kCAAS,2C,yDAAnoF,uDAA2I,wDAA4B,wCAA2F,0C,0BAA/jB,6BAA8H,6CAAgE,0DAAkxF,2C,kBAA90F,8CAA2E,8C,mMDyCt9F,eAkBI,WAAY0Y,EAAgC+G,EACxCjnB,EAA0BslC,EAC1B/nB,EAA4CyX,EAC5C3Y,EAAsCwb,EAAkCiB,EACxE+gB,EAAgC1P,EAA8B5oC,EAC9DC,EAAwBk3D,EAAwBzoB,GALpD,MAMI,YAAM/vB,EAAYiqB,EAAenqC,EAAaud,EAAsByX,EAAgB3Y,EAChFw9B,EAAgBt4C,EAAmB+jC,EAAc9jC,EAAYk3D,EAAYzoB,IAAa,K,OAPlD,EAAAhpB,QAGF,EAAA4Q,cAAkC,EAAAiB,SAR5E,EAAA6/B,SAAW,EAAAhrB,iBACX,EAAAirB,eAAiB,EAAA3Z,uBAEjB,EAAAsQ,cAAe,E,SAZkB,OAwBjC,YAAAzuD,SAAA,sBACIR,KAAK2mB,MAAMY,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,iEAE1B,OADjBxnB,KAAKuwB,WAAa/I,EAAO+I,WACR,GAAMvwB,KAAKu3B,YAAYq7B,YAAY5yD,KAAKuwB,a,OAEzD,OAFM8kB,EAAW,UAEH8d,gBAKdnzD,KAAKivD,aAAe5Z,EAAS2E,UAE7B,GAAMh6C,KAAKke,UANPle,KAAKw4B,OAAOkE,SAAS,CAAC,OAAQ,CAAEoqB,WAAY9mD,KAAK2mB,QACjD,K,cAKJ,SAEMotC,EAAiB/zD,KAAK2mB,MAAMkoB,YAAYrqC,WAAU,SAAMsqC,GAAO,qC,wCACjE9uC,KAAK8e,WAAagwB,EAAQ3hC,OACA,MAAtB2hC,EAAQypB,aACFthD,EAAOjX,KAAKo/C,MAAM7wC,QAAO,SAAAmD,GAAK,OAAAA,EAAE9R,KAAOkvC,EAAQypB,eAC5Cv8D,OAAS,GAAKib,EAAK,GAAG8M,SAAW,EAAA46B,uBAAuBzD,WAC7Dl7C,KAAKijC,OAAOhsB,EAAK,IAGH,MAAlB88C,GACAA,EAAeC,c,4BAM/B,YAAAwE,SAAA,WACI,OAAOx4D,KAAK4f,WAAWo3C,iBAAiBh3D,KAAKuwB,aAGjD,YAAAkoC,WAAA,SAAW74D,GACP,OAAOI,KAAK4f,WAAW84C,mBAAmB14D,KAAKuwB,WAAY3wB,IAG/D,YAAA+4D,aAAA,SAAa/4D,GACT,OAAOI,KAAK4f,WAAWg5C,yBAAyB54D,KAAKuwB,WAAY3wB,IAG/D,YAAAi5D,YAAN,SAAkB5hD,EAAuCq2B,G,oGACjC,SAAMttC,KAAK+b,cAAcwiB,eAAev+B,KAAKuwB,a,OACrD,OADNiO,EAAc,SACR,GAAMx+B,KAAK+b,cAAc8gC,WAAWre,EAAY5/B,IAAK0uC,EAAUvjC,S,OAG3E,OAHMnL,EAAM,UACNymB,EAAU,IAAI,EAAAyzC,4BACZl6D,IAAMA,EAAImb,gBAClB,GAAM/Z,KAAK4f,WAAWm5C,wBAAwB/4D,KAAKuwB,WAAYtZ,EAAKrX,GAAIylB,I,cAAxE,S,YAGE,YAAAM,KAAN,SAAW1O,G,uGACS,SAAMjX,KAAKglC,aAAaviC,YAAY,EAAAu2D,qBAAsBh5D,KAAKi5D,iBAAiB,SAAA1zB,GAC5FA,EAAK1nC,KAAO,EAAK8xC,aAAahwC,UAAUsX,GACxCsuB,EAAKhV,WAAa,EAAKA,WACvBgV,EAAK5W,eAAyB,MAAR1X,EAAeA,EAAKrX,GAAK,KAC/C2lC,EAAK2zB,YAAY10D,WAAU,WACvBihC,EAAM//B,QACN,EAAKwY,UAETqnB,EAAK4zB,cAAc30D,WAAU,WACzBihC,EAAM//B,QACN,EAAK0zD,WAAWniD,U,cAVjBwuB,EAAS,SAYd,G,YAGA,YAAAxC,OAAN,SAAahsB,G,qGACO,SAAMjX,KAAKglC,aAAaviC,YAAY,EAAA0uC,sBAAuBnxC,KAAKq5D,gBAAgB,SAAA9zB,GAC5FA,EAAK1nC,KAAO,EAAK8xC,aAAahwC,UAAUsX,GACxCsuB,EAAKhV,WAAa,EAAKA,WACvBgV,EAAKkL,SAAWx5B,EAAKrX,GACrB2lC,EAAKqK,UAAW,EAChBrK,EAAKgL,OAAS,W,cALF,SAMd,G,YAGA,YAAA+oB,WAAN,W,qGACI,OAA0B,MAAtBt5D,KAAK8rC,cACL,IAGY,GAAM9rC,KAAKglC,aAAaviC,YAAY,EAAA69C,oBAAqBtgD,KAAKu5D,oBAAoB,SAAAh0B,GAC9FA,EAAKhV,WAAa,EAAKA,WACvBgV,EAAK6Z,MAAQ,EAAKoa,sB,OAGtB,SALgB,SAGd,GAEU13B,mB,OACZ,OADA,SACA,GAAM9hC,KAAKke,Q,cAAX,S,YAGE,YAAAu7C,aAAN,W,+EACI,GAA0B,MAAtBz5D,KAAK8rC,cACL,UAMJ,GAHMsT,EAAQp/C,KAAKw5D,mBACbla,EAAgBF,EAAM7wC,QAAO,SAAAmD,GAAK,OAAAA,EAAEqS,SAAW,EAAA46B,uBAAuB+a,YAE1D19D,QAAU,EAGxB,OAFAgE,KAAK00B,eAAeI,SAAS,QAAS90B,KAAKN,YAAYnB,EAAE,iBACrDyB,KAAKN,YAAYnB,EAAE,8BACvB,IAGJ,IACU8mB,EAAU,IAAI,EAAAw5B,wBAAwBS,EAAct5C,KAAI,SAAAiR,GAAQ,OAAAA,EAAKrX,OACrE4B,EAAWxB,KAAK4f,WAAW+5C,6BAA6B35D,KAAKuwB,WAAYlL,GAC/ErlB,KAAK45D,eAAexa,EAAOE,EAAe99C,EAAUxB,KAAKN,YAAYnB,EAAE,wBACzE,MAAOkD,GACLzB,KAAKiB,kBAAkBc,UAAUN,G,OAErCzB,KAAK8rC,cAAgB,K,WAGnB,YAAA+tB,YAAN,W,qGACI,OAA0B,MAAtB75D,KAAK8rC,cACL,IAGY,GAAM9rC,KAAKglC,aAAaviC,YAAY,EAAA09C,qBAAsBngD,KAAK85D,qBAAqB,SAAAv0B,GAChGA,EAAKhV,WAAa,EAAKA,WACvBgV,EAAK6Z,MAAQ,EAAKoa,sB,OAGtB,SALgB,SAGd,GAEU13B,mB,OACZ,OADA,SACA,GAAM9hC,KAAKke,Q,cAAX,S,YAGU,YAAA07C,eAAd,SAA6Bxa,EAA0CE,EACnEj6B,EAA0D00C,G,mHAE1B,SAAM/5D,KAAKglC,aAAaviC,YAAY,EAAAq8C,oBAAqB9+C,KAAKg6D,oBAAoB,SAAAz0B,GAC9GA,EAAKhkC,SAAU,M,OADb,EAA0B,SAAzBkkC,EAAK,KAAEojB,EAAc,KAKxBnjD,GAAQ,EACZ+/B,EAAMjE,QAAQh9B,WAAU,WAChBkB,GACA+/B,EAAM//B,W,iBAKO,O,sBAAA,GAAM2f,G,cAAjB7jB,EAAW,SAEbikC,IACM,EAAmBjkC,EAAShG,KAAK+S,QAAO,SAAApQ,GAAK,MAAY,KAAZA,EAAE0D,SAAcw0B,QAAO,SAAC3oB,EAAG1C,G,MAAM,cAAM0C,KAAC,MAAG1C,EAAEpL,IAAKoL,EAAEnJ,MAAK,MAAK,IAC3G,EAA0By9C,EAAcjpB,QAAO,SAAC3oB,EAAG1C,G,MAAM,cAAM0C,KAAC,MAAG1C,EAAEpL,IAAKoL,EAAC,MAAK,IAEtF69C,EAAezJ,MAAQA,EAAMp5C,KAAI,SAAAiR,G,MACzBhG,EAA8B,QAAvB,EAAG,EAAYgG,EAAKrX,WAAG,QAAIm6D,EAKtC,OAJK,EAAmB59D,eAAe8a,EAAKrX,MACxCqR,EAAU,EAAKvR,YAAYnB,EAAE,wBAG1B,CACH0Y,KAAMA,EACNpV,MAAO,EAAY1F,eAAe8a,EAAKrX,IACvCqR,QAASA,MAGjB43C,EAAetnD,SAAU,G,6BAG7BmE,GAAQ,EACR+/B,EAAM//B,Q,gEA7LLu0D,GAAe,qiB,iCAAfA,EAAe,wD,GAAA,M,kBAEM,EAAAh0B,kB,kBACO,EAAAA,kB,kBACA,EAAAA,kB,kBACI,EAAAA,kB,kBACC,EAAAA,kB,kBACD,EAAAA,mB,urHCpD7C,4BAAiC,yCAAI,Y,mBAAmB,iBAAM,4CAA6B,4CAAkD,gDAA6F,wCAAS,EAAA13B,OAAO,SAAQ,a,oBAAiB,gCAA+E,kCAAU,iDAA+G,wCAAS,EAAAA,OAAA,6BAAiC,a,oBAAqB,gCAAuF,kCAAU,iDAAgH,wCAAS,EAAAA,OAAA,8BAAkC,a,oBAAsB,gCAA4F,kCAAU,kCAAO,8CAAmB,gDAAoC,a,oBAAmB,iBAAS,gDAAwG,mE,oBAAxG,iBAAkI,kCAAO,8CAA4C,kD,oBAA6M,wCAA6C,kCAAU,+CAAoF,kDAA2C,wCAAS,EAAAkrD,kBAAiB,wCAA0D,a,oBAA8B,iBAAU,oDAA0M,kDAAuD,wCAAS,EAAAH,gBAAe,wCAAsD,a,oBAAoB,iBAAU,0CAAqC,kDAA2C,wCAAS,EAAA3uB,WAAU,MAAQ,wCAA8D,a,oBAAuB,iBAAU,kDAA2C,wCAAS,EAAAA,WAAU,MAAS,wCAA8D,a,oBAAyB,iBAAU,kCAAO,kCAAO,kDAAkE,wCAAS,EAAAuvB,YAAW,wCAAoD,a,oBAAwB,iBAAU,kCAAO,kCAAO,0DAAkM,2D,sBAAg+F,wFAAqC,wFAA4C,wFAA6C,0FAAgD,0FAAiD,0FAAgD,mB,MAAn9L,iEAAgK,+EAA6D,wEAA4D,+CAAsG,mGAAiG,4EAAgE,mDAA8G,oGAAmG,6EAAoE,oDAAsH,kEAAkG,oFAAkC,qCAAqP,sFAA+S,sFAAyH,2DAA8P,2EAAuM,8EAAsK,gFAA2L,+EAA+D,8CAAkM,iJ,gSDyCxxF,CAIqC,EAAAC,qBAAxB,EAAAF,oB,+DAAAA,GAAe,E,KAJ3B,EAAAhzD,U,MAAU,CACPnG,SAAU,kBACVoG,YAAa,6B,uWAImD+xD,gBAAiB,CAAF,C,KAA9E,EAAA55B,U,MAAU,UAAW,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACei0B,eAAgB,CAAF,C,KAApF,EAAA/6B,U,MAAU,iBAAkB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACQkzB,eAAgB,CAAF,C,KAApF,EAAAh6B,U,MAAU,iBAAkB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACY6zB,mBAAoB,CAAF,C,KAA5F,EAAA36B,U,MAAU,qBAAsB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACS2zB,oBAAqB,CAAF,C,KAA9F,EAAAz6B,U,MAAU,sBAAuB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,MACOozB,mBAAoB,CAAF,C,KAA5F,EAAAl6B,U,MAAU,qBAAsB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,S,0+CEpDvE,WAgBA,GAXA,KAEA,MACA,KACA,MACA,KACA,MACA,KACA,MACA,MAEA,OAgBA,GAdA,MAEA,OACA,MAWA,OAEA,S,0HAMA,aAmDI,WAAsBvmB,EAAgCiqB,EACxCnqC,EAAkCud,EAClCyX,EAA0C3Y,EAC5Cw9B,EAA0Ct4C,EACxC+jC,EAAoC9jC,EACtCk3D,EAAkCzoB,GALxB,KAAA/vB,aAAgC,KAAAiqB,gBACxC,KAAAnqC,cAAkC,KAAAud,uBAClC,KAAAyX,iBAA0C,KAAA3Y,gBAC5C,KAAAw9B,iBAA0C,KAAAt4C,oBACxC,KAAA+jC,eAAoC,KAAA9jC,aACtC,KAAAk3D,aAAkC,KAAAzoB,eApB9C,KAAApuC,SAAU,EACV,KAAA84D,UAAY,IAAI73D,IAEhB,KAAA48C,MAAoB,GACpB,KAAAkb,WAAyB,GAIf,KAAAtZ,SAAuB,GAEvB,KAAAxW,WAAY,EACZ,KAAAH,SAAW,IAEb,KAAAkwB,gBAAkB,E,OA5C1B,sBAAI,uBAAQ,C,IAAZ,WACI,OAAwB,MAAjBv6D,KAAKghD,SAAmBhhD,KAAKghD,SAAShlD,OAAS,G,gCAG1D,sBAAI,2BAAY,C,IAAhB,WACI,OAAOgE,KAAKq6D,UAAUx2D,IAAI7D,KAAKs4D,eAAeoB,SAC1C15D,KAAKq6D,UAAUn8D,IAAI8B,KAAKs4D,eAAeoB,SAAS19D,OAAS,G,gCAGjE,sBAAI,4BAAa,C,IAAjB,WACI,OAAOgE,KAAKq6D,UAAUx2D,IAAI7D,KAAKs4D,eAAexY,UAC1C9/C,KAAKq6D,UAAUn8D,IAAI8B,KAAKs4D,eAAexY,UAAU9jD,OAAS,G,gCAGlE,sBAAI,6BAAc,C,IAAlB,WACI,OAAOgE,KAAKq6D,UAAUx2D,IAAI7D,KAAKs4D,eAAepd,WAC1Cl7C,KAAKq6D,UAAUn8D,IAAI8B,KAAKs4D,eAAepd,WAAWl/C,OAAS,G,gCAGnE,sBAAI,+BAAgB,C,IAApB,WACI,OAAwB,MAAjBgE,KAAKghD,UAAsC,MAAlBhhD,KAAKq6D,WAAqBr6D,KAAKghD,SAAShlD,OAAS,GAC7EgE,KAAKw6D,eAAiB,GAAKx6D,KAAKw6D,eAAiB,GAAKx6D,KAAKy6D,cAAgB,G,gCAGnF,sBAAI,mCAAoB,C,IAAxB,WACI,OAAOz6D,KAAKy6D,cAAgB,G,gCAkC1B,YAAAv8C,KAAN,W,6GACqB,SAAMle,KAAKw4D,Y,OAE5B,IAFMh3D,EAAW,SACjBxB,KAAKq6D,UAAUK,QACV,EAAL,EAAqB,IAAA1yD,MAAMoG,YAAYpO,KAAKs4D,gBAAvB,eAAhB,OACDt4D,KAAKq6D,UAAU12D,IAAI,EAAQ,I,OAG/B3D,KAAKghD,SAA4B,MAAjBx/C,EAAShG,MAAgBgG,EAAShG,KAAKQ,OAAS,EAAIwF,EAAShG,KAAO,GACpFwE,KAAKghD,SAAS9N,KAAK,EAAAlrC,MAAMwF,gBAAgBxN,KAAKN,YAAa,UAC3DM,KAAKghD,SAAS3zC,SAAQ,SAAAqE,GACb,EAAK2oD,UAAUx2D,IAAI6N,EAAEqS,QAGtB,EAAKs2C,UAAUn8D,IAAIwT,EAAEqS,QAAQznB,KAAKoV,GAFlC,EAAK2oD,UAAU12D,IAAI+N,EAAEqS,OAAQ,CAACrS,OAKtC1R,KAAKuO,OAAOvO,KAAK+jB,QACjB/jB,KAAKuB,SAAU,E,YAGnB,YAAAgN,OAAA,SAAOwV,GACH/jB,KAAK+jB,OAASA,EACK,MAAf/jB,KAAK+jB,OACL/jB,KAAKo/C,MAAQp/C,KAAKq6D,UAAUn8D,IAAI8B,KAAK+jB,QAErC/jB,KAAKo/C,MAAQp/C,KAAKghD,SAGtBhhD,KAAK2qC,WAAU,GACf3qC,KAAKqrC,eAGT,YAAAT,SAAA,WACI,GAAK5qC,KAAKo/C,SAASp/C,KAAKo/C,MAAMpjD,QAAUgE,KAAKqqC,UAA7C,CAGA,IAAMQ,EAAc7qC,KAAKs6D,WAAWt+D,OAChC8uC,EAAY9qC,KAAKqqC,SACD,IAAhBQ,GAAqB7qC,KAAKu6D,gBAAkBv6D,KAAKqqC,WACjDS,EAAY9qC,KAAKu6D,iBAEjBv6D,KAAKo/C,MAAMpjD,OAAS6uC,IACpB7qC,KAAKs6D,WAAat6D,KAAKs6D,WAAWl9C,OAAOpd,KAAKo/C,MAAM//C,MAAMwrC,EAAaA,EAAcC,KAEzF9qC,KAAKu6D,gBAAkBv6D,KAAKs6D,WAAWt+D,OACvCgE,KAAKwqC,UAAYxqC,KAAKs6D,WAAWt+D,OAASgE,KAAKqqC,WAGnD,YAAAswB,UAAA,SAAU1jD,EAA2Cs1B,GAChDt1B,EAAay1B,QAAoB,MAAVH,GAAmBt1B,EAAay1B,QAAUH,GAGtE,YAAA5B,UAAA,SAAU4B,GACFA,GACAvsC,KAAK2qC,WAAU,GAQnB,IALA,IAAM2U,EAAgBt/C,KAAKo4D,WAAWz4D,UAAUK,KAAKo/C,MAAOp/C,KAAK8e,WAAY,OAAQ,QAAS,MAExF0tB,EAAcD,GAAU+S,EAActjD,OA7H5B,QA+HVsjD,EAActjD,OACXF,EAAI,EAAGA,EAAI0wC,EAAa1wC,IAC7BkE,KAAK26D,UAAUrb,EAAcxjD,GAAIywC,IAInC,YAAAlB,YAAN,W,0EACIrrC,KAAKs6D,WAAa,GAClBt6D,KAAK4qC,W,WAGT,YAAAsvB,OAAA,WACIl6D,KAAK2lB,KAAK,OAGR,YAAA9f,OAAN,SAAaoR,G,gGACS,SAAMjX,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAK2vC,aAAahwC,UAAUsX,GAC1EjX,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,Y,OAEzD,IAJkB,SAKd,MAAO,CAAP,GAAO,GAGXyB,KAAK8rC,cAAgB9rC,KAAKy4D,WAAWxhD,EAAKrX,I,iBAEtC,O,sBAAA,GAAMI,KAAK8rC,e,cAAX,SACA9rC,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAK2vC,aAAahwC,UAAUsX,KAC9GjX,KAAKo5D,WAAWniD,G,+BAEhBjX,KAAKiB,kBAAkBc,UAAU,G,oBAErC/B,KAAK8rC,cAAgB,K,YAGnB,YAAA8uB,SAAN,SAAe3jD,G,gGACX,GAA0B,MAAtBjX,KAAK8rC,cACL,UAGJ9rC,KAAK8rC,cAAgB9rC,KAAK24D,aAAa1hD,EAAKrX,I,iBAExC,O,sBAAA,GAAMI,KAAK8rC,e,cAAX,SACA9rC,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,mBAAoByB,KAAK2vC,aAAahwC,UAAUsX,K,+BAEjHjX,KAAKiB,kBAAkBc,UAAU,G,oBAErC/B,KAAK8rC,cAAgB,K,YAGnB,YAAA+uB,QAAN,SAAc5jD,G,mHAwBV,GAdM4hD,EAAc,SAAOvrB,GAAqB,qC,wDAGxC,O,uBADAttC,KAAK8rC,cAAgB9rC,KAAK64D,YAAY5hD,EAAMq2B,GAC5C,GAAMttC,KAAK8rC,e,cAAX,SAZR,SAAoB1xB,GAChBnD,EAAK8M,OAAS3J,EAAKk+C,eAAepd,UAClC,IAAM4f,EAAW1gD,EAAKigD,UAAUn8D,IAAIkc,EAAKk+C,eAAexY,UAAUpzC,QAAQuK,GACtE6jD,GAAY,IACZ1gD,EAAKigD,UAAUn8D,IAAIkc,EAAKk+C,eAAexY,UAAU5iD,OAAO49D,EAAU,GAClE1gD,EAAKigD,UAAUn8D,IAAIkc,EAAKk+C,eAAepd,WAAW5+C,KAAK2a,IAQvD8jD,CAAW/6D,MACXA,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,mBAAoByB,KAAK2vC,aAAahwC,UAAUsX,K,aAGjH,M,WADAjX,KAAKiB,kBAAkBc,UAAU,GAC3B,E,cAEN/B,KAAK8rC,cAAgB,K,6BAIH,MAAtB9rC,KAAK8rC,cACL,U,iBAI0B,O,wBAAA,GAAM9rC,KAAK4f,WAAWo7C,iBAAiB/jD,EAAK2b,S,OAGlD,OAHdqoC,EAAoB,SACpB,EAAY,EAAAjzD,MAAMY,eAAeqyD,EAAkB3tB,WAErC,GAAMttC,KAAKu5C,eAAer7C,IAAa,EAAAoZ,iBAAiBiB,0B,cACzD,OADb2iD,EAAc,WACQA,EAAxB,MACgB,GAAMl7D,KAAKglC,aAAaviC,YAAY,EAAA04D,qBAAsBn7D,KAAKo7D,iBAAiB,SAAA71B,GAC5FA,EAAK1nC,KAAO,EAAK8xC,aAAahwC,UAAUsX,GACxCsuB,EAAK3S,OAAiB,MAAR3b,EAAeA,EAAK2b,OAAS,KAC3C2S,EAAK+H,UAAY,EACjB/H,EAAK81B,gBAAgB72D,WAAU,gD,wDAEvB,O,sBAAA,GAAMq0D,EAAY,I,cAAlB,SACA,EAAMnzD,Q,+BAEN1F,KAAKkB,WAAWW,MAAM,sBAAsB,G,4CAIxD,OAbO,EAAS,SAYd,GACF,I,OAIoB,O,sBAAA,GAAM7B,KAAK+b,cAAc0jC,eAAexoC,EAAK2b,OAAQ,EAAU7oB,S,cAA7E21C,EAAc,SACpB1/C,KAAKkB,WAAWo6D,KAAK,uBAAuB5b,EAAYz0C,KAAK,M,0CAEjE,SAAM4tD,EAAY,I,cAAlB,S,iCAEA74D,KAAKkB,WAAWW,MAAM,sBAAsB,G,iCAIpD,YAAAupC,YAAA,WACI,OAAOprC,KAAK6pC,cAAc2qB,aAAax0D,KAAK8e,aAGhD,YAAAosB,SAAA,WACI,IAAMC,EAAYnrC,KAAKorC,cAIvB,OAHID,GAAanrC,KAAKwqC,WAClBxqC,KAAKqrC,eAEDF,GAAanrC,KAAKo/C,OAASp/C,KAAKo/C,MAAMpjD,OAASgE,KAAKqqC,UAGtD,YAAAmvB,gBAAV,WACI,OAAOx5D,KAAKo/C,MAAM7wC,QAAO,SAAAmD,GAAK,OAACA,EAAUg7B,YAGnC,YAAA0sB,WAAV,SAAqBniD,GACjB,IAAIskD,EAAQv7D,KAAKo/C,MAAM1yC,QAAQuK,GAC3BskD,GAAS,IACTv7D,KAAKo/C,MAAMliD,OAAOq+D,EAAO,GACzBv7D,KAAKqrC,eAELrrC,KAAKq6D,UAAUx2D,IAAIoT,EAAK8M,UACxBw3C,EAAQv7D,KAAKq6D,UAAUn8D,IAAI+Y,EAAK8M,QAAQrX,QAAQuK,KACnC,GACTjX,KAAKq6D,UAAUn8D,IAAI+Y,EAAK8M,QAAQ7mB,OAAOq+D,EAAO,I,iCAnQxCpB,GAAmB,8b,iCAAnBA,EAAmB,wB,GAAA,K,kBAEC,EAAAl0B,kB,kFAH1C,GACsB,EAAAk0B,uB,+DAAAA,EAAmB,E,KADxC,EAAAt5D,a,0SAG2Eu6D,gBAAiB,CAAF,C,KAAtF,EAAA/7B,U,MAAU,kBAAmB,CAAE6G,KAAM,EAAAD,iBAAkBE,QAAQ,S,2+CC3CpE,WAQA,Q,GAEA,MACA,M,6ECXyU,+BAAuC,YAAQ,kB,6BAAR,4CDahX,iBAcI,WAAoBpqB,EAAsCw9B,GAAtC,KAAAx9B,gBAAsC,KAAAw9B,iBANhD,KAAA8hB,gBAAkB,IAAI,EAAAx0C,aAEhC,KAAA20C,cAAe,EACf,KAAAj6D,SAAU,E,OAKJ,YAAAf,SAAN,W,6HAE8B,MAAlBR,KAAKstC,UAAL,MACoB,GAAMttC,KAAK+b,cAAc0jC,eAAez/C,KAAK4yB,OAAQ5yB,KAAKstC,UAAUvjC,S,OACrE,OADb21C,EAAc,YAEhB1/C,KAAK0/C,YAAcA,EAAYz0C,KAAK,M,wEAIhDjL,KAAKuB,SAAU,E,YAGb,YAAAqzB,OAAN,W,0FACI,OAAI50B,KAAKuB,QACL,IAGAvB,KAAKw7D,aACL,GAAMx7D,KAAKu5C,eAAerK,KAAK,EAAA53B,iBAAiBiB,yBAAyB,IADzE,M,OACA,S,wBAGJvY,KAAKq7D,gBAAgB1zC,O,6CAjChBwzC,GAAoB,6E,iCAApBA,EAAoB,ylC,GAAA,MCjBjC,4BAA0G,4CAAmE,+CAAkC,2CAAY,EAAAvmC,YAAW,4CAA2B,2CAA+C,a,oBAAyB,iCAAwD,kCAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,0CAAI,a,oBAA8C,4BAAiG,a,oBAAsB,iBAAK,kCAAK,0CAAG,4BAAM,aAAe,iBAAO,iBAAK,+CAAyB,iDAAsF,qEAAtF,iBAAkH,iDAAoD,a,oBAAqC,iBAAS,kCAAO,kCAAO,+CAA2B,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAoB,iBAAQ,kCAAU,kDAA6E,a,oBAAmB,iBAAU,kCAAO,kCAAQ,kCAAO,kCAAO,kB,4BAA/kC,iFAAoD,2CAA4F,oFAAyH,sGAA+I,6EAAyC,kDAA0I,sDAAgF,4FAAgJ,kDAA4D,+EAA2D,mEAAmH,oE,8MDar0C,GAIa,EAAAumC,wB,+DAAAA,EAAoB,E,KAJhC,EAAAl0D,U,MAAU,CACPnG,SAAU,mBACVoG,YAAa,mC,qEAGJrJ,KAAM,CAAF,C,KAAZ,EAAAmD,QACQ4xB,OAAQ,CAAF,C,KAAd,EAAA5xB,QACQssC,UAAW,CAAF,C,KAAjB,EAAAtsC,QACSq6D,gBAAe,E,KAAxB,EAAA3yC,Y,60DErBL,WAKA,UACA,SAEA,SAEA,S,2E/GV4d,6BAAoD,sC,mBAAsF,Y,mBAAqB,kB,MAA1E,6EAAqD,2E,sBAA4B,qCAA8D,Y,mBAAuC,kB,MAAvC,6F,yBAAsD,qCAAyC,YAAU,kB,6BAAV,sD,yBAA2kB,+BAAoD,YAAa,kB,uCAAb,4C,yBAAxP,yBAAwC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,2CAAK,aAA8B,iBAAM,mC,4CAAzP,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,uE,yBAA8O,+BAAoD,YAAa,kB,uCAAb,4C,yBAAxP,yBAAwC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,2CAAK,a,oBAAiC,iBAAM,mC,uBAA5P,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,wF,yBAA18B,6BAAyC,wCAAI,Y,mBAA8C,2BAAiG,Y,mBAAsB,iBAAK,iCAAK,gDAA6C,8CAAQ,2CAAK,8CAAgB,a,oBAAiB,iBAAM,2CAAI,a,oBAAwB,iBAAM,kCAAM,kCAAS,iDAAmU,kDAAsU,kCAAS,4C,6BAAn9B,mGAA+I,2EAA0G,iEAA2B,uEAAkE,uDAAmU,wD,yBAAmsB,+BAAoD,YAAa,kB,uCAAb,4C,yBAA4B,yBAAmC,YAA0B,kB,4DAA1B,mE,sBAAgC,yBAAoC,Y,mBAAiC,kB,MAAjC,uF,yBAA3X,yBAAwC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,gDAAmE,gDAA2E,mC,4CAA9V,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,yDAAmE,2D,yBAAjhB,6BAAwC,+CAA6C,4CAAQ,yCAAK,4CAAgB,Y,oBAAiB,iBAAM,2CAAI,a,oBAAmB,iBAAM,kCAAM,kCAAS,kDAAwa,kCAAS,4C,6BAApf,+DAA2B,iEAA6D,wD,mDAA8c,gCAA4F,yFAAoB,sC,mBAAsF,2CAAM,Y,mBAAoB,iBAAQ,iC,gCAAjK,mCAA0E,6EAA2D,kE+Ga5qF,+B,sDAG0C,OAI5B,YAAA22B,WAAV,SAAqBpoC,GACjB,OAAOA,EAAK8M,SAAW,EAAA46B,uBAAuBmB,UAGlC,YAAAP,cAAhB,W,gGAEW,OADDl6B,EAAU,IAAI,EAAAw5B,wBAAwB7+C,KAAKs/C,cAAct5C,KAAI,SAAAiR,GAAQ,OAAAA,EAAKrX,OACzE,GAAMI,KAAK4f,WAAW67C,2BAA2Bz7D,KAAKuwB,WAAYlL,I,OAAzE,MAAO,CAAP,EAAO,kBAGD,YAAAs6B,aAAV,WACI,OAAO3/C,KAAK+b,cAAcwiB,eAAev+B,KAAKuwB,aAGlC,YAAAsvB,mBAAhB,SAAmCD,G,gGAExB,OADDv6B,EAAU,IAAI,EAAAq2C,+BAA+B9b,GAC5C,GAAM5/C,KAAK4f,WAAW+7C,4BAA4B37D,KAAKuwB,WAAYlL,I,OAA1E,MAAO,CAAP,EAAO,kB,+BAnBF86B,I,iCAAAA,EAAoB,+xC/GhBjC,4BAAmG,4CAA4E,4CAA4B,4CAA2B,2CAAwC,Y,oBAA0B,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,gDAAsK,wDAAoH,yDAAkE,4DAAghC,2DAAsnB,kCAAO,+CAA2B,oDAAkP,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAO,kCAAO,kCAAO,kB,MAAzkF,gFAAyF,oFAAyJ,+CAA8J,8DAAmH,4CAAsD,wDAAghC,uDAAmsB,4CAAqQ,mE,8I+Ga/xF,CAG0C,wBAA7B,EAAAA,uB,8BAAAA,I,+DAAAA,EAAoB,E,KAHhC,EAAAl5C,U,MAAU,CACPC,YAAa,qE,MAIJqpB,WAAY,CAAF,C,KAAlB,EAAAvvB,W,40DClBL,WAKA,SAEA,S,2E7GP2d,qCAAsD,Y,mBAAuC,kB,MAAvC,6F,yBAAsD,qCAAyC,YAAU,kB,6BAAV,sD,sBAAsD,qCAAgE,Y,mBAAgC,kB,MAAhC,sF,yBAA2V,+BAAoD,YAAa,kB,uCAAb,4C,yBAAhP,yBAAgC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,mC,uBAAhN,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,4C,yBAA3d,6BAA6B,uDAA+G,+CAA6C,4CAAQ,yCAAK,6CAAgB,a,oBAAiB,iBAAM,kCAAM,kCAAS,iDAAkR,kCAAS,4C,6BAA7d,+DAA4J,+DAA2D,gD,yBAA2nB,+BAAoD,YAAa,kB,uCAAb,4C,yBAA4B,yBAAmC,YAA0B,kB,4DAA1B,mE,sBAAgC,yBAAoC,Y,mBAAiC,kB,MAAjC,uF,yBAAnX,yBAAgC,4CAAgB,+C,uBAAkH,iCAAM,yCAAK,YAAe,kCAA0E,kCAAM,gDAAmE,gDAA2E,mC,4CAA9V,yDAAwB,gBAAxB,CAAwB,YAAxB,CAAwB,eAAyF,qDAAkD,2CAAkD,yDAAmE,2D,yBAA7f,6BAA4B,+CAA6C,4CAAQ,yCAAK,4CAAgB,Y,oBAAiB,iBAAM,2CAAI,a,oBAAmB,iBAAM,kCAAM,kCAAS,kDAAga,kCAAS,4C,6BAA5e,+DAA2B,iEAA6D,gD,mDAAsc,gCAAgH,yFAAoB,sC,mBAAsF,2CAAM,Y,mBAAwB,iBAAQ,iC,gCAArK,mCAA0E,6EAA2D,sE6GSphE,+B,sDAGyC,OAI/B,YAAAo/C,YAAN,W,gGAEW,OADD/6B,EAAU,IAAI,EAAAw5B,wBAAwB7+C,KAAKo/C,MAAMp5C,KAAI,SAAAiR,GAAQ,OAAAA,EAAKrX,OACjE,GAAMI,KAAK4f,WAAWg8C,wBAAwB57D,KAAKuwB,WAAYlL,I,OAAtE,MAAO,CAAP,EAAO,kB,+BANFi7B,I,iCAAAA,EAAmB,gqC7GZhC,4BAAmG,4CAA4E,4CAA4B,4CAA2B,2CAAwC,Y,oBAAyB,iBAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,8CAAyB,wDAA4G,wDAAkE,2DAAuiB,2DAAkmB,kCAAO,+CAA2B,oDAA0Q,kDAA6E,a,oBAAkB,iBAAU,kCAAO,kCAAO,kCAAO,kCAAO,kB,MAAr7D,+EAAwF,oFAAiJ,uDAA2G,4CAAsD,4CAAuiB,2CAA+qB,8DAA6R,mE,8I6GS3oE,CAGyC,uBAA5B,EAAAA,sB,8BAAAA,I,+DAAAA,EAAmB,E,KAH/B,EAAAr5C,U,MAAU,CACPC,YAAa,oE,MAIJqpB,WAAY,CAAF,C,KAAlB,EAAAvvB,W,2+CCdL,WAcA,GANA,KAEA,KACA,KACA,KAEA,SAEA,SAEA,SACA,U,kGCnBiX,+BAAuC,YAAQ,kB,6BAAR,4C,sBAA4K,6BAAyC,sC,mBAAiG,8CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,mDAA6E,6BAAiC,wCAAG,Y,mBAAmC,iBAAK,6CAA8B,+CAAoB,Y,oBAAkB,iBAAS,iDAAkE,mGAAlE,iBAA8G,iDAA0B,a,oBAA2C,iBAAS,kCAAO,2C,iCAAxT,gFAA0F,gEAA6F,gDAAsE,wF,mDAA3U,6BAA0C,0DAA4W,yCAAK,Y,mBAAsB,2B,mBAAyJ,uCAA2D,kCAAK,kCAAM,+CAA+C,iDAAqH,gGAArH,iBAAyI,iDAA2D,a,oBAAyB,6BAAO,a,oBAA4B,iBAAS,kCAAS,kCAAO,+CAA+C,iDAAyH,gGAAzH,iBAA6I,iDAA6D,a,oBAA2B,6BAAO,a,oBAA8B,iBAAS,kCAAS,kCAAO,kC,gCAAjvC,gDAAkW,4EAAwD,uFAAkU,4DAA8B,kBAAgF,gFAAgC,2EAA4L,8DAAgC,kBAAkF,kFAAkC,8E,mDAA8a,mCAAiC,yF,mBAAqK,sCAA0F,sC,mBAAgI,iC,mDAA7U,oEAAoD,mCAA8B,gCAAsE,gDAAgI,6EAA9B,mCDqBrvF,iBAuBI,WAAoB4e,EAAgClgB,EACxCg1B,EAAwCzX,GADhC,KAAA2C,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBAAwC,KAAAzX,uBAhB1C,KAAAi8C,YAAc,IAAI,EAAAryC,aAClB,KAAAsyC,cAAgB,IAAI,EAAAtyC,aAE9B,KAAAtlB,SAAU,EACV,KAAA6mC,UAAoB,EAGpB,KAAA7hC,KAAyB,EAAA8mC,iBAAiBwuB,YAC1C,KAAAhhB,YAAc,IAAI,EAAA1mB,eAClB,KAAA2nC,YAAa,EACb,KAAAC,OAA6B,WAG7B,KAAA1D,SAAW,EAAAhrB,iB,OAKL,YAAA7sC,SAAN,W,mGACIR,KAAKooC,SAAWpoC,KAAKuB,QAAiC,MAAvBvB,KAAK2uB,gBAEhC3uB,KAAKooC,SAAL,YACApoC,KAAKooC,UAAW,EAChBpoC,KAAKO,MAAQP,KAAKN,YAAYnB,EAAE,Y,iBAEf,O,sBAAA,GAAMyB,KAAK4f,WAAWo8C,gBAAgBh8D,KAAKuwB,WAAYvwB,KAAK2uB,iB,cAAnE1X,EAAO,SACbjX,KAAKuG,KAAO0Q,EAAK1Q,K,6DAGrBvG,KAAKO,MAAQP,KAAKN,YAAYnB,EAAE,c,wBAGpCyB,KAAKuB,SAAU,E,YAGb,YAAAqzB,OAAN,W,gGAYQ,O,sBAVI50B,KAAKooC,WACC/iB,EAAU,IAAI,EAAA42C,2BACZ11D,KAAOvG,KAAKuG,KACpBvG,KAAKi1B,YAAcj1B,KAAK4f,WAAWs8C,gBAAgBl8D,KAAKuwB,WAAYvwB,KAAK2uB,eAAgBtJ,MAEnFA,EAAU,IAAI,EAAA82C,2BACZC,OAASp8D,KAAKo8D,OAAO7vD,OAAOa,MAAM,WAC1CiY,EAAQ9e,KAAOvG,KAAKuG,KACpBvG,KAAKi1B,YAAcj1B,KAAK4f,WAAWy8C,uBAAuBr8D,KAAKuwB,WAAYlL,IAE/E,GAAMrlB,KAAKi1B,a,cAAX,SACAj1B,KAAK00B,eAAeI,SAAS,UAAW,KACpC90B,KAAKN,YAAYnB,EAAEyB,KAAKooC,SAAW,eAAiB,eAAgBpoC,KAAKnC,OAC7EmC,KAAKk5D,YAAYvxC,O,4DAInB,YAAAkkB,OAAN,W,0FACI,OAAK7rC,KAAKooC,SAIQ,GAAMpoC,KAAKid,qBAAqB0nB,WAC9C3kC,KAAKN,YAAYnB,EAAE,0BAA2ByB,KAAKnC,KACnDmC,KAAKN,YAAYnB,EAAE,OAAQyB,KAAKN,YAAYnB,EAAE,MAAO,YALrD,I,OAMJ,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADAyB,KAAKs8D,cAAgBt8D,KAAK4f,WAAW84C,mBAAmB14D,KAAKuwB,WAAYvwB,KAAK2uB,gBAC9E,GAAM3uB,KAAKs8D,e,cAAX,SACAt8D,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,gBAAiByB,KAAKnC,OACvFmC,KAAKm5D,cAAcxxC,O,6FA1ElBqxC,GAAoB,yJ,iCAApBA,EAAoB,6pE,GAAA,MCzBjC,4BAA0G,4CAA4E,+CAAkC,2CAAY,EAAApkC,YAAyD,4CAA2B,2CAA+C,aAAU,iCAAwD,kCAAM,iD,oBAA4F,+CAAyB,iBAAO,iBAAQ,kCAAU,kCAAO,gDAAmM,kDAAizC,+CAA2B,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAiB,iBAAQ,kCAAU,kDAA8E,a,oBAAoB,iBAAU,+CAAsB,qDAA0a,kCAAO,kCAAO,kCAAQ,kCAAO,kCAAO,kB,4BAAxoF,0DAAyH,qDAAqC,2CAA4F,oFAAqH,8CAAmM,+CAA42C,kDAA4D,+EAA2D,gEAAiH,2EAA2K,iD,wODqB/hF,GAIa,EAAAokC,wB,+DAAAA,EAAoB,E,KAJhC,EAAA/xD,U,MAAU,CACPnG,SAAU,yBACVoG,YAAa,oC,qHAGJrJ,KAAM,CAAF,C,KAAZ,EAAAmD,QACQ2tB,eAAgB,CAAF,C,KAAtB,EAAA3tB,QACQuvB,WAAY,CAAF,C,KAAlB,EAAAvvB,QACSk4D,YAAW,E,KAApB,EAAAxwC,SACSywC,cAAa,E,KAAtB,EAAAzwC,Y,w+CE9BL,W,GACA,KAEA,KACA,K,kCAEA,aAKI,WAAoB/B,EAA+B4Q,EACvCta,GADQ,KAAA0J,QAA+B,KAAA4Q,cACvC,KAAAta,uB,OAEZ,YAAAzc,SAAA,sBACIR,KAAK2mB,MAAMY,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,kDAC1B,SAAMxnB,KAAKu3B,YAAYq7B,YAAYprC,EAAO+I,a,cAA1C,S,gDANhBgsC,GAAiB,uH,iCAAjBA,EAAiB,mSCV9B,4BAAqC,4CAAkB,4CAAoB,4CAAmB,4CAAyB,Y,oBAAqB,iBAAO,8CAA0C,4CAA2E,a,oBAAwB,iBAAK,kCAAO,kCAAO,kCAAO,8CAAoB,iDAAgC,kCAAO,kCAAO,kCAAO,kB,MAA5Q,mEAAiJ,gF,2GDMxQ,GAIa,EAAAA,qB,+DAAAA,EAAiB,E,KAJ7B,EAAAt1D,U,MAAU,CACPnG,SAAU,oBACVoG,YAAa,+B,s7DERjB,WAEA,S,kDCFA,4BAAiE,0CAAM,uCAA2E,0CAAwB,qC,mBAAuG,+CAAsB,a,oBAAoB,iBAAQ,kCAAK,kCAAO,mC,MAAnH,6EAA2E,mE,4DAA+C,4BAAoD,4CAAiD,4CAAoB,2CAAiC,Y,mBAA0B,iBAAK,8CAA2B,+CAAwB,0CAAG,a,oBAAmC,iBAAK,sCAAK,+CAAqB,6CAAoF,a,oBAAmB,iBAAK,kCAAO,kCAAO,kCAAO,kCAAO,kCAAO,mC,6BAAtS,uEAAqF,iFAAoF,2EAAkE,0EDI3tB,6E,OAMI,EAAAwnC,mBAAqB,0BACrB,EAAAC,cAAgB,qBAEhB,EAAAF,mBAAqB,CAAC,aAAc,QAAS,S,SALL,OAOlC,YAAAQ,cAAN,SAAoBH,G,0EAChB9uC,KAAKw4B,OAAOkE,SAAS,CAAC,oBAAqB,CAACmS,YAAaC,I,WAIvD,YAAAM,gBAAN,SAAsBN,G,mHAZb0tB,I,iCAAAA,EAAsB,iqBCRnC,+BAAsV,gDAAuc,iB,MAA5uB,+BAA6T,4D,gFDI9W,CAI4C,EAAAhtB,qBAA/B,EAAAgtB,yB,8BAAAA,I,+DAAAA,EAAsB,E,KAJlC,EAAAv1D,U,MAAU,CACPnG,SAAU,qBACVoG,YAAa,oC,i/CENjB,WAmBA,GAfA,KAIA,KAKA,KACA,MAEA,MACA,KACA,MACA,S,8JCnB48B,gCAAwD,0FAAuC,Y,mBAAoB,iB,MAApB,0E,mDAAj4B,+BAAY,4FAAqF,2CAAiB,Y,mBAA+B,iBAAM,4CAAkB,4CAA+B,gDAAkB,a,oBAAyB,iBAAS,gDAA8D,gGAA9D,iBAA2F,kCAAO,8CAA+B,iDAA0B,a,oBAAyB,iBAAS,iDAA8E,wGAA9E,iBAAmH,kCAAO,kCAAO,+CAAmB,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAmB,iBAAQ,kCAAU,oDAA6H,kCAAO,kC,mDAAp4B,2CAAgF,6EAAwG,wEAAgG,8CAA6F,wEAAgH,sDAA+H,kDAA4D,+EAA2D,kEAAiH,kDDqBxhC,iBAeI,WAAoBsxB,EAAwB9D,EAChCh1B,EAAkCinB,EAClC5K,EAAsC6D,EACtC4X,EAAkCv2B,GAH1B,KAAAu3B,SAAwB,KAAA9D,iBAChC,KAAAh1B,cAAkC,KAAAinB,QAClC,KAAA5K,gBAAsC,KAAA6D,aACtC,KAAA4X,cAAkC,KAAAv2B,oBAb9C,KAAAM,SAAU,EACV,KAAA8iC,QAAS,E,OAcT,YAAA7jC,SAAA,sBACI4D,SAASC,KAAKQ,UAAUgB,OAAO,mBAC/B,IAAI+oC,GAAQ,EACZ5uC,KAAK2mB,MAAMkoB,YAAYrqC,WAAU,SAAMsqC,GAAO,qC,4DAC1C,GAAIF,EACA,UAKJ,GAHAA,GAAQ,EAC4B,MAAtBE,EAAQve,YAAuC,MAAjBue,EAAQ53B,OAAkC,MAAjB43B,EAAQ5qB,MAWzE,OARMmrB,EAAe,CACjB9oC,KAAM,QACNhG,MAAO,KACP8D,KAAMrE,KAAKN,YAAYnB,EAAE,+BACzBgf,QAAS,KAEbvd,KAAK00B,eAAeI,SAASua,GAC7BrvC,KAAKw4B,OAAOkE,SAAS,CAAC,MACtB,IAGJ18B,KAAKuwB,WAAaue,EAAQve,WAC1BvwB,KAAKkkB,MAAQ4qB,EAAQ5qB,M,iBAIA,O,sBAAA,GAAMlkB,KAAK4f,WAAWgzC,YAAY5yD,KAAKuwB,a,cACnC,OADf8kB,EAAW,UACJx3C,MACTmC,KAAKw4B,OAAOkE,SAAS,CAAC,aAAc2Y,EAASz1C,IAAK,CAAE68D,YAAY,I,+BAGpEz8D,KAAKiB,kBAAkBc,UAAU,GACjC/B,KAAKw4B,OAAOkE,SAAS,CAAC,M,kCAK5B,YAAA9H,OAAN,W,0FAEI,OADA50B,KAAKi1B,YAAcj1B,KAAK87B,WACxB,GAAM97B,KAAKi1B,a,cAAX,SACAj1B,KAAKi1B,YAAc,K,YAGjB,YAAA6G,SAAN,W,wGAEyB,O,sBAAA,GAAM97B,KAAK+b,cAAcigB,gB,OASzB,OATXC,EAAW,SACXr9B,EAAMq9B,EAAS,GAAGliB,iBAElBsL,EAAU,IAAI,EAAAq3C,sBACZ7+D,KAAOmC,KAAKnC,KACpBwnB,EAAQuY,aAAe59B,KAAK49B,aAC5BvY,EAAQnB,MAAQlkB,KAAKkkB,MACrBmB,EAAQzmB,IAAMA,EAEG,GAAMoB,KAAK4f,WAAW+8C,kBAAkB38D,KAAKuwB,WAAYlL,I,OAE1E,OAFMgwB,EAAW,SACjBr1C,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,kBACjE,GAAMyB,KAAKw3B,YAAYO,UAAS,I,cAAhC,SAEA/3B,KAAKw4B,OAAOkE,SAAS,CAAC,aAAc2Y,EAASz1C,K,+BAE7CI,KAAKiB,kBAAkBc,UAAU,G,gEA7EhC66D,GAAc,kS,iCAAdA,EAAc,k0BCzB3B,4BAA0B,4CAAqC,4CAA0B,yCAAI,Y,mBAA0B,iBAAM,iCAAO,0CAAG,a,oBAA8B,iBAAK,mDAA86B,kCAAO,8CAA0B,kB,MAA5hC,uEAA0C,4EAAoH,gD,2NDqB3P,GAIa,EAAAA,kB,+DAAAA,EAAc,E,KAJ1B,EAAA31D,U,MAAU,CACPnG,SAAU,iBACVoG,YAAa,4B,mrDEvBjB,WAUA,GATA,KACA,KAEA,KACA,KACA,MACA,KACA,MAEA,S,sHCVkE,0BAAsB,qC,mBAAiG,6CAAsB,Y,mBAAoB,iBAAQ,kC,MAAvG,6EAA2E,kE,mDAAmC,+BAAyC,4FAAqE,4CAAkB,4CAAoB,4CAAyB,+CAAkB,a,oBAAyB,iBAAS,iDAA8D,yGAA9D,iBAAmH,kCAAO,8CAAyB,iDAA0B,a,oBAAyB,iBAAS,iDAA8E,iHAA9E,iBAA2I,kCAAO,kCAAO,8CAAoB,iDAA0F,kCAAO,kCAAO,kDAAoF,wC,oBAAsF,6CAAM,a,oBAAiB,iBAAQ,kCAAU,kC,mDAAz1B,2CAAgI,yEAAgG,uDAA2B,yBAAoF,wEAAgH,+DAAmC,yBAAwE,+DAAqJ,kDAA4D,+EAA2D,iEDcvmC,iBAaI,WAAoB0Y,EAAgClgB,EACxCg1B,EAAwC/N,EACxC6Q,EAAkCva,EAClC/b,GAHQ,KAAA0e,aAAgC,KAAAlgB,cACxC,KAAAg1B,iBAAwC,KAAA/N,QACxC,KAAA6Q,cAAkC,KAAAva,uBAClC,KAAA/b,aAXZ,KAAAu2B,YAAa,EACb,KAAAl2B,SAAU,E,OAYJ,YAAAf,SAAN,W,qFACIR,KAAKy3B,WAAaz3B,KAAKid,qBAAqB0a,aAC5C33B,KAAK2mB,MAAMY,OAAOA,OAAOC,OAAOhjB,WAAU,SAAMgjB,GAAM,qC,0DAClDxnB,KAAKuwB,WAAa/I,EAAO+I,W,iBAEL,O,sBAAhB,EAAAvwB,KAAgB,GAAMA,KAAK4f,WAAWgzC,YAAY5yD,KAAKuwB,a,cAAvD,EAAK8kB,SAAW,S,+BAEhBr1C,KAAKkB,WAAWW,MAAM,sBAAsB,G,iCAGpD7B,KAAKuB,SAAU,E,WAGb,YAAAqzB,OAAN,W,yGAUQ,O,uBARMvP,EAAU,IAAI,EAAAw3C,uBACZh/D,KAAOmC,KAAKq1C,SAASx3C,KAC7BwnB,EAAQyX,aAAe98B,KAAKq1C,SAASvY,aACrCzX,EAAQuY,aAAe59B,KAAKq1C,SAASzX,aAErC59B,KAAKi1B,YAAcj1B,KAAK4f,WAAWk9C,YAAY98D,KAAKuwB,WAAYlL,GAAS/jB,MAAK,WAC1E,OAAO,EAAKk2B,YAAYO,UAAS,MAErC,GAAM/3B,KAAKi1B,a,cAAX,SACAj1B,KAAK00B,eAAeI,SAAS,UAAW,KAAM90B,KAAKN,YAAYnB,EAAE,oB,+BAEjEyB,KAAKkB,WAAWW,MAAM,sBAAsB,G,gEAxC3Ck7D,GAAgB,oQ,iCAAhBA,EAAgB,qyBClB7B,4BAA0B,yCAAI,Y,mBAAuB,iBAAM,iCAAO,8CAAgL,iDAAg6B,kB,MAApnC,oEAA0C,8CAAiL,6D,qLDczP,GAIa,EAAAA,oB,+DAAAA,EAAgB,E,KAJ5B,EAAA91D,U,MAAU,CACPnG,SAAU,mBACVoG,YAAa,8B,6REhBjB,aACA,OAIA,OACA,OACA,QACA,OAEA,OACA,SAEA,SAEA,QACA,SACA,SAEA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SAGA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAIA,UACA,UAGA,UACA,UAGA,UAGA,UACA,UAGA,UAIA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UAEA,SACA,UAEA,SACA,SACA,SACA,UACA,WACA,UACA,SACA,UACA,SACA,SACA,UAEA,UACA,QACA,WACA,UACA,SAEA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,U,gBAEA,EAAA81D,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAY,SAE/B,gC,wCAgMaC,I,iCAAAA,I,sCAHE,CAAC,EAAAC,SAAU,GAAAh+C,WAAY,GAAA/H,cAAa,SA5LtC,CACL,EAAAgmD,aACA,EAAAC,YACA,EAAAC,qBACA,EAAAC,eACA,EAAAC,cAAcC,WACd,EAAAC,oBACA,EAAAC,iB,EARR,GAgMa,EAAAT,c,iEAAAA,GAAS,eArLd,GAAAr8D,mBACA,EAAA+8D,yBACA,GAAAC,gBACA,EAAAC,4BACA,GAAAd,iBACA,EAAAe,qBACA,GAAArY,mBACA,GAAApgB,iBACA,GAAA2gB,uBACA,GAAA+X,qBACA,GAAAhX,uBACA,GAAA/kD,mBACA,GAAAggD,gBACA,EAAAgc,aACA,GAAAjP,qBACA,GAAAh4C,mBACA,EAAAknD,gBACA,GAAAC,mBACA,GAAAC,gBACA,GAAAC,sBACA,GAAA/M,qBACA,GAAAlB,oBACA,GAAAc,kBACA,GAAAT,qBACA,GAAAK,mBACA,GAAA7pD,iBACA,GAAAq3D,qBACA,GAAAC,mBACA,GAAAxrB,wBACA,GAAAyrB,oBACA,GAAApxB,iBACA,GAAAkiB,qBACA,GAAAqD,kBACA,GAAAsC,4BACA,GAAAwJ,6BACA,GAAAC,uBACA,GAAAC,4BACA,GAAAC,qBACA,GAAAC,yBACA,GAAAC,gCACA,GAAAC,oCACA,GAAAC,yBACA,GAAAC,gCACA,GAAAC,iCACA,GAAAC,6BACA,GAAAC,0BACA,GAAAjW,gBACA,GAAAS,gCACA,GAAAyV,qBACA,GAAAC,uBACA,EAAA9mC,gBACA,EAAAgoB,wBACA,GAAA5G,mBACA,EAAA2lB,cACA,GAAAr/D,SACA,GAAAue,cACA,GAAAyuC,gBACA,GAAAY,iCACA,GAAAv3C,uBACA,GAAAipD,iBACA,EAAAC,cACA,EAAAC,eACA,EAAArnC,gBACA,GAAAsnC,iBACA,mBACA,oBACA,GAAAC,6BACA,GAAAvgC,2BACA,GAAAwgC,kCACA,wBACA,sBACA,uBACA,sBACA,oBACA,6BACA,wBACA,wBACA,uBACA,kBACA,mBACA,mCACA,mBACA,oCACA,wBACA,sBACA,kBACA,uBACA,kBACA,kBACA,sBACA,oBACA,yBACA,kCACA,qBACA,kBACA,2BACA,uBACA,uBACA,sBACA,GAAA3iB,uBACA,EAAA4iB,4BACA,oCACA,kBACA,gCACA,GAAAC,2BACA,GAAAC,kCACA,EAAAtrC,0BACA,EAAAurC,0BACA,GAAAv7C,iBACA,GAAAw7C,iBACA,GAAAC,iBACA,GAAAhe,oBACA,EAAAie,uBACA,EAAAC,0BACA,EAAAC,kBACA,GAAApS,+BACA,GAAAqS,kBACA,GAAAphD,WACA,GAAAmzC,oBACA,oBACA,wBACA,GAAAkO,cACA,GAAAhE,kBACA,GAAAiE,eACA,EAAAC,aACA,GAAA3qD,mBACA,GAAAU,kBACA,GAAAiS,iBACA,GAAAi4C,eACA,GAAAznB,wBACA,GAAA+O,gCACA,EAAA2Y,mBACA,GAAAnZ,sBACA,GAAAc,wBACA,EAAAsY,0BACA,GAAAjY,2BACA,GAAAI,wBACA,GAAAhzB,yBACA,GAAAyyB,2BACA,GAAAL,0BACA,GAAAgG,iCACA,GAAA0S,mBACA,GAAAxa,uBACA,EAAAya,4BACA,GAAAhd,qBACA,EAAAid,oBACA,GAAAC,0BACA,GAAA7pD,aACA,GAAA8pD,eACA,GAAAC,qBACA,EAAAC,0BACA,EAAAC,6BACA,GAAAxS,6BACA,GAAApO,mBACA,GAAA6gB,uCACA,GAAAC,8BACA,GAAAC,yBACA,GAAAC,iCACA,GAAAC,0BACA,GAAAC,iCACA,GAAAC,2BACA,GAAAC,2BACA,GAAAC,8BAA4B,SA3K5B,EAAA1E,aACA,EAAAC,YACA,EAAAC,qBACA,EAAAC,eAAc,iBAEd,EAAAG,oBACA,EAAAC,cAAY,SAwKZ,GAAA98D,mBACA,EAAAq9D,gBACA,GAAAj3D,iBACA,GAAAhF,mBACA,GAAA8T,mBACA,GAAAU,kBACA,GAAAvW,SACA,GAAAif,WACA,GAAA/H,aACA,EAAAihB,gBACA,EAAAG,gBACA,GAAA6G,+B,gEAKK69B,GAAS,E,KAhMrB,EAAA6E,S,MAAS,CACNC,QAAS,CACL,EAAA5E,aACA,EAAAC,YACA,EAAAC,qBACA,EAAAC,eACA,EAAAC,cAAcC,WACd,EAAAC,oBACA,EAAAC,cAEJsE,aAAc,CACV,GAAAphE,mBACA,EAAA+8D,yBACA,GAAAC,gBACA,EAAAC,4BACA,GAAAd,iBACA,EAAAe,qBACA,GAAArY,mBACA,GAAApgB,iBACA,GAAA2gB,uBACA,GAAA+X,qBACA,GAAAhX,uBACA,GAAA/kD,mBACA,GAAAggD,gBACA,EAAAgc,aACA,GAAAjP,qBACA,GAAAh4C,mBACA,EAAAknD,gBACA,GAAAC,mBACA,GAAAC,gBACA,GAAAC,sBACA,GAAA/M,qBACA,GAAAlB,oBACA,GAAAc,kBACA,GAAAT,qBACA,GAAAK,mBACA,GAAA7pD,iBACA,GAAAq3D,qBACA,GAAAC,mBACA,GAAAxrB,wBACA,GAAAyrB,oBACA,GAAApxB,iBACA,GAAAkiB,qBACA,GAAAqD,kBACA,GAAAsC,4BACA,GAAAwJ,6BACA,GAAAC,uBACA,GAAAC,4BACA,GAAAC,qBACA,GAAAC,yBACA,GAAAC,gCACA,GAAAC,oCACA,GAAAC,yBACA,GAAAC,gCACA,GAAAC,iCACA,GAAAC,6BACA,GAAAC,0BACA,GAAAjW,gBACA,GAAAS,gCACA,GAAAyV,qBACA,GAAAC,uBACA,EAAA9mC,gBACA,EAAAgoB,wBACA,GAAA5G,mBACA,EAAA2lB,cACA,GAAAr/D,SACA,GAAAue,cACA,GAAAyuC,gBACA,GAAAY,iCACA,GAAAv3C,uBACA,GAAAipD,iBACA,EAAAC,cACA,EAAAC,eACA,EAAArnC,gBACA,GAAAsnC,iBACA,mBACA,oBACA,GAAAC,6BACA,GAAAvgC,2BACA,GAAAwgC,kCACA,wBACA,sBACA,uBACA,sBACA,oBACA,6BACA,wBACA,wBACA,uBACA,kBACA,mBACA,mCACA,mBACA,oCACA,wBACA,sBACA,kBACA,uBACA,kBACA,kBACA,sBACA,oBACA,yBACA,kCACA,qBACA,kBACA,2BACA,uBACA,uBACA,sBACA,GAAA3iB,uBACA,EAAA4iB,4BACA,oCACA,kBACA,gCACA,GAAAC,2BACA,GAAAC,kCACA,EAAAtrC,0BACA,EAAAurC,0BACA,GAAAv7C,iBACA,GAAAw7C,iBACA,GAAAC,iBACA,GAAAhe,oBACA,EAAAie,uBACA,EAAAC,0BACA,EAAAC,kBACA,GAAApS,+BACA,GAAAqS,kBACA,GAAAphD,WACA,GAAAmzC,oBACA,oBACA,wBACA,GAAAkO,cACA,GAAAhE,kBACA,GAAAiE,eACA,EAAAC,aACA,GAAA3qD,mBACA,GAAAU,kBACA,GAAAiS,iBACA,GAAAi4C,eACA,GAAAznB,wBACA,GAAA+O,gCACA,EAAA2Y,mBACA,GAAAnZ,sBACA,GAAAc,wBACA,EAAAsY,0BACA,GAAAjY,2BACA,GAAAI,wBACA,GAAAhzB,yBACA,GAAAyyB,2BACA,GAAAL,0BACA,GAAA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eAAc,WAAM,2B,wHAglBzB,EA/0BA,GAAa,EAAAziG,iB,uGCrCA,EAAAorG,gBAAkB,CAC3B,SACA,UACA,YACA,QACA,UACA,UACA,SACA,OACA,WACA,WACA,WACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,SACA,SACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,WACA,UACA,OACA,UACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,OACA,UACA,YACA,WACA,WACA,UACA,YACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,QACA,QACA,MACA,UACA,UACA,OACA,OACA,OACA,WACA,WACA,SACA,WACA,QACA,UACA,OACA,MACA,YACA,UACA,QACA,MACA,SACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,MACA,UACA,QACA,MACA,WACA,OACA,YACA,QACA,YACA,UACA,UACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,YACA,YACA,UACA,S,y+CCjmPJ,aAEA,SAEA,QAKA,aAcI,WAAoBhyD,GAAA,KAAAA,iBAZH,KAAA2yD,YAAc,IAAI,EAAAjrE,QACnC,KAAAkrE,KAAyBnsG,KAAKksG,YAqMlC,OAxLI,YAAA/T,WAAA,WACI,OAAuB,MAAhBn4F,KAAKosG,SAGhB,YAAAC,oBAAA,WACI,OAA6B,MAAzBrsG,KAAKssG,iBACEtsG,KAAKssG,iBAGI,MAAhBtsG,KAAKosG,QACEpsG,KAAKosG,QAAU,iBAGnB,uCAGX,YAAAzkC,iBAAA,WACI,OAA0B,MAAtB3nE,KAAK6yE,cACE7yE,KAAK6yE,cAGI,MAAhB7yE,KAAKosG,QACEpsG,KAAKosG,QAAU,UAGnB,gCAGX,YAAA3iC,eAAA,WACI,OAAwB,MAApBzpE,KAAKwpE,YACExpE,KAAKwpE,YAGZxpE,KAAKosG,QACEpsG,KAAKosG,QAET,+BAGX,YAAAG,WAAA,WACI,MAAiC,gCAA1BvsG,KAAKypE,iBACN,+BACAzpE,KAAKypE,iBAAmB,YAGlC,YAAA3rD,YAAA,WACI,OAAqB,MAAjB9d,KAAK6d,SACE7d,KAAK6d,SAGZ7d,KAAKosG,QACEpsG,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","file":"app/main.5c0db323b598138d1784.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([970,2]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export abstract class I18nService {\n locale: string;\n supportedTranslationLocales: string[];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames: Map;\n t: (id: string, p1?: string, p2?: string, p3?: string) => string;\n translate: (id: string, p1?: string, p2?: string, p3?: string) => string;\n}\n","import { DeviceType } from '../enums/deviceType';\n\nexport abstract class PlatformUtilsService {\n identityClientId: string;\n getDevice: () => DeviceType;\n getDeviceString: () => string;\n isFirefox: () => boolean;\n isChrome: () => boolean;\n isEdge: () => boolean;\n isOpera: () => boolean;\n isVivaldi: () => boolean;\n isSafari: () => boolean;\n isIE: () => boolean;\n isMacAppStore: () => boolean;\n isViewOpen: () => Promise;\n /**\n * @deprecated This only ever returns null. Pull from your platform's storage using ConstantsService.vaultTimeoutKey\n */\n lockTimeout: () => number;\n launchUri: (uri: string, options?: any) => void;\n saveFile: (win: Window, blobData: any, blobOptions: any, fileName: string) => void;\n getApplicationVersion: () => Promise;\n supportsWebAuthn: (win: Window) => boolean;\n supportsDuo: () => boolean;\n showToast: (type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any) => void;\n showDialog: (body: string, title?: string, confirmText?: string, cancelText?: string,\n type?: string, bodyIsHtml?: boolean) => Promise;\n isDev: () => boolean;\n isSelfHost: () => boolean;\n copyToClipboard: (text: string, options?: any) => void | boolean;\n readFromClipboard: (options?: any) => Promise;\n supportsBiometric: () => Promise;\n authenticateBiometric: () => Promise;\n getDefaultSystemTheme: () => Promise<'light' | 'dark'>;\n onDefaultSystemThemeChange: (callback: ((theme: 'light' | 'dark') => unknown)) => unknown;\n supportsSecureStorage: () => boolean;\n}\n","import { PolicyType } from '../enums/policyType';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\n\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationImportRequest } from '../models/request/organizationImportRequest';\nimport { OrganizationKeysRequest } from '../models/request/organizationKeysRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserBulkConfirmRequest } from '../models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from '../models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from '../models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { OrganizationUserResetPasswordRequest } from '../models/request/organizationUserResetPasswordRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { ProviderAddOrganizationRequest } from '../models/request/provider/providerAddOrganizationRequest';\nimport { ProviderOrganizationCreateRequest } from '../models/request/provider/providerOrganizationCreateRequest';\nimport { ProviderSetupRequest } from '../models/request/provider/providerSetupRequest';\nimport { ProviderUpdateRequest } from '../models/request/provider/providerUpdateRequest';\nimport { ProviderUserAcceptRequest } from '../models/request/provider/providerUserAcceptRequest';\nimport { ProviderUserBulkConfirmRequest } from '../models/request/provider/providerUserBulkConfirmRequest';\nimport { ProviderUserBulkRequest } from '../models/request/provider/providerUserBulkRequest';\nimport { ProviderUserConfirmRequest } from '../models/request/provider/providerUserConfirmRequest';\nimport { ProviderUserInviteRequest } from '../models/request/provider/providerUserInviteRequest';\nimport { ProviderUserUpdateRequest } from '../models/request/provider/providerUserUpdateRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTempPasswordRequest } from '../models/request/updateTempPasswordRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from '../models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from '../models/request/updateTwoFactorWebAuthnRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { AttachmentResponse } from '../models/response/attachmentResponse';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityCaptchaResponse } from '../models/response/identityCaptchaResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationAutoEnrollStatusResponse } from '../models/response/organizationAutoEnrollStatusResponse';\nimport { OrganizationKeysResponse } from '../models/response/organizationKeysResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport { OrganizationUserBulkPublicKeyResponse } from '../models/response/organizationUserBulkPublicKeyResponse';\nimport { OrganizationUserBulkResponse } from '../models/response/organizationUserBulkResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { ProviderOrganizationOrganizationDetailsResponse, ProviderOrganizationResponse } from '../models/response/provider/providerOrganizationResponse';\nimport { ProviderResponse } from '../models/response/provider/providerResponse';\nimport { ProviderUserBulkPublicKeyResponse } from '../models/response/provider/providerUserBulkPublicKeyResponse';\nimport { ProviderUserBulkResponse } from '../models/response/provider/providerUserBulkResponse';\nimport { ProviderUserResponse, ProviderUserUserDetailsResponse } from '../models/response/provider/providerUserResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport { ChallengeResponse, TwoFactorWebAuthnResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { SendAccessView } from '../models/view/sendAccessView';\n\nexport abstract class ApiService {\n postIdentityToken: (request: TokenRequest) => Promise;\n refreshIdentityToken: () => Promise;\n\n getProfile: () => Promise;\n getUserBilling: () => Promise;\n getUserSubscription: () => Promise;\n getTaxInfo: () => Promise;\n putProfile: (request: UpdateProfileRequest) => Promise;\n putTaxInfo: (request: TaxInfoUpdateRequest) => Promise;\n postPrelogin: (request: PreloginRequest) => Promise;\n postEmailToken: (request: EmailTokenRequest) => Promise;\n postEmail: (request: EmailRequest) => Promise;\n postPassword: (request: PasswordRequest) => Promise;\n setPassword: (request: SetPasswordRequest) => Promise;\n postSecurityStamp: (request: PasswordVerificationRequest) => Promise;\n deleteAccount: (request: PasswordVerificationRequest) => Promise;\n getAccountRevisionDate: () => Promise;\n postPasswordHint: (request: PasswordHintRequest) => Promise;\n postRegister: (request: RegisterRequest) => Promise;\n postPremium: (data: FormData) => Promise;\n postIapCheck: (request: IapCheckRequest) => Promise;\n postReinstatePremium: () => Promise;\n postCancelPremium: () => Promise;\n postAccountStorage: (request: StorageRequest) => Promise;\n postAccountPayment: (request: PaymentRequest) => Promise;\n postAccountLicense: (data: FormData) => Promise;\n postAccountKey: (request: UpdateKeyRequest) => Promise;\n postAccountKeys: (request: KeysRequest) => Promise;\n postAccountVerifyEmail: () => Promise;\n postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise;\n postAccountVerifyPassword: (request: PasswordVerificationRequest) => Promise;\n postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n getEnterprisePortalSignInToken: () => Promise;\n postUserApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postUserRotateApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n putUpdateTempPassword: (request: UpdateTempPasswordRequest) => Promise;\n\n getFolder: (id: string) => Promise;\n postFolder: (request: FolderRequest) => Promise;\n putFolder: (id: string, request: FolderRequest) => Promise;\n deleteFolder: (id: string) => Promise;\n\n getSend: (id: string) => Promise;\n postSendAccess: (id: string, request: SendAccessRequest, apiUrl?: string) => Promise;\n getSends: () => Promise>;\n postSend: (request: SendRequest) => Promise;\n postFileTypeSend: (request: SendRequest) => Promise;\n postSendFile: (sendId: string, fileId: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postSendFileLegacy: (data: FormData) => Promise;\n putSend: (id: string, request: SendRequest) => Promise;\n putSendRemovePassword: (id: string) => Promise;\n deleteSend: (id: string) => Promise;\n getSendFileDownloadData: (send: SendAccessView, request: SendAccessRequest, apiUrl?: string) => Promise;\n renewSendFileUploadUrl: (sendId: string, fileId: string) => Promise;\n\n getCipher: (id: string) => Promise;\n getCipherAdmin: (id: string) => Promise;\n getAttachmentData: (cipherId: string, attachmentId: string, emergencyAccessId?: string) => Promise;\n getCiphersOrganization: (organizationId: string) => Promise>;\n postCipher: (request: CipherRequest) => Promise;\n postCipherCreate: (request: CipherCreateRequest) => Promise;\n postCipherAdmin: (request: CipherCreateRequest) => Promise;\n putCipher: (id: string, request: CipherRequest) => Promise;\n putCipherAdmin: (id: string, request: CipherRequest) => Promise;\n deleteCipher: (id: string) => Promise;\n deleteCipherAdmin: (id: string) => Promise;\n deleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n deleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putMoveCiphers: (request: CipherBulkMoveRequest) => Promise;\n putShareCipher: (id: string, request: CipherShareRequest) => Promise;\n putShareCiphers: (request: CipherBulkShareRequest) => Promise;\n putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise;\n putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise;\n postPurgeCiphers: (request: PasswordVerificationRequest, organizationId?: string) => Promise;\n postImportCiphers: (request: ImportCiphersRequest) => Promise;\n postImportOrganizationCiphers: (organizationId: string, request: ImportOrganizationCiphersRequest) => Promise;\n putDeleteCipher: (id: string) => Promise;\n putDeleteCipherAdmin: (id: string) => Promise;\n putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putDeleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putRestoreCipher: (id: string) => Promise;\n putRestoreCipherAdmin: (id: string) => Promise;\n putRestoreManyCiphers: (request: CipherBulkRestoreRequest) => Promise>;\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentLegacy: (id: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentAdminLegacy: (id: string, data: FormData) => Promise;\n postCipherAttachment: (id: string, request: AttachmentRequest) => Promise;\n deleteCipherAttachment: (id: string, attachmentId: string) => Promise;\n deleteCipherAttachmentAdmin: (id: string, attachmentId: string) => Promise;\n postShareCipherAttachment: (id: string, attachmentId: string, data: FormData,\n organizationId: string) => Promise;\n renewAttachmentUploadUrl: (id: string, attachmentId: string) => Promise;\n postAttachmentFile: (id: string, attachmentId: string, data: FormData) => Promise;\n\n getCollectionDetails: (organizationId: string, id: string) => Promise;\n getUserCollections: () => Promise>;\n getCollections: (organizationId: string) => Promise>;\n getCollectionUsers: (organizationId: string, id: string) => Promise;\n postCollection: (organizationId: string, request: CollectionRequest) => Promise;\n putCollectionUsers: (organizationId: string, id: string, request: SelectionReadOnlyRequest[]) => Promise;\n putCollection: (organizationId: string, id: string, request: CollectionRequest) => Promise;\n deleteCollection: (organizationId: string, id: string) => Promise;\n deleteCollectionUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getGroupDetails: (organizationId: string, id: string) => Promise;\n getGroups: (organizationId: string) => Promise>;\n getGroupUsers: (organizationId: string, id: string) => Promise;\n postGroup: (organizationId: string, request: GroupRequest) => Promise;\n putGroup: (organizationId: string, id: string, request: GroupRequest) => Promise;\n putGroupUsers: (organizationId: string, id: string, request: string[]) => Promise;\n deleteGroup: (organizationId: string, id: string) => Promise;\n deleteGroupUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getPolicy: (organizationId: string, type: PolicyType) => Promise;\n getPolicies: (organizationId: string) => Promise>;\n getPoliciesByToken: (organizationId: string, token: string, email: string, organizationUserId: string) =>\n Promise>;\n putPolicy: (organizationId: string, type: PolicyType, request: PolicyRequest) => Promise;\n\n getOrganizationUser: (organizationId: string, id: string) => Promise;\n getOrganizationUserGroups: (organizationId: string, id: string) => Promise;\n getOrganizationUsers: (organizationId: string) => Promise>;\n getOrganizationUserResetPasswordDetails: (organizationId: string, id: string)\n => Promise;\n postOrganizationUserInvite: (organizationId: string, request: OrganizationUserInviteRequest) => Promise;\n postOrganizationUserReinvite: (organizationId: string, id: string) => Promise;\n postManyOrganizationUserReinvite: (organizationId: string, request: OrganizationUserBulkRequest) => Promise>;\n postOrganizationUserAccept: (organizationId: string, id: string,\n request: OrganizationUserAcceptRequest) => Promise;\n postOrganizationUserConfirm: (organizationId: string, id: string,\n request: OrganizationUserConfirmRequest) => Promise;\n postOrganizationUsersPublicKey: (organizationId: string, request: OrganizationUserBulkRequest) =>\n Promise>;\n postOrganizationUserBulkConfirm: (organizationId: string, request: OrganizationUserBulkConfirmRequest) => Promise>;\n\n putOrganizationUser: (organizationId: string, id: string, request: OrganizationUserUpdateRequest) => Promise;\n putOrganizationUserGroups: (organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest) => Promise;\n putOrganizationUserResetPasswordEnrollment: (organizationId: string, userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest) => Promise;\n putOrganizationUserResetPassword: (organizationId: string, id: string,\n request: OrganizationUserResetPasswordRequest) => Promise;\n deleteOrganizationUser: (organizationId: string, id: string) => Promise;\n deleteManyOrganizationUsers: (organizationId: string, request: OrganizationUserBulkRequest) => Promise>;\n\n getSync: () => Promise;\n postImportDirectory: (organizationId: string, request: ImportDirectoryRequest) => Promise;\n postPublicImportDirectory: (request: OrganizationImportRequest) => Promise;\n\n getSettingsDomains: () => Promise;\n putSettingsDomains: (request: UpdateDomainsRequest) => Promise;\n\n getTwoFactorProviders: () => Promise>;\n getTwoFactorOrganizationProviders: (organizationId: string) => Promise>;\n getTwoFactorAuthenticator: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorEmail: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorDuo: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorOrganizationDuo: (organizationId: string,\n request: PasswordVerificationRequest) => Promise;\n getTwoFactorYubiKey: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorWebAuthn: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorWebAuthnChallenge: (request: PasswordVerificationRequest) => Promise;\n getTwoFactorRecover: (request: PasswordVerificationRequest) => Promise;\n putTwoFactorAuthenticator: (\n request: UpdateTwoFactorAuthenticatorRequest) => Promise;\n putTwoFactorEmail: (request: UpdateTwoFactorEmailRequest) => Promise;\n putTwoFactorDuo: (request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorOrganizationDuo: (organizationId: string,\n request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorYubiKey: (request: UpdateTwoFactorYubioOtpRequest) => Promise;\n putTwoFactorWebAuthn: (request: UpdateTwoFactorWebAuthnRequest) => Promise;\n deleteTwoFactorWebAuthn: (request: UpdateTwoFactorWebAuthnDeleteRequest) => Promise;\n putTwoFactorDisable: (request: TwoFactorProviderRequest) => Promise;\n putTwoFactorOrganizationDisable: (organizationId: string,\n request: TwoFactorProviderRequest) => Promise;\n postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise;\n postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise;\n postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise;\n\n getEmergencyAccessTrusted: () => Promise>;\n getEmergencyAccessGranted: () => Promise>;\n getEmergencyAccess: (id: string) => Promise;\n getEmergencyGrantorPolicies: (id: string) => Promise>;\n putEmergencyAccess: (id: string, request: EmergencyAccessUpdateRequest) => Promise;\n deleteEmergencyAccess: (id: string) => Promise;\n postEmergencyAccessInvite: (request: EmergencyAccessInviteRequest) => Promise;\n postEmergencyAccessReinvite: (id: string) => Promise;\n postEmergencyAccessAccept: (id: string, request: EmergencyAccessAcceptRequest) => Promise;\n postEmergencyAccessConfirm: (id: string, request: EmergencyAccessConfirmRequest) => Promise;\n postEmergencyAccessInitiate: (id: string) => Promise;\n postEmergencyAccessApprove: (id: string) => Promise;\n postEmergencyAccessReject: (id: string) => Promise;\n postEmergencyAccessTakeover: (id: string) => Promise;\n postEmergencyAccessPassword: (id: string, request: EmergencyAccessPasswordRequest) => Promise;\n postEmergencyAccessView: (id: string) => Promise;\n\n getOrganization: (id: string) => Promise;\n getOrganizationBilling: (id: string) => Promise;\n getOrganizationSubscription: (id: string) => Promise;\n getOrganizationLicense: (id: string, installationId: string) => Promise;\n getOrganizationTaxInfo: (id: string) => Promise;\n getOrganizationAutoEnrollStatus: (identifier: string) => Promise;\n postOrganization: (request: OrganizationCreateRequest) => Promise;\n putOrganization: (id: string, request: OrganizationUpdateRequest) => Promise;\n putOrganizationTaxInfo: (id: string, request: OrganizationTaxInfoUpdateRequest) => Promise;\n postLeaveOrganization: (id: string) => Promise;\n postOrganizationLicense: (data: FormData) => Promise;\n postOrganizationLicenseUpdate: (id: string, data: FormData) => Promise;\n postOrganizationApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationRotateApiKey: (id: string, request: PasswordVerificationRequest) => Promise;\n postOrganizationUpgrade: (id: string, request: OrganizationUpgradeRequest) => Promise;\n postOrganizationSeat: (id: string, request: SeatRequest) => Promise;\n postOrganizationStorage: (id: string, request: StorageRequest) => Promise;\n postOrganizationPayment: (id: string, request: PaymentRequest) => Promise;\n postOrganizationVerifyBank: (id: string, request: VerifyBankRequest) => Promise;\n postOrganizationCancel: (id: string) => Promise;\n postOrganizationReinstate: (id: string) => Promise;\n deleteOrganization: (id: string, request: PasswordVerificationRequest) => Promise;\n getPlans: () => Promise>;\n getTaxRates: () => Promise>;\n getOrganizationKeys: (id: string) => Promise;\n postOrganizationKeys: (id: string, request: OrganizationKeysRequest) => Promise;\n\n postProviderSetup: (id: string, request: ProviderSetupRequest) => Promise;\n getProvider: (id: string) => Promise;\n putProvider: (id: string, request: ProviderUpdateRequest) => Promise;\n\n getProviderUsers: (providerId: string) => Promise>;\n getProviderUser: (providerId: string, id: string) => Promise;\n postProviderUserInvite: (providerId: string, request: ProviderUserInviteRequest) => Promise;\n postProviderUserReinvite: (providerId: string, id: string) => Promise;\n postManyProviderUserReinvite: (providerId: string, request: ProviderUserBulkRequest) => Promise>;\n postProviderUserAccept: (providerId: string, id: string, request: ProviderUserAcceptRequest) => Promise;\n postProviderUserConfirm: (providerId: string, id: string, request: ProviderUserConfirmRequest) => Promise;\n postProviderUsersPublicKey: (providerId: string, request: ProviderUserBulkRequest) =>\n Promise>;\n postProviderUserBulkConfirm: (providerId: string, request: ProviderUserBulkConfirmRequest) => Promise>;\n putProviderUser: (providerId: string, id: string, request: ProviderUserUpdateRequest) => Promise;\n deleteProviderUser: (organizationId: string, id: string) => Promise;\n deleteManyProviderUsers: (providerId: string, request: ProviderUserBulkRequest) => Promise>;\n getProviderClients: (providerId: string) => Promise>;\n postProviderAddOrganization: (providerId: string, request: ProviderAddOrganizationRequest) => Promise;\n postProviderCreateOrganization: (providerId: string, request: ProviderOrganizationCreateRequest) => Promise;\n deleteProviderOrganization: (providerId: string, organizationId: string) => Promise;\n\n getEvents: (start: string, end: string, token: string) => Promise>;\n getEventsCipher: (id: string, start: string, end: string, token: string) => Promise>;\n getEventsOrganization: (id: string, start: string, end: string,\n token: string) => Promise>;\n getEventsOrganizationUser: (organizationId: string, id: string,\n start: string, end: string, token: string) => Promise>;\n getEventsProvider: (id: string, start: string, end: string, token: string) => Promise>;\n getEventsProviderUser: (providerId: string, id: string, start: string, end: string, token: string) => Promise>;\n postEventsCollect: (request: EventRequest[]) => Promise;\n\n deleteSsoUser: (organizationId: string) => Promise;\n getSsoUserIdentifier: () => Promise;\n\n getUserPublicKey: (id: string) => Promise;\n\n getHibpBreach: (username: string) => Promise;\n\n postBitPayInvoice: (request: BitPayInvoiceRequest) => Promise;\n postSetupPayment: () => Promise;\n\n getActiveBearerToken: () => Promise;\n fetch: (request: Request) => Promise;\n nativeFetch: (request: Request) => Promise;\n\n preValidateSso: (identifier: string) => Promise;\n}\n","import { OrganizationData } from '../models/data/organizationData';\nimport { ProviderData } from '../models/data/providerData';\nimport { Organization } from '../models/domain/organization';\nimport { Provider } from '../models/domain/provider';\n\nimport { KdfType } from '../enums/kdfType';\n\nexport abstract class UserService {\n setInformation: (userId: string, email: string, kdf: KdfType, kdfIterations: number) => Promise;\n setEmailVerified: (emailVerified: boolean) => Promise;\n setSecurityStamp: (stamp: string) => Promise;\n setForcePasswordReset: (forcePasswordReset: boolean) => Promise;\n getUserId: () => Promise;\n getEmail: () => Promise;\n getSecurityStamp: () => Promise;\n getKdf: () => Promise;\n getKdfIterations: () => Promise;\n getEmailVerified: () => Promise;\n getForcePasswordReset: () => Promise;\n clear: () => Promise;\n isAuthenticated: () => Promise;\n canAccessPremium: () => Promise;\n getOrganization: (id: string) => Promise;\n getOrganizationByIdentifier: (identifier: string) => Promise;\n getAllOrganizations: () => Promise;\n replaceOrganizations: (organizations: { [id: string]: OrganizationData; }) => Promise;\n clearOrganizations: (userId: string) => Promise;\n getProvider: (id: string) => Promise;\n getAllProviders: () => Promise;\n replaceProviders: (providers: { [id: string]: ProviderData; }) => Promise;\n clearProviders: (userId: string) => Promise;\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Pipe({\n name: 'i18n',\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private i18nService: I18nService) { }\n\n transform(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.i18nService.t(id, p1, p2, p3);\n }\n}\n","import { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\nimport { ProfileProviderOrganizationResponse } from '../models/response/profileProviderOrganizationResponse';\nimport { ProfileProviderResponse } from '../models/response/profileProviderResponse';\n\nimport { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\n\nimport { KeySuffixOptions } from './storage.service';\n\nexport abstract class CryptoService {\n setKey: (key: SymmetricCryptoKey) => Promise;\n setKeyHash: (keyHash: string) => Promise<{}>;\n setEncKey: (encKey: string) => Promise<{}>;\n setEncPrivateKey: (encPrivateKey: string) => Promise<{}>;\n setOrgKeys: (orgs: ProfileOrganizationResponse[], providerOrgs: ProfileProviderOrganizationResponse[]) => Promise<{}>;\n setProviderKeys: (orgs: ProfileProviderResponse[]) => Promise<{}>;\n getKey: (keySuffix?: KeySuffixOptions) => Promise;\n getKeyFromStorage: (keySuffix: KeySuffixOptions) => Promise;\n getKeyHash: () => Promise;\n compareAndUpdateKeyHash: (masterPassword: string, key: SymmetricCryptoKey) => Promise;\n getEncKey: (key?: SymmetricCryptoKey) => Promise;\n getPublicKey: () => Promise;\n getPrivateKey: () => Promise;\n getFingerprint: (userId: string, publicKey?: ArrayBuffer) => Promise;\n getOrgKeys: () => Promise>;\n getOrgKey: (orgId: string) => Promise;\n getProviderKey: (providerId: string) => Promise;\n hasKey: () => Promise;\n hasKeyInMemory: () => boolean;\n hasKeyStored: (keySuffix?: KeySuffixOptions) => Promise;\n hasEncKey: () => Promise;\n clearKey: (clearSecretStorage?: boolean) => Promise;\n clearKeyHash: () => Promise;\n clearEncKey: (memoryOnly?: boolean) => Promise;\n clearKeyPair: (memoryOnly?: boolean) => Promise;\n clearOrgKeys: (memoryOnly?: boolean) => Promise;\n clearProviderKeys: (memoryOnly?: boolean) => Promise;\n clearPinProtectedKey: () => Promise;\n clearKeys: () => Promise;\n toggleKey: () => Promise;\n makeKey: (password: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeKeyFromPin: (pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs?: EncString) => Promise;\n makeShareKey: () => Promise<[EncString, SymmetricCryptoKey]>;\n makeKeyPair: (key?: SymmetricCryptoKey) => Promise<[string, EncString]>;\n makePinKey: (pin: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeSendKey: (keyMaterial: ArrayBuffer) => Promise;\n hashPassword: (password: string, key: SymmetricCryptoKey, hashPurpose?: HashPurpose) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n remakeEncKey: (key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n encrypt: (plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n encryptToBytes: (plainValue: ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey?: ArrayBuffer) => Promise;\n rsaDecrypt: (encValue: string, privateKeyValue?: ArrayBuffer) => Promise;\n decryptToBytes: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptToUtf8: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptFromBytes: (encBuf: ArrayBuffer, key: SymmetricCryptoKey) => Promise;\n randomNumber: (min: number, max: number) => Promise;\n validateKey: (key: SymmetricCryptoKey) => Promise;\n}\n","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appA11yTitle]',\n})\nexport class A11yTitleDirective {\n @Input() set appA11yTitle(title: string) {\n this.title = title;\n }\n\n private title: string;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (!this.el.nativeElement.hasAttribute('title')) {\n this.renderer.setAttribute(this.el.nativeElement, 'title', this.title);\n }\n if (!this.el.nativeElement.hasAttribute('aria-label')) {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-label', this.title);\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { ErrorResponse } from 'jslib-common/models/response';\n\nimport { ValidationService } from '../services/validation.service';\n\n@Directive({\n selector: '[appApiAction]',\n})\nexport class ApiActionDirective implements OnChanges {\n @Input() appApiAction: Promise;\n\n constructor(private el: ElementRef, private validationService: ValidationService,\n private logService: LogService) { }\n\n ngOnChanges(changes: any) {\n if (this.appApiAction == null || this.appApiAction.then == null) {\n return;\n }\n\n this.el.nativeElement.loading = true;\n\n this.appApiAction.then((response: any) => {\n this.el.nativeElement.loading = false;\n }, (e: any) => {\n this.el.nativeElement.loading = false;\n\n if ((e instanceof ErrorResponse || e.constructor.name === 'ErrorResponse') && (e as ErrorResponse).captchaRequired) {\n this.logService.error('Captcha required error response: ' + e.getSingleMessage());\n return;\n }\n this.logService?.error(`Received API exception: ${e}`);\n this.validationService.showError(e);\n });\n }\n}\n","import {\n ApplicationRef,\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { first } from 'rxjs/operators';\n\nimport { DynamicModalComponent } from '../components/modal/dynamic-modal.component';\nimport { ModalInjector } from '../components/modal/modal-injector';\nimport { ModalRef } from '../components/modal/modal.ref';\n\nexport class ModalConfig {\n data?: D;\n allowMultipleModals: boolean = false;\n}\n\n@Injectable()\nexport class ModalService {\n protected modalCount = 0;\n\n // Lazy loaded modules are not available in componentFactoryResolver,\n // therefore modules needs to manually initialize their resolvers.\n private factoryResolvers: Map, ComponentFactoryResolver> = new Map();\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private applicationRef: ApplicationRef,\n private injector: Injector) {}\n\n async openViewRef(componentType: Type, viewContainerRef: ViewContainerRef,\n setComponentParameters: (component: T) => void = null): Promise<[ModalRef, T]> {\n\n this.modalCount++;\n const [modalRef, modalComponentRef] = this.openInternal(componentType, null, false);\n modalComponentRef.instance.setComponentParameters = setComponentParameters;\n\n viewContainerRef.insert(modalComponentRef.hostView);\n\n await modalRef.onCreated.pipe(first()).toPromise();\n\n return [modalRef, modalComponentRef.instance.componentRef.instance];\n }\n\n open(componentType: Type, config?: ModalConfig) {\n if (!(config?.allowMultipleModals ?? false) && this.modalCount > 0) {\n return;\n }\n this.modalCount++;\n\n const [modalRef, _] = this.openInternal(componentType, config, true);\n\n return modalRef;\n }\n\n registerComponentFactoryResolver(componentType: Type, componentFactoryResolver: ComponentFactoryResolver): void {\n this.factoryResolvers.set(componentType, componentFactoryResolver);\n }\n\n resolveComponentFactory(componentType: Type): ComponentFactory {\n if (this.factoryResolvers.has(componentType)) {\n return this.factoryResolvers.get(componentType).resolveComponentFactory(componentType);\n }\n\n return this.componentFactoryResolver.resolveComponentFactory(componentType);\n }\n\n protected openInternal(componentType: Type, config?: ModalConfig, attachToDom?: boolean):\n [ModalRef, ComponentRef] {\n\n const [modalRef, componentRef] = this.createModalComponent(config);\n componentRef.instance.childComponentType = componentType;\n\n if (attachToDom) {\n this.applicationRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n }\n\n modalRef.onClosed.pipe(first()).subscribe(() => {\n if (attachToDom) {\n this.applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n this.modalCount--;\n });\n\n this.setupHandlers(modalRef);\n\n return [modalRef, componentRef];\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n let backdrop: HTMLElement = null;\n\n // Add backdrop, setup [data-dismiss] handler.\n modalRef.onCreated.pipe(first()).subscribe(el => {\n document.body.classList.add('modal-open');\n\n backdrop = document.createElement('div');\n backdrop.className = 'modal-backdrop fade';\n backdrop.style.zIndex = `${this.modalCount}040`;\n document.body.appendChild(backdrop);\n\n el.querySelector('.modal-dialog').addEventListener('click', (e: Event) => {\n e.stopPropagation();\n });\n\n const modalEl: HTMLElement = el.querySelector('.modal');\n modalEl.style.zIndex = `${this.modalCount}050`;\n\n const modals = Array.from(el.querySelectorAll('.modal, .modal *[data-dismiss=\"modal\"]'));\n for (const closeElement of modals) {\n closeElement.addEventListener('click', event => {\n modalRef.close();\n });\n }\n });\n\n // onClose is used in Web to hook into bootstrap. On other projects we pipe it directly to closed.\n modalRef.onClose.pipe(first()).subscribe(() => {\n modalRef.closed();\n\n if (this.modalCount === 0) {\n document.body.classList.remove('modal-open');\n }\n\n if (backdrop != null) {\n document.body.removeChild(backdrop);\n }\n });\n }\n\n protected createModalComponent(config: ModalConfig): [ModalRef, ComponentRef] {\n const modalRef = new ModalRef();\n\n const map = new WeakMap();\n map.set(ModalConfig, config);\n map.set(ModalRef, modalRef);\n\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DynamicModalComponent);\n const componentRef = componentFactory.create(new ModalInjector(this.injector, map));\n\n return [modalRef, componentRef];\n }\n}\n","import { CipherType } from '../enums/cipherType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Field } from '../models/domain/field';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\n\nexport abstract class CipherService {\n decryptedCipherCache: CipherView[];\n\n clearCache: () => void;\n encrypt: (model: CipherView, key?: SymmetricCryptoKey, originalCipher?: Cipher) => Promise;\n encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise;\n encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllDecryptedForGrouping: (groupingId: string, folder?: boolean) => Promise;\n getAllDecryptedForUrl: (url: string, includeOtherTypes?: CipherType[],\n defaultMatch?: UriMatchType) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getLastLaunchedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getNextCipherForUrl: (url: string) => Promise;\n updateLastUsedIndexForUrl: (url: string) => void;\n updateLastUsedDate: (id: string) => Promise;\n updateLastLaunchedDate: (id: string) => Promise;\n saveNeverDomain: (domain: string) => Promise;\n saveWithServer: (cipher: Cipher) => Promise;\n shareWithServer: (cipher: CipherView, organizationId: string, collectionIds: string[]) => Promise;\n shareManyWithServer: (ciphers: CipherView[], organizationId: string, collectionIds: string[]) => Promise;\n saveAttachmentWithServer: (cipher: Cipher, unencryptedFile: any, admin?: boolean) => Promise;\n saveAttachmentRawWithServer: (cipher: Cipher, filename: string, data: ArrayBuffer,\n admin?: boolean) => Promise;\n saveCollectionsWithServer: (cipher: Cipher) => Promise;\n upsert: (cipher: CipherData | CipherData[]) => Promise;\n replace: (ciphers: { [id: string]: CipherData; }) => Promise;\n clear: (userId: string) => Promise;\n moveManyWithServer: (ids: string[], folderId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n deleteManyWithServer: (ids: string[]) => Promise;\n deleteAttachment: (id: string, attachmentId: string) => Promise;\n deleteAttachmentWithServer: (id: string, attachmentId: string) => Promise;\n sortCiphersByLastUsed: (a: any, b: any) => number;\n sortCiphersByLastUsedThenName: (a: any, b: any) => number;\n getLocaleSortingFunction: () => (a: CipherView, b: CipherView) => number;\n softDelete: (id: string | string[]) => Promise;\n softDeleteWithServer: (id: string) => Promise;\n softDeleteManyWithServer: (ids: string[]) => Promise;\n restore: (cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\n\n@Component({\n selector: 'app-callout',\n templateUrl: 'callout.component.html',\n})\nexport class CalloutComponent implements OnInit {\n @Input() type = 'info';\n @Input() icon: string;\n @Input() title: string;\n @Input() clickable: boolean;\n @Input() enforcedPolicyOptions: MasterPasswordPolicyOptions;\n @Input() enforcedPolicyMessage: string;\n\n calloutStyle: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnInit() {\n this.calloutStyle = this.type;\n\n if (this.enforcedPolicyMessage === undefined) {\n this.enforcedPolicyMessage = this.i18nService.t('masterPasswordPolicyInEffect');\n }\n\n if (this.type === 'warning' || this.type === 'danger') {\n if (this.type === 'danger') {\n this.calloutStyle = 'danger';\n }\n if (this.title === undefined) {\n this.title = this.i18nService.t('warning');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-warning';\n }\n } else if (this.type === 'error') {\n this.calloutStyle = 'danger';\n if (this.title === undefined) {\n this.title = this.i18nService.t('error');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-bolt';\n }\n } else if (this.type === 'tip') {\n this.calloutStyle = 'success';\n if (this.title === undefined) {\n this.title = this.i18nService.t('tip');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-lightbulb-o';\n }\n }\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n}\n","

{{title}}

{{enforcedPolicyMessage}}
  • 0\"> {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}
  • 0\"> {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}
  • {{'policyInEffectUppercase' | i18n}}
  • {{'policyInEffectLowercase' | i18n}}
  • {{'policyInEffectNumbers' | i18n}}
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
","export abstract class BaseResponse {\n private response: any;\n\n constructor(response: any) {\n this.response = response;\n }\n\n protected getResponseProperty(propertyName: string, response: any = null, exactName = false): any {\n if (propertyName == null || propertyName === '') {\n throw new Error('propertyName must not be null/empty.');\n }\n if (response == null && this.response != null) {\n response = this.response;\n }\n if (response == null) {\n return null;\n }\n if (!exactName && response[propertyName] === undefined) {\n let otherCasePropertyName: string = null;\n if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {\n otherCasePropertyName = propertyName.charAt(0).toLowerCase();\n } else {\n otherCasePropertyName = propertyName.charAt(0).toUpperCase();\n }\n if (propertyName.length > 1) {\n otherCasePropertyName += propertyName.slice(1);\n }\n\n propertyName = otherCasePropertyName;\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toLowerCase();\n }\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toUpperCase();\n }\n }\n return response[propertyName];\n }\n}\n","import { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\nimport { ResetPasswordPolicyOptions } from '../models/domain/resetPasswordPolicyOptions';\n\nimport { ListResponse } from '../models/response/listResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\n\nimport { PolicyType } from '../enums/policyType';\n\nexport abstract class PolicyService {\n policyCache: Policy[];\n\n clearCache: () => void;\n getAll: (type?: PolicyType) => Promise;\n getPolicyForOrganization: (policyType: PolicyType, organizationId: string) => Promise;\n replace: (policies: { [id: string]: PolicyData; }) => Promise;\n clear: (userId: string) => Promise;\n getMasterPasswordPolicyOptions: (policies?: Policy[]) => Promise;\n evaluateMasterPassword: (passwordStrength: number, newPassword: string,\n enforcedPolicyOptions?: MasterPasswordPolicyOptions) => boolean;\n getResetPasswordPolicyOptions: (policies: Policy[], orgId: string) => [ResetPasswordPolicyOptions, boolean];\n mapPoliciesFromToken: (policiesResponse: ListResponse) => Policy[];\n policyAppliesToUser: (policyType: PolicyType, policyFilter?: (policy: Policy) => boolean) => Promise;\n}\n","import * as tldjs from 'tldjs';\n\nimport { I18nService } from '../abstractions/i18n.service';\n\n// tslint:disable-next-line\nconst nodeURL = typeof window === 'undefined' ? require('url') : null;\n\nexport class Utils {\n static inited = false;\n static isNativeScript = false;\n static isNode = false;\n static isBrowser = true;\n static isMobileBrowser = false;\n static isAppleMobileBrowser = false;\n static global: any = null;\n static tldEndingRegex = /.*\\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;\n // Transpiled version of /\\p{Emoji_Presentation}/gu using https://mothereff.in/regexpu. Used for compatability in older browsers.\n static regexpEmojiPresentation = /(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])/g;\n\n static init() {\n if (Utils.inited) {\n return;\n }\n\n Utils.inited = true;\n Utils.isNode = typeof process !== 'undefined' && (process as any).release != null &&\n (process as any).release.name === 'node';\n Utils.isBrowser = typeof window !== 'undefined';\n Utils.isNativeScript = !Utils.isNode && !Utils.isBrowser;\n Utils.isMobileBrowser = Utils.isBrowser && this.isMobile(window);\n Utils.isAppleMobileBrowser = Utils.isBrowser && this.isAppleMobile(window);\n Utils.global = Utils.isNativeScript ? global : (Utils.isNode && !Utils.isBrowser ? global : window);\n }\n\n static fromB64ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'base64'));\n } else {\n const binaryString = window.atob(str);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n }\n\n static fromUrlB64ToArray(str: string): Uint8Array {\n return Utils.fromB64ToArray(Utils.fromUrlB64ToB64(str));\n }\n\n static fromHexToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'hex'));\n } else {\n const bytes = new Uint8Array(str.length / 2);\n for (let i = 0; i < str.length; i += 2) {\n bytes[i / 2] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n }\n }\n\n static fromUtf8ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'utf8'));\n } else {\n const strUtf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(strUtf8.length);\n for (let i = 0; i < strUtf8.length; i++) {\n arr[i] = strUtf8.charCodeAt(i);\n }\n return arr;\n }\n }\n\n static fromByteStringToArray(str: string): Uint8Array {\n const arr = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n }\n\n static fromBufferToB64(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('base64');\n } else {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n }\n\n static fromBufferToUrlB64(buffer: ArrayBuffer): string {\n return Utils.fromB64toUrlB64(Utils.fromBufferToB64(buffer));\n }\n\n static fromB64toUrlB64(b64Str: string) {\n return b64Str.replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n }\n\n static fromBufferToUtf8(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('utf8');\n } else {\n const bytes = new Uint8Array(buffer);\n const encodedString = String.fromCharCode.apply(null, bytes);\n return decodeURIComponent(escape(encodedString));\n }\n }\n\n static fromBufferToByteString(buffer: ArrayBuffer): string {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n\n // ref: https://stackoverflow.com/a/40031979/1090359\n static fromBufferToHex(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('hex');\n } else {\n const bytes = new Uint8Array(buffer);\n return Array.prototype.map.call(bytes, (x: number) => ('00' + x.toString(16)).slice(-2)).join('');\n }\n }\n\n static fromUrlB64ToB64(urlB64Str: string): string {\n let output = urlB64Str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += '==';\n break;\n case 3:\n output += '=';\n break;\n default:\n throw new Error('Illegal base64url string!');\n }\n\n return output;\n }\n\n static fromUrlB64ToUtf8(urlB64Str: string): string {\n return Utils.fromB64ToUtf8(Utils.fromUrlB64ToB64(urlB64Str));\n }\n\n static fromUtf8ToB64(utfStr: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(utfStr, 'utf8').toString('base64');\n } else {\n return decodeURIComponent(escape(window.btoa(utfStr)));\n }\n }\n\n static fromUtf8ToUrlB64(utfStr: string): string {\n return Utils.fromBufferToUrlB64(Utils.fromUtf8ToArray(utfStr));\n }\n\n static fromB64ToUtf8(b64Str: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(b64Str, 'base64').toString('utf8');\n } else {\n return decodeURIComponent(escape(window.atob(b64Str)));\n }\n }\n\n // ref: http://stackoverflow.com/a/2117523/1090359\n static newGuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // tslint:disable-next-line\n const r = Math.random() * 16 | 0;\n // tslint:disable-next-line\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n static isGuid(id: string) {\n return RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/, 'i').test(id);\n }\n\n static getHostname(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.hostname !== '' ? url.hostname : null;\n } catch {\n return null;\n }\n }\n\n static getHost(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.host !== '' ? url.host : null;\n } catch {\n return null;\n }\n }\n\n static getDomain(uriString: string): string {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n if (uriString.startsWith('data:')) {\n return null;\n }\n\n let httpUrl = uriString.startsWith('http://') || uriString.startsWith('https://');\n if (!httpUrl && uriString.indexOf('://') < 0 && Utils.tldEndingRegex.test(uriString)) {\n uriString = 'http://' + uriString;\n httpUrl = true;\n }\n\n if (httpUrl) {\n try {\n const url = Utils.getUrlObject(uriString);\n const validHostname = tldjs?.isValid != null ? tldjs.isValid(url.hostname) : true;\n if (!validHostname) {\n return null;\n }\n\n if (url.hostname === 'localhost' || Utils.validIpAddress(url.hostname)) {\n return url.hostname;\n }\n\n const urlDomain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(url.hostname) : null;\n return urlDomain != null ? urlDomain : url.hostname;\n } catch (e) { }\n }\n\n try {\n const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n\n if (domain != null) {\n return domain;\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n static getQueryParams(uriString: string): Map {\n const url = Utils.getUrl(uriString);\n if (url == null || url.search == null || url.search === '') {\n return null;\n }\n const map = new Map();\n const pairs = (url.search[0] === '?' ? url.search.substr(1) : url.search).split('&');\n pairs.forEach(pair => {\n const parts = pair.split('=');\n if (parts.length < 1) {\n return;\n }\n map.set(decodeURIComponent(parts[0]).toLowerCase(), parts[1] == null ? '' : decodeURIComponent(parts[1]));\n });\n return map;\n }\n\n static getSortFunction(i18nService: I18nService, prop: string) {\n return (a: any, b: any) => {\n if (a[prop] == null && b[prop] != null) {\n return -1;\n }\n if (a[prop] != null && b[prop] == null) {\n return 1;\n }\n if (a[prop] == null && b[prop] == null) {\n return 0;\n }\n\n return i18nService.collator ? i18nService.collator.compare(a[prop], b[prop]) :\n a[prop].localeCompare(b[prop]);\n };\n }\n\n static isNullOrWhitespace(str: string): boolean {\n return str == null || typeof str !== 'string' || str.trim() === '';\n }\n\n static nameOf(name: string & keyof T) {\n return name;\n }\n\n static assign(target: T, source: Partial): T {\n return Object.assign(target, source);\n }\n\n static iterateEnum(obj: O) {\n return (Object.keys(obj).filter(k => Number.isNaN(+k)) as K[]).map(k => obj[k]);\n }\n\n\n static getUrl(uriString: string): URL {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n let url = Utils.getUrlObject(uriString);\n if (url == null) {\n const hasHttpProtocol = uriString.indexOf('http://') === 0 || uriString.indexOf('https://') === 0;\n if (!hasHttpProtocol && uriString.indexOf('.') > -1) {\n url = Utils.getUrlObject('http://' + uriString);\n }\n }\n return url;\n }\n\n private static validIpAddress(ipString: string): boolean {\n // tslint:disable-next-line\n const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return ipRegex.test(ipString);\n }\n\n private static isMobile(win: Window) {\n let mobile = false;\n (a => {\n // tslint:disable-next-line\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) {\n mobile = true;\n }\n })(win.navigator.userAgent || win.navigator.vendor || (win as any).opera);\n return mobile || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static isAppleMobile(win: Window) {\n return win.navigator.userAgent.match(/iPhone/i) != null || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static getUrlObject(uriString: string): URL {\n try {\n if (nodeURL != null) {\n return nodeURL.URL ? new nodeURL.URL(uriString) : nodeURL.parse(uriString);\n } else if (typeof URL === 'function') {\n return new URL(uriString);\n } else if (window != null) {\n const hasProtocol = uriString.indexOf('://') > -1;\n if (!hasProtocol && uriString.indexOf('.') > -1) {\n uriString = 'http://' + uriString;\n } else if (!hasProtocol) {\n return null;\n }\n const anchor = window.document.createElement('a');\n anchor.href = uriString;\n return anchor as any;\n }\n } catch (e) { }\n\n return null;\n }\n}\n\nUtils.init();\n","import * as zxcvbn from 'zxcvbn';\n\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\n\nexport abstract class PasswordGenerationService {\n generatePassword: (options: any) => Promise;\n generatePassphrase: (options: any) => Promise;\n getOptions: () => Promise<[any, PasswordGeneratorPolicyOptions]>;\n enforcePasswordGeneratorPoliciesOnOptions: (options: any) => Promise<[any, PasswordGeneratorPolicyOptions]>;\n getPasswordGeneratorPolicyOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n getHistory: () => Promise;\n addHistory: (password: string) => Promise;\n clear: () => Promise;\n passwordStrength: (password: string, userInputs?: string[]) => zxcvbn.ZXCVBNResult;\n normalizeOptions: (options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) => void;\n}\n","import * as papa from 'papaparse';\n\nimport { LogService } from '../abstractions/log.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { LoginUriView } from '../models/view/loginUriView';\n\nimport { Utils } from '../misc/utils';\n\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherRepromptType } from '../enums/cipherRepromptType';\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { ConsoleLogService } from '../services/consoleLog.service';\n\nexport abstract class BaseImporter {\n organizationId: string = null;\n\n protected logService: LogService = new ConsoleLogService(false);\n\n protected newLineRegex = /(?:\\r\\n|\\r|\\n)/;\n\n protected passwordFieldNames = [\n 'password', 'pass word', 'passphrase', 'pass phrase',\n 'pass', 'code', 'code word', 'codeword',\n 'secret', 'secret word', 'personpwd',\n 'key', 'keyword', 'key word', 'keyphrase', 'key phrase',\n 'form_pw', 'wppassword', 'pin', 'pwd', 'pw', 'pword', 'passwd',\n 'p', 'serial', 'serial#', 'license key', 'reg #',\n\n // Non-English names\n 'passwort',\n ];\n\n protected usernameFieldNames = [\n 'user', 'name', 'user name', 'username', 'login name',\n 'email', 'e-mail', 'id', 'userid', 'user id',\n 'login', 'form_loginname', 'wpname', 'mail',\n 'loginid', 'login id', 'log', 'personlogin',\n 'first name', 'last name', 'card#', 'account #',\n 'member', 'member #',\n\n // Non-English names\n 'nom', 'benutzername',\n ];\n\n protected notesFieldNames = [\n 'note', 'notes', 'comment', 'comments', 'memo',\n 'description', 'free form', 'freeform',\n 'free text', 'freetext', 'free',\n\n // Non-English names\n 'kommentar',\n ];\n\n protected uriFieldNames: string[] = [\n 'url', 'hyper link', 'hyperlink', 'link',\n 'host', 'hostname', 'host name', 'server', 'address',\n 'hyper ref', 'href', 'web', 'website', 'web site', 'site',\n 'web-site', 'uri',\n\n // Non-English names\n 'ort', 'adresse',\n ];\n\n protected parseCsvOptions = {\n encoding: 'UTF-8',\n skipEmptyLines: false,\n };\n\n protected get organization() {\n return this.organizationId != null;\n }\n\n protected parseXml(data: string): Document {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'application/xml');\n return doc != null && doc.querySelector('parsererror') == null ? doc : null;\n }\n\n protected parseCsv(data: string, header: boolean, options: any = {}): any[] {\n const parseOptions = Object.assign({ header: header }, this.parseCsvOptions, options);\n data = this.splitNewLine(data).join('\\n').trim();\n const result = papa.parse(data, parseOptions);\n if (result.errors != null && result.errors.length > 0) {\n result.errors.forEach(e => {\n if (e.row != null) {\n // tslint:disable-next-line\n this.logService.warning('Error parsing row ' + e.row + ': ' + e.message);\n }\n });\n }\n return result.data && result.data.length > 0 ? result.data : null;\n }\n\n protected parseSingleRowCsv(rowData: string) {\n if (this.isNullOrWhitespace(rowData)) {\n return null;\n }\n const parsedRow = this.parseCsv(rowData, false);\n if (parsedRow != null && parsedRow.length > 0 && parsedRow[0].length > 0) {\n return parsedRow[0];\n }\n return null;\n }\n\n protected makeUriArray(uri: string | string[]): LoginUriView[] {\n if (uri == null) {\n return null;\n }\n\n if (typeof uri === 'string') {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(uri);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return null;\n }\n loginUri.match = null;\n return [loginUri];\n }\n\n if (uri.length > 0) {\n const returnArr: LoginUriView[] = [];\n uri.forEach(u => {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(u);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return;\n }\n loginUri.match = null;\n returnArr.push(loginUri);\n });\n return returnArr.length === 0 ? null : returnArr;\n }\n\n return null;\n }\n\n protected fixUri(uri: string) {\n if (uri == null) {\n return null;\n }\n uri = uri.trim();\n if (uri.indexOf('://') === -1 && uri.indexOf('.') >= 0) {\n uri = 'http://' + uri;\n }\n if (uri.length > 1000) {\n return uri.substring(0, 1000);\n }\n return uri;\n }\n\n protected nameFromUrl(url: string) {\n const hostname = Utils.getHostname(url);\n if (this.isNullOrWhitespace(hostname)) {\n return null;\n }\n return hostname.startsWith('www.') ? hostname.replace('www.', '') : hostname;\n }\n\n protected isNullOrWhitespace(str: string): boolean {\n return Utils.isNullOrWhitespace(str);\n }\n\n protected getValueOrDefault(str: string, defaultValue: string = null): string {\n if (this.isNullOrWhitespace(str)) {\n return defaultValue;\n }\n return str;\n }\n\n protected splitNewLine(str: string): string[] {\n return str.split(this.newLineRegex);\n }\n\n // ref https://stackoverflow.com/a/5911300\n protected getCardBrand(cardNum: string) {\n if (this.isNullOrWhitespace(cardNum)) {\n return null;\n }\n\n // Visa\n let re = new RegExp('^4');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n // Mastercard\n // Updated for Mastercard 2017 BINs expansion\n if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/\n .test(cardNum)) {\n return 'Mastercard';\n }\n\n // AMEX\n re = new RegExp('^3[47]');\n if (cardNum.match(re) != null) {\n return 'Amex';\n }\n\n // Discover\n re = new RegExp('^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)');\n if (cardNum.match(re) != null) {\n return 'Discover';\n }\n\n // Diners\n re = new RegExp('^36');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // Diners - Carte Blanche\n re = new RegExp('^30[0-5]');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // JCB\n re = new RegExp('^35(2[89]|[3-8][0-9])');\n if (cardNum.match(re) != null) {\n return 'JCB';\n }\n\n // Visa Electron\n re = new RegExp('^(4026|417500|4508|4844|491(3|7))');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n return null;\n }\n\n protected setCardExpiration(cipher: CipherView, expiration: string): boolean {\n if (!this.isNullOrWhitespace(expiration)) {\n expiration = expiration.replace(/\\s/g, '');\n const parts = expiration.split('/');\n if (parts.length === 2) {\n let month: string = null;\n let year: string = null;\n if (parts[0].length === 1 || parts[0].length === 2) {\n month = parts[0];\n if (month.length === 2 && month[0] === '0') {\n month = month.substr(1, 1);\n }\n }\n if (parts[1].length === 2 || parts[1].length === 4) {\n year = month.length === 2 ? '20' + parts[1] : parts[1];\n }\n if (month != null && year != null) {\n cipher.card.expMonth = month;\n cipher.card.expYear = year;\n return true;\n }\n }\n }\n return false;\n }\n\n protected moveFoldersToCollections(result: ImportResult) {\n result.folderRelationships.forEach(r => result.collectionRelationships.push(r));\n result.collections = result.folders.map(f => {\n const collection = new CollectionView();\n collection.name = f.name;\n return collection;\n });\n result.folderRelationships = [];\n result.folders = [];\n }\n\n protected querySelectorDirectChild(parentEl: Element, query: string) {\n const els = this.querySelectorAllDirectChild(parentEl, query);\n return els.length === 0 ? null : els[0];\n }\n\n protected querySelectorAllDirectChild(parentEl: Element, query: string) {\n return Array.from(parentEl.querySelectorAll(query)).filter(el => el.parentNode === parentEl);\n }\n\n protected initLoginCipher() {\n const cipher = new CipherView();\n cipher.favorite = false;\n cipher.notes = '';\n cipher.fields = [];\n cipher.login = new LoginView();\n cipher.type = CipherType.Login;\n return cipher;\n }\n\n protected cleanupCipher(cipher: CipherView) {\n if (cipher == null) {\n return;\n }\n if (cipher.type !== CipherType.Login) {\n cipher.login = null;\n }\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = '--';\n }\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = null;\n } else {\n cipher.notes = cipher.notes.trim();\n }\n if (cipher.fields != null && cipher.fields.length === 0) {\n cipher.fields = null;\n }\n }\n\n protected processKvp(cipher: CipherView, key: string, value: string, type: FieldType = FieldType.Text) {\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n if (this.isNullOrWhitespace(key)) {\n key = '';\n }\n if (value.length > 200 || value.trim().search(this.newLineRegex) > -1) {\n if (cipher.notes == null) {\n cipher.notes = '';\n }\n cipher.notes += (key + ': ' + this.splitNewLine(value).join('\\n') + '\\n');\n } else {\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n const field = new FieldView();\n field.type = type;\n field.name = key;\n field.value = value;\n cipher.fields.push(field);\n }\n }\n\n protected processFolder(result: ImportResult, folderName: string) {\n let folderIndex = result.folders.length;\n const hasFolder = !this.isNullOrWhitespace(folderName);\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === folderName) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n if (addFolder) {\n const f = new FolderView();\n f.name = folderName;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([result.ciphers.length, folderIndex]);\n }\n }\n\n protected convertToNoteIfNeeded(cipher: CipherView) {\n if (cipher.type === CipherType.Login && this.isNullOrWhitespace(cipher.login.username) &&\n this.isNullOrWhitespace(cipher.login.password) &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n}\n","import { CipherView } from '../view/cipherView';\nimport { CollectionView } from '../view/collectionView';\nimport { FolderView } from '../view/folderView';\n\nexport class ImportResult {\n success = false;\n errorMessage: string;\n ciphers: CipherView[] = [];\n folders: FolderView[] = [];\n folderRelationships: [number, number][] = [];\n collections: CollectionView[] = [];\n collectionRelationships: [number, number][] = [];\n}\n","export abstract class StateService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\n purge: () => Promise;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopClick]',\n})\nexport class StopClickDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.preventDefault();\n }\n}\n","export abstract class StorageService {\n get: (key: string, options?: StorageServiceOptions) => Promise;\n has: (key: string, options?: StorageServiceOptions) => Promise;\n save: (key: string, obj: any, options?: StorageServiceOptions) => Promise;\n remove: (key: string, options?: StorageServiceOptions) => Promise;\n}\n\nexport interface StorageServiceOptions {\n keySuffix: KeySuffixOptions;\n}\n\nexport type KeySuffixOptions = 'auto' | 'biometric';\n","import { Observable } from 'rxjs';\n\nexport type Urls = {\n base?: string;\n webVault?: string;\n api?: string;\n identity?: string;\n icons?: string;\n notifications?: string;\n events?: string;\n enterprise?: string;\n};\n\nexport type PayPalConfig = {\n businessId?: string;\n buttonAction?: string;\n};\n\nexport abstract class EnvironmentService {\n urls: Observable;\n\n hasBaseUrl: () => boolean;\n getNotificationsUrl: () => string;\n getEnterpriseUrl: () => string;\n getWebVaultUrl: () => string;\n getSendUrl: () => string;\n getIconsUrl: () => string;\n getApiUrl: () => string;\n getIdentityUrl: () => string;\n getEventsUrl: () => string;\n setUrlsFromStorage: () => Promise;\n setUrls: (urls: any, saveSettings?: boolean) => Promise;\n getUrls: () => Urls;\n}\n","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport abstract class CollectionService {\n decryptedCollectionCache: CollectionView[];\n\n clearCache: () => void;\n encrypt: (model: CollectionView) => Promise;\n decryptMany: (collections: Collection[]) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (collections?: CollectionView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n upsert: (collection: CollectionData | CollectionData[]) => Promise;\n replace: (collections: { [id: string]: CollectionData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n}\n","import {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport abstract class SyncService {\n syncInProgress: boolean;\n\n getLastSync: () => Promise;\n setLastSync: (date: Date) => Promise;\n fullSync: (forceSync: boolean, allowThrowOnError?: boolean) => Promise;\n syncUpsertFolder: (notification: SyncFolderNotification, isEdit: boolean) => Promise;\n syncDeleteFolder: (notification: SyncFolderNotification) => Promise;\n syncUpsertCipher: (notification: SyncCipherNotification, isEdit: boolean) => Promise;\n syncDeleteCipher: (notification: SyncFolderNotification) => Promise;\n syncUpsertSend: (notification: SyncSendNotification, isEdit: boolean) => Promise;\n syncDeleteSend: (notification: SyncSendNotification) => Promise;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appInputVerbatim]',\n})\nexport class InputVerbatimDirective {\n @Input() set appInputVerbatim(condition: boolean | string) {\n this.disableComplete = condition === '' || condition === true;\n }\n\n private disableComplete: boolean;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (this.disableComplete && !this.el.nativeElement.hasAttribute('autocomplete')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocomplete', 'off');\n }\n if (!this.el.nativeElement.hasAttribute('autocapitalize')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocapitalize', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('autocorrect')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocorrect', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('spellcheck')) {\n this.renderer.setAttribute(this.el.nativeElement, 'spellcheck', 'false');\n }\n if (!this.el.nativeElement.hasAttribute('inputmode')) {\n this.renderer.setAttribute(this.el.nativeElement, 'inputmode', 'verbatim');\n }\n }\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopProp]',\n})\nexport class StopPropDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.stopPropagation();\n }\n}\n","import { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class AuthService {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType;\n\n logIn: (email: string, masterPassword: string, captchaToken?: string) => Promise;\n logInSso: (code: string, codeVerifier: string, redirectUrl: string) => Promise;\n logInApiKey: (clientId: string, clientSecret: string) => Promise;\n logInTwoFactor: (twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean) => Promise;\n logInComplete: (email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean, captchaToken?: string) => Promise;\n logInSsoComplete: (code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean) => Promise;\n logInApiKeyComplete: (clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean) => Promise;\n logOut: (callback: Function) => void;\n getSupportedTwoFactorProviders: (win: Window) => any[];\n getDefaultTwoFactorProvider: (webAuthnSupported: boolean) => TwoFactorProviderType;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\n authingWithApiKey: () => boolean;\n authingWithSso: () => boolean;\n authingWithPassword: () => boolean;\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport abstract class FolderService {\n decryptedFolderCache: FolderView[];\n\n clearCache: () => void;\n encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: () => Promise[]>;\n getNested: (id: string) => Promise>;\n saveWithServer: (folder: Folder) => Promise;\n upsert: (folder: FolderData | FolderData[]) => Promise;\n replace: (folders: { [id: string]: FolderData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n}\n","import { CipherView } from '../models/view/cipherView';\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SearchService {\n indexedEntityId?: string = null;\n clearIndex: () => void;\n isSearchable: (query: string) => boolean;\n indexCiphers: (indexedEntityGuid?: string, ciphersToIndex?: CipherView[]) => Promise;\n searchCiphers: (query: string,\n filter?: ((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[]),\n ciphers?: CipherView[]) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\n searchSends: (sends: SendView[], query: string) => SendView[];\n}\n","import {\n Directive,\n ElementRef,\n Input,\n} from '@angular/core';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive({\n selector: '[appAutofocus]',\n})\nexport class AutofocusDirective {\n @Input() set appAutofocus(condition: boolean | string) {\n this.autofocus = condition === '' || condition === true;\n }\n\n private autofocus: boolean;\n\n constructor(private el: ElementRef) { }\n\n ngOnInit() {\n if (!Utils.isMobileBrowser && this.autofocus) {\n this.el.nativeElement.focus();\n }\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\ninterface User {\n name?: string;\n email: string;\n}\n\n@Pipe({\n name: 'userName',\n})\nexport class UserNamePipe implements PipeTransform {\n transform(user?: User): string {\n if (user == null) {\n return null;\n }\n\n return user.name == null || user.name.trim() === '' ? user.email : user.name;\n }\n}\n","export enum PolicyType {\n TwoFactorAuthentication = 0, // Requires users to have 2fa enabled\n MasterPassword = 1, // Sets minimum requirements for master password complexity\n PasswordGenerator = 2, // Sets minimum requirements/default type for generated passwords/passphrases\n SingleOrg = 3, // Allows users to only be apart of one organization\n RequireSso = 4, // Requires users to authenticate with SSO\n PersonalOwnership = 5, // Disables personal vault ownership for adding/cloning items\n DisableSend = 6, // Disables the ability to create and edit Bitwarden Sends\n SendOptions = 7, // Sets restrictions or defaults for Bitwarden Sends\n ResetPassword = 8, // Allows orgs to use reset password : also can enable auto-enrollment during invite flow\n}\n","export class ConstantsService {\n static readonly environmentUrlsKey: string = 'environmentUrls';\n static readonly disableGaKey: string = 'disableGa';\n static readonly disableAddLoginNotificationKey: string = 'disableAddLoginNotification';\n static readonly disableChangedPasswordNotificationKey: string = 'disableChangedPasswordNotification';\n static readonly disableContextMenuItemKey: string = 'disableContextMenuItem';\n static readonly disableFaviconKey: string = 'disableFavicon';\n static readonly disableBadgeCounterKey: string = 'disableBadgeCounter';\n static readonly disableAutoTotpCopyKey: string = 'disableAutoTotpCopy';\n static readonly enableAutoFillOnPageLoadKey: string = 'enableAutoFillOnPageLoad';\n static readonly autoFillOnPageLoadDefaultKey: string = 'autoFillOnPageLoadDefault';\n static readonly vaultTimeoutKey: string = 'lockOption';\n static readonly vaultTimeoutActionKey: string = 'vaultTimeoutAction';\n static readonly lastActiveKey: string = 'lastActive';\n static readonly neverDomainsKey: string = 'neverDomains';\n static readonly installedVersionKey: string = 'installedVersion';\n static readonly localeKey: string = 'locale';\n static readonly themeKey: string = 'theme';\n static readonly collapsedGroupingsKey: string = 'collapsedGroupings';\n static readonly autoConfirmFingerprints: string = 'autoConfirmFingerprints';\n static readonly dontShowCardsCurrentTab: string = 'dontShowCardsCurrentTab';\n static readonly dontShowIdentitiesCurrentTab: string = 'dontShowIdentitiesCurrentTab';\n static readonly defaultUriMatch: string = 'defaultUriMatch';\n static readonly pinProtectedKey: string = 'pinProtectedKey';\n static readonly protectedPin: string = 'protectedPin';\n static readonly clearClipboardKey: string = 'clearClipboardKey';\n static readonly eventCollectionKey: string = 'eventCollection';\n static readonly ssoCodeVerifierKey: string = 'ssoCodeVerifier';\n static readonly ssoStateKey: string = 'ssoState';\n static readonly biometricUnlockKey: string = 'biometric';\n static readonly biometricText: string = 'biometricText';\n static readonly biometricAwaitingAcceptance: string = 'biometricAwaitingAcceptance';\n static readonly biometricFingerprintValidated: string = 'biometricFingerprintValidated';\n\n readonly environmentUrlsKey: string = ConstantsService.environmentUrlsKey;\n readonly disableGaKey: string = ConstantsService.disableGaKey;\n readonly disableAddLoginNotificationKey: string = ConstantsService.disableAddLoginNotificationKey;\n readonly disableContextMenuItemKey: string = ConstantsService.disableContextMenuItemKey;\n readonly disableFaviconKey: string = ConstantsService.disableFaviconKey;\n readonly disableBadgeCounterKey: string = ConstantsService.disableBadgeCounterKey;\n readonly disableAutoTotpCopyKey: string = ConstantsService.disableAutoTotpCopyKey;\n readonly enableAutoFillOnPageLoadKey: string = ConstantsService.enableAutoFillOnPageLoadKey;\n readonly autoFillOnPageLoadDefaultKey: string = ConstantsService.autoFillOnPageLoadDefaultKey;\n readonly vaultTimeoutKey: string = ConstantsService.vaultTimeoutKey;\n readonly vaultTimeoutActionKey: string = ConstantsService.vaultTimeoutActionKey;\n readonly lastActiveKey: string = ConstantsService.lastActiveKey;\n readonly neverDomainsKey: string = ConstantsService.neverDomainsKey;\n readonly installedVersionKey: string = ConstantsService.installedVersionKey;\n readonly localeKey: string = ConstantsService.localeKey;\n readonly themeKey: string = ConstantsService.themeKey;\n readonly collapsedGroupingsKey: string = ConstantsService.collapsedGroupingsKey;\n readonly autoConfirmFingerprints: string = ConstantsService.autoConfirmFingerprints;\n readonly dontShowCardsCurrentTab: string = ConstantsService.dontShowCardsCurrentTab;\n readonly dontShowIdentitiesCurrentTab: string = ConstantsService.dontShowIdentitiesCurrentTab;\n readonly defaultUriMatch: string = ConstantsService.defaultUriMatch;\n readonly pinProtectedKey: string = ConstantsService.pinProtectedKey;\n readonly protectedPin: string = ConstantsService.protectedPin;\n readonly clearClipboardKey: string = ConstantsService.clearClipboardKey;\n readonly eventCollectionKey: string = ConstantsService.eventCollectionKey;\n readonly ssoCodeVerifierKey: string = ConstantsService.ssoCodeVerifierKey;\n readonly ssoStateKey: string = ConstantsService.ssoStateKey;\n readonly biometricUnlockKey: string = ConstantsService.biometricUnlockKey;\n readonly biometricText: string = ConstantsService.biometricText;\n readonly biometricAwaitingAcceptance: string = ConstantsService.biometricAwaitingAcceptance;\n readonly biometricFingerprintValidated: string = ConstantsService.biometricFingerprintValidated;\n}\n","import { EventType } from '../enums/eventType';\n\nexport abstract class EventService {\n collect: (eventType: EventType, cipherId?: string, uploadImmediately?: boolean) => Promise;\n uploadEvents: () => Promise;\n clearEvents: () => Promise;\n}\n","","import { EncString } from './encString';\n\nimport { View } from '../view/view';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport default class Domain {\n protected buildDomainModel(domain: D, dataObj: any, map: any,\n alreadyEncrypted: boolean, notEncList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = dataObj[(map[prop] || prop)];\n if (alreadyEncrypted === true || notEncList.indexOf(prop) > -1) {\n (domain as any)[prop] = objProp ? objProp : null;\n } else {\n (domain as any)[prop] = objProp ? new EncString(objProp) : null;\n }\n }\n }\n protected buildDataModel(domain: D, dataObj: any, map: any, notEncStringList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = (domain as any)[(map[prop] || prop)];\n if (notEncStringList.indexOf(prop) > -1) {\n (dataObj as any)[prop] = objProp != null ? objProp : null;\n } else {\n (dataObj as any)[prop] = objProp != null ? (objProp as EncString).encryptedString : null;\n }\n }\n }\n\n protected async decryptObj(viewModel: T, map: any, orgId: string,\n key: SymmetricCryptoKey = null): Promise {\n const promises = [];\n const self: any = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp) {\n const p = Promise.resolve().then(() => {\n const mapProp = map[theProp] || theProp;\n if (self[mapProp]) {\n return self[mapProp].decrypt(orgId, key);\n }\n return null;\n }).then((val: any) => {\n (viewModel as any)[theProp] = val;\n });\n promises.push(p);\n })(prop);\n }\n\n await Promise.all(promises);\n return viewModel;\n }\n}\n","export class PasswordVerificationRequest {\n masterPasswordHash: string;\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nexport abstract class LogService {\n debug: (message: string) => void;\n info: (message: string) => void;\n warning: (message: string) => void;\n error: (message: string) => void;\n write: (level: LogLevelType, message: string) => void;\n time: (label: string) => void;\n timeEnd: (label: string) => [number, number];\n}\n","import { EncString } from '../models/domain/encString';\n\nexport abstract class VaultTimeoutService {\n biometricLocked: boolean;\n everBeenUnlocked: boolean;\n pinProtectedKey: EncString;\n isLocked: () => Promise;\n checkVaultTimeout: () => Promise;\n lock: (allowSoftLock?: boolean) => Promise;\n logOut: () => Promise;\n setVaultTimeoutOptions: (vaultTimeout: number, vaultTimeoutAction: string) => Promise;\n isPinLockSet: () => Promise<[boolean, boolean]>;\n isBiometricLockSet: () => Promise;\n clear: () => Promise;\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncString {\n encryptedString?: string;\n encryptionType?: EncryptionType;\n decryptedValue?: string;\n data?: string;\n iv?: string;\n mac?: string;\n\n constructor(encryptedStringOrType: string | EncryptionType, data?: string, iv?: string, mac?: string) {\n if (data != null) {\n // data and header\n const encType = encryptedStringOrType as EncryptionType;\n\n if (iv != null) {\n this.encryptedString = encType + '.' + iv + '|' + data;\n } else {\n this.encryptedString = encType + '.' + data;\n }\n\n // mac\n if (mac != null) {\n this.encryptedString += ('|' + mac);\n }\n\n this.encryptionType = encType;\n this.data = data;\n this.iv = iv;\n this.mac = mac;\n\n return;\n }\n\n this.encryptedString = encryptedStringOrType as string;\n if (!this.encryptedString) {\n return;\n }\n\n const headerPieces = this.encryptedString.split('.');\n let encPieces: string[] = null;\n\n if (headerPieces.length === 2) {\n try {\n this.encryptionType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) {\n return;\n }\n } else {\n encPieces = this.encryptedString.split('|');\n this.encryptionType = encPieces.length === 3 ? EncryptionType.AesCbc128_HmacSha256_B64 :\n EncryptionType.AesCbc256_B64;\n }\n\n switch (this.encryptionType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encPieces.length !== 3) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n this.mac = encPieces[2];\n break;\n case EncryptionType.AesCbc256_B64:\n if (encPieces.length !== 2) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n break;\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n if (encPieces.length !== 1) {\n return;\n }\n\n this.data = encPieces[0];\n break;\n default:\n return;\n }\n }\n\n async decrypt(orgId: string, key: SymmetricCryptoKey = null): Promise {\n if (this.decryptedValue != null) {\n return this.decryptedValue;\n }\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n if (key == null) {\n key = await cryptoService.getOrgKey(orgId);\n }\n this.decryptedValue = await cryptoService.decryptToUtf8(this, key);\n } catch (e) {\n this.decryptedValue = '[error: cannot decrypt]';\n }\n return this.decryptedValue;\n }\n}\n","import { BreachAccountResponse } from '../models/response/breachAccountResponse';\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => Promise;\n}\n","import { View } from './view';\n\nimport { Card } from '../domain/card';\n\nexport class CardView implements View {\n cardholderName: string = null;\n expMonth: string = null;\n expYear: string = null;\n code: string = null;\n\n // tslint:disable\n private _brand: string = null;\n private _number: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(c?: Card) {\n // ctor\n }\n\n get maskedCode(): string {\n return this.code != null ? '•'.repeat(this.code.length) : null;\n }\n\n get maskedNumber(): string {\n return this.number != null ? '•'.repeat(this.number.length) : null;\n }\n\n get brand(): string {\n return this._brand;\n }\n set brand(value: string) {\n this._brand = value;\n this._subTitle = null;\n }\n\n get number(): string {\n return this._number;\n }\n set number(value: string) {\n this._number = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null) {\n this._subTitle = this.brand;\n if (this.number != null && this.number.length >= 4) {\n if (this._subTitle != null && this._subTitle !== '') {\n this._subTitle += ', ';\n } else {\n this._subTitle = '';\n }\n\n // Show last 5 on amex, last 4 for all others\n const count = this.number.length >= 5 && this.number.match(new RegExp('^3[47]')) != null ? 5 : 4;\n this._subTitle += ('*' + this.number.substr(this.number.length - count));\n }\n }\n return this._subTitle;\n }\n\n get expiration(): string {\n if (!this.expMonth && !this.expYear) {\n return null;\n }\n\n let exp = this.expMonth != null ? ('0' + this.expMonth).slice(-2) : '__';\n exp += (' / ' + (this.expYear != null ? this.formatYear(this.expYear) : '____'));\n return exp;\n }\n\n private formatYear(year: string): string {\n return year.length === 2 ? '20' + year : year;\n }\n}\n","import { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class CryptoFunctionService {\n pbkdf2: (password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number) => Promise;\n hkdf: (ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512') => Promise;\n hkdfExpand: (prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512') => Promise;\n hash: (value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5') => Promise;\n hmac: (value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512') => Promise;\n compare: (a: ArrayBuffer, b: ArrayBuffer) => Promise;\n hmacFast: (value: ArrayBuffer | string, key: ArrayBuffer | string, algorithm: 'sha1' | 'sha256' | 'sha512') =>\n Promise;\n compareFast: (a: ArrayBuffer | string, b: ArrayBuffer | string) => Promise;\n aesEncrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n aesDecryptFastParameters: (data: string, iv: string, mac: string, key: SymmetricCryptoKey) =>\n DecryptParameters;\n aesDecryptFast: (parameters: DecryptParameters) => Promise;\n aesDecrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaDecrypt: (data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaExtractPublicKey: (privateKey: ArrayBuffer) => Promise;\n rsaGenerateKeyPair: (length: 1024 | 2048 | 4096) => Promise<[ArrayBuffer, ArrayBuffer]>;\n randomBytes: (length: number) => Promise;\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\n@Injectable()\nexport class ValidationService {\n constructor(private i18nService: I18nService, private platformUtilsService: PlatformUtilsService) { }\n\n showError(data: any): string[] {\n const defaultErrorMessage = this.i18nService.t('unexpectedError');\n let errors: string[] = [];\n\n if (data != null && typeof data === 'string') {\n errors.push(data);\n } else if (data == null || typeof data !== 'object') {\n errors.push(defaultErrorMessage);\n } else if (data.validationErrors != null) {\n errors = errors.concat((data as ErrorResponse).getAllMessages());\n } else {\n errors.push(data.message ? data.message : defaultErrorMessage);\n }\n\n if (errors.length === 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors[0]);\n } else if (errors.length > 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors, {\n timeout: 5000 * errors.length,\n });\n }\n\n return errors;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { View } from './view';\n\nimport { SecureNote } from '../domain/secureNote';\n\nexport class SecureNoteView implements View {\n type: SecureNoteType = null;\n\n constructor(n?: SecureNote) {\n if (!n) {\n return;\n }\n\n this.type = n.type;\n }\n\n get subTitle(): string {\n return null;\n }\n}\n","export enum SecureNoteType {\n Generic = 0,\n}\n","export abstract class TokenService {\n token: string;\n decodedToken: any;\n refreshToken: string;\n setTokens: (accessToken: string, refreshToken: string, clientIdClientSecret: [string, string]) => Promise;\n setToken: (token: string) => Promise;\n getToken: () => Promise;\n setRefreshToken: (refreshToken: string) => Promise;\n getRefreshToken: () => Promise;\n setClientId: (clientId: string) => Promise;\n getClientId: () => Promise;\n setClientSecret: (clientSecret: string) => Promise;\n getClientSecret: () => Promise;\n toggleTokens: () => Promise;\n setTwoFactorToken: (token: string, email: string) => Promise;\n getTwoFactorToken: (email: string) => Promise;\n clearTwoFactorToken: (email: string) => Promise;\n clearToken: () => Promise;\n decodeToken: () => any;\n getTokenExpirationDate: () => Date;\n tokenSecondsRemaining: (offsetSeconds?: number) => number;\n tokenNeedsRefresh: (minutes?: number) => boolean;\n getUserId: () => string;\n getEmail: () => string;\n getEmailVerified: () => boolean;\n getName: () => string;\n getPremium: () => boolean;\n getIssuer: () => string;\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nconst IconMap: any = {\n 'fa-globe': String.fromCharCode(0xf0ac),\n 'fa-sticky-note-o': String.fromCharCode(0xf24a),\n 'fa-id-card-o': String.fromCharCode(0xf2c3),\n 'fa-credit-card': String.fromCharCode(0xf09d),\n 'fa-android': String.fromCharCode(0xf17b),\n 'fa-apple': String.fromCharCode(0xf179),\n};\n\n@Component({\n selector: 'app-vault-icon',\n templateUrl: 'icon.component.html',\n})\nexport class IconComponent implements OnChanges {\n @Input() cipher: CipherView;\n icon: string;\n image: string;\n fallbackImage: string;\n imageEnabled: boolean;\n\n private iconsUrl: string;\n\n constructor(environmentService: EnvironmentService, protected stateService: StateService) {\n this.iconsUrl = environmentService.getIconsUrl();\n }\n\n async ngOnChanges() {\n // Components may be re-used when using cdk-virtual-scroll. Which puts the component in a weird state,\n // to avoid this we reset all state variables.\n this.image = null;\n this.fallbackImage = null;\n this.imageEnabled = !(await this.stateService.get(ConstantsService.disableFaviconKey));\n this.load();\n }\n\n get iconCode(): string {\n return IconMap[this.icon];\n }\n\n protected load() {\n switch (this.cipher.type) {\n case CipherType.Login:\n this.icon = 'fa-globe';\n this.setLoginIcon();\n break;\n case CipherType.SecureNote:\n this.icon = 'fa-sticky-note-o';\n break;\n case CipherType.Card:\n this.icon = 'fa-credit-card';\n break;\n case CipherType.Identity:\n this.icon = 'fa-id-card-o';\n break;\n default:\n break;\n }\n }\n\n private setLoginIcon() {\n if (this.cipher.login.uri) {\n let hostnameUri = this.cipher.login.uri;\n let isWebsite = false;\n\n if (hostnameUri.indexOf('androidapp://') === 0) {\n this.icon = 'fa-android';\n this.image = null;\n } else if (hostnameUri.indexOf('iosapp://') === 0) {\n this.icon = 'fa-apple';\n this.image = null;\n } else if (this.imageEnabled && hostnameUri.indexOf('://') === -1 && hostnameUri.indexOf('.') > -1) {\n hostnameUri = 'http://' + hostnameUri;\n isWebsite = true;\n } else if (this.imageEnabled) {\n isWebsite = hostnameUri.indexOf('http') === 0 && hostnameUri.indexOf('.') > -1;\n }\n\n if (this.imageEnabled && isWebsite) {\n try {\n this.image = this.iconsUrl + '/' + Utils.getHostname(hostnameUri) + '/icon.png';\n this.fallbackImage = 'images/fa-globe.png';\n } catch (e) { }\n }\n } else {\n this.image = null;\n }\n }\n}\n","
\"\"/
","import { EventView } from '../models/view/eventView';\n\nexport abstract class ExportService {\n getExport: (format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getOrganizationExport: (organizationId: string, format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getEventExport: (events: EventView[]) => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","import { Injectable } from '@angular/core';\n\nimport { BroadcasterService as BaseBroadcasterService } from 'jslib-common/services/broadcaster.service';\n\n@Injectable()\nexport class BroadcasterService extends BaseBroadcasterService {\n}\n","export enum TwoFactorProviderType {\n Authenticator = 0,\n Email = 1,\n Duo = 2,\n Yubikey = 3,\n U2f = 4,\n Remember = 5,\n OrganizationDuo = 6,\n WebAuthn = 7,\n}\n","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n@Pipe({\n name: 'search',\n})\nexport class SearchPipe implements PipeTransform {\n transform(items: any[], searchText: string, prop1?: string, prop2?: string, prop3?: string): any[] {\n if (items == null || items.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return items;\n }\n\n searchText = searchText.trim().toLowerCase();\n return items.filter(i => {\n if (prop1 != null && i[prop1] != null && i[prop1].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop2 != null && i[prop2] != null && i[prop2].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop3 != null && i[prop3] != null && i[prop3].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n return false;\n });\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { WebConstants } from '../../services/webConstants';\n\nconst StripeElementStyle = {\n base: {\n color: '#333333',\n fontFamily: '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, ' +\n '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n fontSize: '14px',\n fontSmoothing: 'antialiased',\n },\n invalid: {\n color: '#333333',\n },\n};\n\nconst StripeElementClasses = {\n focus: 'is-focused',\n empty: 'is-empty',\n invalid: 'is-invalid',\n};\n\n@Component({\n selector: 'app-payment',\n templateUrl: 'payment.component.html',\n})\nexport class PaymentComponent implements OnInit {\n @Input() showMethods = true;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.Card;\n @Input() hideBank = false;\n @Input() hidePaypal = false;\n @Input() hideCredit = false;\n\n bank: any = {\n routing_number: null,\n account_number: null,\n account_holder_name: null,\n account_holder_type: '',\n currency: 'USD',\n country: 'US',\n };\n\n paymentMethodType = PaymentMethodType;\n\n private btScript: HTMLScriptElement;\n private btInstance: any = null;\n private stripeScript: HTMLScriptElement;\n private stripe: any = null;\n private stripeElements: any = null;\n private stripeCardNumberElement: any = null;\n private stripeCardExpiryElement: any = null;\n private stripeCardCvcElement: any = null;\n\n constructor(private platformUtilsService: PlatformUtilsService, private apiService: ApiService) {\n this.stripeScript = window.document.createElement('script');\n this.stripeScript.src = 'https://js.stripe.com/v3/';\n this.stripeScript.async = true;\n this.stripeScript.onload = () => {\n this.stripe = (window as any).Stripe(process.env.ENV === 'cloud' && !platformUtilsService.isDev() ?\n WebConstants.stripeLiveKey : WebConstants.stripeTestKey);\n this.stripeElements = this.stripe.elements();\n this.setStripeElement();\n };\n this.btScript = window.document.createElement('script');\n this.btScript.src = `scripts/dropin.js?cache=${process.env.CACHE_TAG}`;\n this.btScript.async = true;\n }\n\n ngOnInit() {\n if (!this.showOptions) {\n this.hidePaypal = this.method !== PaymentMethodType.PayPal;\n this.hideBank = this.method !== PaymentMethodType.BankAccount;\n this.hideCredit = this.method !== PaymentMethodType.Credit;\n }\n window.document.head.appendChild(this.stripeScript);\n if (!this.hidePaypal) {\n window.document.head.appendChild(this.btScript);\n }\n }\n\n ngOnDestroy() {\n window.document.head.removeChild(this.stripeScript);\n window.setTimeout(() => {\n Array.from(window.document.querySelectorAll('iframe')).forEach(el => {\n if (el.src != null && el.src.indexOf('stripe') > -1) {\n try {\n window.document.body.removeChild(el);\n } catch { }\n }\n });\n }, 500);\n if (!this.hidePaypal) {\n window.document.head.removeChild(this.btScript);\n window.setTimeout(() => {\n Array.from(window.document.head.querySelectorAll('script')).forEach(el => {\n if (el.src != null && el.src.indexOf('paypal') > -1) {\n try {\n window.document.head.removeChild(el);\n } catch { }\n }\n });\n const btStylesheet = window.document.head.querySelector('#braintree-dropin-stylesheet');\n if (btStylesheet != null) {\n try {\n window.document.head.removeChild(btStylesheet);\n } catch { }\n }\n }, 500);\n }\n }\n\n changeMethod() {\n this.btInstance = null;\n\n if (this.method === PaymentMethodType.PayPal) {\n window.setTimeout(() => {\n (window as any).braintree.dropin.create({\n authorization: process.env.ENV === 'cloud' ?\n WebConstants.btProductionKey : WebConstants.btSandboxKey,\n container: '#bt-dropin-container',\n paymentOptionPriority: ['paypal'],\n paypal: {\n flow: 'vault',\n buttonStyle: {\n label: 'pay',\n size: 'medium',\n shape: 'pill',\n color: 'blue',\n },\n },\n }, (createErr: any, instance: any) => {\n if (createErr != null) {\n // tslint:disable-next-line\n console.error(createErr);\n return;\n }\n this.btInstance = instance;\n });\n }, 250);\n } else {\n this.setStripeElement();\n }\n }\n\n createPaymentToken(): Promise<[string, PaymentMethodType]> {\n return new Promise((resolve, reject) => {\n if (this.method === PaymentMethodType.Credit) {\n resolve([null, this.method]);\n } else if (this.method === PaymentMethodType.PayPal) {\n this.btInstance.requestPaymentMethod().then((payload: any) => {\n resolve([payload.nonce, this.method]);\n }).catch((err: any) => {\n reject(err.message);\n });\n } else if (this.method === PaymentMethodType.Card || this.method === PaymentMethodType.BankAccount) {\n if (this.method === PaymentMethodType.Card) {\n this.apiService.postSetupPayment().then(clientSecret =>\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement))\n .then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.setupIntent && result.setupIntent.status === 'succeeded') {\n resolve([result.setupIntent.payment_method, this.method]);\n } else {\n reject();\n }\n });\n } else {\n this.stripe.createToken('bank_account', this.bank).then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.token && result.token.id != null) {\n resolve([result.token.id, this.method]);\n } else {\n reject();\n }\n });\n }\n }\n });\n }\n\n handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n if (this.showMethods && this.stripeCardNumberElement == null) {\n reject();\n return;\n }\n const handleCardPayment = () => this.showMethods ?\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement) :\n this.stripe.handleCardSetup(clientSecret);\n return handleCardPayment().then(async (result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.paymentIntent && result.paymentIntent.status === 'succeeded') {\n if (successCallback != null) {\n await successCallback();\n }\n resolve();\n } else {\n reject();\n }\n });\n });\n }\n\n private setStripeElement() {\n window.setTimeout(() => {\n if (this.showMethods && this.method === PaymentMethodType.Card) {\n if (this.stripeCardNumberElement == null) {\n this.stripeCardNumberElement = this.stripeElements.create('cardNumber', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n if (this.stripeCardExpiryElement == null) {\n this.stripeCardExpiryElement = this.stripeElements.create('cardExpiry', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n });\n }\n if (this.stripeCardCvcElement == null) {\n this.stripeCardCvcElement = this.stripeElements.create('cardCvc', {\n style: StripeElementStyle,\n classes: StripeElementClasses,\n placeholder: '',\n });\n }\n this.stripeCardNumberElement.mount('#stripe-card-number-element');\n this.stripeCardExpiryElement.mount('#stripe-card-expiry-element');\n this.stripeCardCvcElement.mount('#stripe-card-cvc-element');\n }\n }, 50);\n }\n}\n","
\"Visa,
{{'verifyBankAccountInitialDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}
{{'paypalClickSubmit' | i18n}}
{{'makeSureEnoughCredit' | i18n}} ","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { Send } from '../models/domain/send';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SendService {\n decryptedSendCache: SendView[];\n\n clearCache: () => void;\n encrypt: (model: SendView, file: File | ArrayBuffer, password: string, key?: SymmetricCryptoKey) => Promise<[Send, EncArrayBuffer]>;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n saveWithServer: (sendData: [Send, EncArrayBuffer]) => Promise;\n upsert: (send: SendData | SendData[]) => Promise;\n replace: (sends: { [id: string]: SendData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n removePasswordWithServer: (id: string) => Promise;\n}\n","import {\n Directive,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nexport abstract class BasePolicy {\n abstract name: string;\n abstract description: string;\n abstract type: PolicyType;\n abstract component: any;\n\n display(organization: Organization) {\n return true;\n }\n}\n\n@Directive()\nexport abstract class BasePolicyComponent implements OnInit {\n @Input() policyResponse: PolicyResponse;\n @Input() policy: BasePolicy;\n\n enabled = new FormControl(false);\n data: FormGroup = null;\n\n ngOnInit(): void {\n this.enabled.setValue(this.policyResponse.enabled);\n\n if (this.data != null) {\n this.data.patchValue(this.policyResponse.data ?? {});\n }\n }\n\n buildRequest(policiesEnabledMap: Map) {\n const request = new PolicyRequest();\n request.enabled = this.enabled.value;\n request.type = this.policy.type;\n\n if (this.data != null) {\n request.data = this.data.value;\n }\n\n return Promise.resolve(request);\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { AttachmentView } from './attachmentView';\nimport { CardView } from './cardView';\nimport { FieldView } from './fieldView';\nimport { IdentityView } from './identityView';\nimport { LoginView } from './loginView';\nimport { PasswordHistoryView } from './passwordHistoryView';\nimport { SecureNoteView } from './secureNoteView';\nimport { View } from './view';\n\nexport class CipherView implements View {\n id: string = null;\n organizationId: string = null;\n folderId: string = null;\n name: string = null;\n notes: string = null;\n type: CipherType = null;\n favorite = false;\n organizationUseTotp = false;\n edit = false;\n viewPassword = true;\n localData: any;\n login = new LoginView();\n identity = new IdentityView();\n card = new CardView();\n secureNote = new SecureNoteView();\n attachments: AttachmentView[] = null;\n fields: FieldView[] = null;\n passwordHistory: PasswordHistoryView[] = null;\n collectionIds: string[] = null;\n revisionDate: Date = null;\n deletedDate: Date = null;\n reprompt: CipherRepromptType = CipherRepromptType.None;\n\n constructor(c?: Cipher) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.folderId = c.folderId;\n this.favorite = c.favorite;\n this.organizationUseTotp = c.organizationUseTotp;\n this.edit = c.edit;\n this.viewPassword = c.viewPassword;\n this.type = c.type;\n this.localData = c.localData;\n this.collectionIds = c.collectionIds;\n this.revisionDate = c.revisionDate;\n this.deletedDate = c.deletedDate;\n // Old locally stored ciphers might have reprompt == null. If so set it to None.\n this.reprompt = c.reprompt ?? CipherRepromptType.None;\n }\n\n get subTitle(): string {\n switch (this.type) {\n case CipherType.Login:\n return this.login.subTitle;\n case CipherType.SecureNote:\n return this.secureNote.subTitle;\n case CipherType.Card:\n return this.card.subTitle;\n case CipherType.Identity:\n return this.identity.subTitle;\n default:\n break;\n }\n\n return null;\n }\n\n get hasPasswordHistory(): boolean {\n return this.passwordHistory && this.passwordHistory.length > 0;\n }\n\n get hasAttachments(): boolean {\n return this.attachments && this.attachments.length > 0;\n }\n\n get hasOldAttachments(): boolean {\n if (this.hasAttachments) {\n for (let i = 0; i < this.attachments.length; i++) {\n if (this.attachments[i].key == null) {\n return true;\n }\n }\n }\n return false;\n }\n\n get hasFields(): boolean {\n return this.fields && this.fields.length > 0;\n }\n\n get passwordRevisionDisplayDate(): Date {\n if (this.type !== CipherType.Login || this.login == null) {\n return null;\n } else if (this.login.password == null || this.login.password === '') {\n return null;\n }\n return this.login.passwordRevisionDate;\n }\n\n get isDeleted(): boolean {\n return this.deletedDate != null;\n }\n}\n","import { View } from './view';\n\nimport { Folder } from '../domain/folder';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nexport class FolderView implements View, ITreeNodeObject {\n id: string = null;\n name: string = null;\n revisionDate: Date = null;\n\n constructor(f?: Folder) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.revisionDate = f.revisionDate;\n }\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { OrganizationTaxInfoUpdateRequest } from 'jslib-common/models/request/organizationTaxInfoUpdateRequest';\nimport { TaxInfoUpdateRequest } from 'jslib-common/models/request/taxInfoUpdateRequest';\nimport { TaxRateResponse } from 'jslib-common/models/response/taxRateResponse';\n\n@Component({\n selector: 'app-tax-info',\n templateUrl: 'tax-info.component.html',\n})\nexport class TaxInfoComponent {\n @Output() onCountryChanged = new EventEmitter();\n\n loading: boolean = true;\n organizationId: string;\n taxInfo: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n taxRates: TaxRateResponse[];\n\n private pristine: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n constructor(private apiService: ApiService, private route: ActivatedRoute) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n if (this.organizationId) {\n try {\n const taxInfo = await this.apiService.getOrganizationTaxInfo(this.organizationId);\n if (taxInfo) {\n this.taxInfo.taxId = taxInfo.taxId;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.line1 = taxInfo.line1;\n this.taxInfo.line2 = taxInfo.line2;\n this.taxInfo.city = taxInfo.city;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n this.taxInfo.includeTaxId = this.taxInfo.country !== 'US' && (\n !!taxInfo.taxId\n || !!taxInfo.line1\n || !!taxInfo.line2\n || !!taxInfo.city\n || !!taxInfo.state);\n }\n } catch { }\n } else {\n const taxInfo = await this.apiService.getTaxInfo();\n if (taxInfo) {\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n }\n }\n this.pristine = Object.assign({}, this.taxInfo);\n // If not the default (US) then trigger onCountryChanged\n if (this.taxInfo.country !== 'US') {\n this.onCountryChanged.emit();\n }\n });\n\n const taxRates = await this.apiService.getTaxRates();\n this.taxRates = taxRates.data;\n this.loading = false;\n }\n\n get taxRate() {\n if (this.taxRates != null) {\n const localTaxRate = this.taxRates.find(x =>\n x.country === this.taxInfo.country &&\n x.postalCode === this.taxInfo.postalCode\n );\n return localTaxRate?.rate ?? null;\n }\n }\n\n getTaxInfoRequest(): TaxInfoUpdateRequest {\n if (this.organizationId) {\n const request = new OrganizationTaxInfoUpdateRequest();\n request.taxId = this.taxInfo.taxId;\n request.state = this.taxInfo.state;\n request.line1 = this.taxInfo.line1;\n request.line2 = this.taxInfo.line2;\n request.city = this.taxInfo.city;\n request.state = this.taxInfo.state;\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n } else {\n const request = new TaxInfoUpdateRequest();\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n }\n }\n\n submitTaxInfo(): Promise {\n if (!this.hasChanged()) {\n return new Promise(resolve => { resolve(); });\n }\n const request = this.getTaxInfoRequest();\n return this.organizationId ? this.apiService.putOrganizationTaxInfo(this.organizationId,\n request as OrganizationTaxInfoUpdateRequest) : this.apiService.putTaxInfo(request);\n }\n\n changeCountry() {\n if (this.taxInfo.country === 'US') {\n this.taxInfo.includeTaxId = false;\n this.taxInfo.taxId = null;\n this.taxInfo.line1 = null;\n this.taxInfo.line2 = null;\n this.taxInfo.city = null;\n this.taxInfo.state = null;\n }\n this.onCountryChanged.emit();\n }\n\n private hasChanged(): boolean {\n for (const key in this.taxInfo) {\n if (this.pristine.hasOwnProperty(key) && this.pristine[key] !== this.taxInfo[key]) {\n return true;\n }\n }\n return false;\n }\n}\n","
","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { DeviceType } from 'jslib-common/enums/deviceType';\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\n\n\n@Injectable()\nexport class EventService {\n constructor(private i18nService: I18nService, private policyService: PolicyService) { }\n\n getDefaultDateFilters() {\n const d = new Date();\n const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59);\n d.setDate(d.getDate() - 30);\n const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0);\n return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)];\n }\n\n formatDateFilters(filterStart: string, filterEnd: string) {\n const start: Date = new Date(filterStart);\n const end: Date = new Date(filterEnd + ':59.999');\n if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) {\n throw new Error('Invalid date range.');\n }\n return [start.toISOString(), end.toISOString()];\n }\n\n async getEventInfo(ev: EventResponse, options = new EventOptions()): Promise {\n const appInfo = this.getAppInfo(ev.deviceType);\n const { message, humanReadableMessage } = await this.getEventMessage(ev, options);\n return {\n message: message,\n humanReadableMessage: humanReadableMessage,\n appIcon: appInfo[0],\n appName: appInfo[1],\n };\n }\n\n private async getEventMessage(ev: EventResponse, options: EventOptions) {\n let msg = '';\n let humanReadableMsg = '';\n switch (ev.type) {\n // User\n case EventType.User_LoggedIn:\n msg = humanReadableMsg = this.i18nService.t('loggedIn');\n break;\n case EventType.User_ChangedPassword:\n msg = humanReadableMsg = this.i18nService.t('changedPassword');\n break;\n case EventType.User_Updated2fa:\n msg = humanReadableMsg = this.i18nService.t('enabledUpdated2fa');\n break;\n case EventType.User_Disabled2fa:\n msg = humanReadableMsg = this.i18nService.t('disabled2fa');\n break;\n case EventType.User_Recovered2fa:\n msg = humanReadableMsg = this.i18nService.t('recovered2fa');\n break;\n case EventType.User_FailedLogIn:\n msg = humanReadableMsg = this.i18nService.t('failedLogin');\n break;\n case EventType.User_FailedLogIn2fa:\n msg = humanReadableMsg = this.i18nService.t('failedLogin2fa');\n break;\n case EventType.User_ClientExportedVault:\n msg = humanReadableMsg = this.i18nService.t('exportedVault');\n break;\n case EventType.User_UpdatedTempPassword:\n msg = humanReadableMsg = this.i18nService.t('updatedMasterPassword');\n break;\n // Cipher\n case EventType.Cipher_Created:\n msg = this.i18nService.t('createdItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('createdItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Updated:\n msg = this.i18nService.t('editedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('editedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Deleted:\n msg = this.i18nService.t('permanentlyDeletedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('permanentlyDeletedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_SoftDeleted:\n msg = this.i18nService.t('deletedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('deletedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Restored:\n msg = this.i18nService.t('restoredItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('restoredItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentCreated:\n msg = this.i18nService.t('createdAttachmentForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('createdAttachmentForItem', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_AttachmentDeleted:\n msg = this.i18nService.t('deletedAttachmentForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('deletedAttachmentForItem', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Shared:\n msg = this.i18nService.t('movedItemIdToOrg', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('movedItemIdToOrg', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientViewed:\n msg = this.i18nService.t('viewedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledPasswordVisible:\n msg = this.i18nService.t('viewedPasswordItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedPasswordItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledHiddenFieldVisible:\n msg = this.i18nService.t('viewedHiddenFieldItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedHiddenFieldItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledCardCodeVisible:\n msg = this.i18nService.t('viewedSecurityCodeItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedSecurityCodeItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedHiddenField:\n msg = this.i18nService.t('copiedHiddenFieldItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedHiddenFieldItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedPassword:\n msg = this.i18nService.t('copiedPasswordItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedPasswordItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedCardCode:\n msg = this.i18nService.t('copiedSecurityCodeItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedSecurityCodeItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientAutofilled:\n msg = this.i18nService.t('autofilledItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('autofilledItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_UpdatedCollections:\n msg = this.i18nService.t('editedCollectionsForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('editedCollectionsForItem', this.getShortId(ev.cipherId));\n break;\n // Collection\n case EventType.Collection_Created:\n msg = this.i18nService.t('createdCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('createdCollectionId', this.getShortId(ev.collectionId));\n break;\n case EventType.Collection_Updated:\n msg = this.i18nService.t('editedCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('editedCollectionId', this.getShortId(ev.collectionId));\n break;\n case EventType.Collection_Deleted:\n msg = this.i18nService.t('deletedCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('deletedCollectionId', this.getShortId(ev.collectionId));\n break;\n // Group\n case EventType.Group_Created:\n msg = this.i18nService.t('createdGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('createdGroupId', this.getShortId(ev.groupId));\n break;\n case EventType.Group_Updated:\n msg = this.i18nService.t('editedGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('editedGroupId', this.getShortId(ev.groupId));\n break;\n case EventType.Group_Deleted:\n msg = this.i18nService.t('deletedGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('deletedGroupId', this.getShortId(ev.groupId));\n break;\n // Org user\n case EventType.OrganizationUser_Invited:\n msg = this.i18nService.t('invitedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('invitedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Confirmed:\n msg = this.i18nService.t('confirmedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('confirmedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Updated:\n msg = this.i18nService.t('editedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('editedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Removed:\n msg = this.i18nService.t('removedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('removedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_UpdatedGroups:\n msg = this.i18nService.t('editedGroupsForUser', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('editedGroupsForUser', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_UnlinkedSso:\n msg = this.i18nService.t('unlinkedSsoUser', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('unlinkedSsoUser', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetPassword_Enroll:\n msg = this.i18nService.t('eventEnrollPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventEnrollPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetPassword_Withdraw:\n msg = this.i18nService.t('eventWithdrawPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventWithdrawPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_AdminResetPassword:\n msg = this.i18nService.t('eventAdminPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventAdminPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetSsoLink:\n msg = this.i18nService.t('eventResetSsoLink', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventResetSsoLink', this.getShortId(ev.organizationUserId));\n break;\n // Org\n case EventType.Organization_Updated:\n msg = humanReadableMsg = this.i18nService.t('editedOrgSettings');\n break;\n case EventType.Organization_PurgedVault:\n msg = humanReadableMsg = this.i18nService.t('purgedOrganizationVault');\n break;\n /*\n case EventType.Organization_ClientExportedVault:\n msg = this.i18nService.t('exportedOrganizationVault');\n break;\n */\n case EventType.Organization_VaultAccessed:\n msg = humanReadableMsg = this.i18nService.t('vaultAccessedByProvider');\n break;\n // Policies\n case EventType.Policy_Updated:\n msg = this.i18nService.t('modifiedPolicyId', this.formatPolicyId(ev));\n\n const policies = await this.policyService.getAll();\n const policy = policies.filter(p => p.id === ev.policyId)[0];\n let p1 = this.getShortId(ev.policyId);\n if (policy != null) {\n p1 = PolicyType[policy.type];\n }\n\n humanReadableMsg = this.i18nService.t('modifiedPolicyId', p1);\n break;\n // Provider users:\n case EventType.ProviderUser_Invited:\n msg = this.i18nService.t('invitedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('invitedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Confirmed:\n msg = this.i18nService.t('confirmedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('confirmedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Updated:\n msg = this.i18nService.t('editedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('editedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Removed:\n msg = this.i18nService.t('removedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('removedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderOrganization_Created:\n msg = this.i18nService.t('createdOrganizationId', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('createdOrganizationId', this.getShortId(ev.providerOrganizationId));\n break;\n case EventType.ProviderOrganization_Added:\n msg = this.i18nService.t('addedOrganizationId', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('addedOrganizationId', this.getShortId(ev.providerOrganizationId));\n break;\n case EventType.ProviderOrganization_Removed:\n msg = this.i18nService.t('removedOrganizationId', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('removedOrganizationId', this.getShortId(ev.providerOrganizationId));\n break;\n case EventType.ProviderOrganization_VaultAccessed:\n msg = this.i18nService.t('accessedClientVault', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('accessedClientVault', this.getShortId(ev.providerOrganizationId));\n break;\n default:\n break;\n }\n return {\n message: msg === '' ? null : msg,\n humanReadableMessage: humanReadableMsg === '' ? null : humanReadableMsg,\n };\n }\n\n private getAppInfo(deviceType: DeviceType): [string, string] {\n switch (deviceType) {\n case DeviceType.Android:\n return ['fa-android', this.i18nService.t('mobile') + ' - Android'];\n case DeviceType.iOS:\n return ['fa-apple', this.i18nService.t('mobile') + ' - iOS'];\n case DeviceType.UWP:\n return ['fa-windows', this.i18nService.t('mobile') + ' - Windows'];\n case DeviceType.ChromeExtension:\n return ['fa-chrome', this.i18nService.t('extension') + ' - Chrome'];\n case DeviceType.FirefoxExtension:\n return ['fa-firefox', this.i18nService.t('extension') + ' - Firefox'];\n case DeviceType.OperaExtension:\n return ['fa-opera', this.i18nService.t('extension') + ' - Opera'];\n case DeviceType.EdgeExtension:\n return ['fa-edge', this.i18nService.t('extension') + ' - Edge'];\n case DeviceType.VivaldiExtension:\n return ['fa-puzzle-piece', this.i18nService.t('extension') + ' - Vivaldi'];\n case DeviceType.SafariExtension:\n return ['fa-safari', this.i18nService.t('extension') + ' - Safari'];\n case DeviceType.WindowsDesktop:\n return ['fa-windows', this.i18nService.t('desktop') + ' - Windows'];\n case DeviceType.MacOsDesktop:\n return ['fa-apple', this.i18nService.t('desktop') + ' - macOS'];\n case DeviceType.LinuxDesktop:\n return ['fa-linux', this.i18nService.t('desktop') + ' - Linux'];\n case DeviceType.ChromeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Chrome'];\n case DeviceType.FirefoxBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Firefox'];\n case DeviceType.OperaBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Opera'];\n case DeviceType.SafariBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Safari'];\n case DeviceType.VivaldiBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Vivaldi'];\n case DeviceType.EdgeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Edge'];\n case DeviceType.IEBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - IE'];\n case DeviceType.UnknownBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - ' + this.i18nService.t('unknown')];\n default:\n return ['fa-globe', this.i18nService.t('unknown')];\n }\n }\n\n private formatCipherId(ev: EventResponse, options: EventOptions) {\n const shortId = this.getShortId(ev.cipherId);\n if (ev.organizationId == null || !options.cipherInfo) {\n return '' + shortId + '';\n }\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/vault?search=' + shortId +\n '&viewEvents=' + ev.cipherId);\n return a.outerHTML;\n }\n\n private formatGroupId(ev: EventResponse) {\n const shortId = this.getShortId(ev.groupId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/groups?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatCollectionId(ev: EventResponse) {\n const shortId = this.getShortId(ev.collectionId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/collections?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatOrgUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.organizationUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/people?search=' + shortId +\n '&viewEvents=' + ev.organizationUserId);\n return a.outerHTML;\n }\n\n private formatProviderUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/providers/' + ev.providerId + '/manage/people?search=' + shortId +\n '&viewEvents=' + ev.providerUserId);\n return a.outerHTML;\n }\n\n private formatProviderOrganizationId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerOrganizationId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/providers/' + ev.providerId + '/clients?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatPolicyId(ev: EventResponse) {\n const shortId = this.getShortId(ev.policyId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/policies?policyId=' + ev.policyId);\n return a.outerHTML;\n }\n\n private makeAnchor(shortId: string) {\n const a = document.createElement('a');\n a.title = this.i18nService.t('view');\n a.innerHTML = '' + shortId + '';\n return a;\n }\n\n private getShortId(id: string) {\n return id?.substring(0, 8);\n }\n\n private toDateTimeLocalString(date: Date) {\n return date.getFullYear() +\n '-' + this.pad(date.getMonth() + 1) +\n '-' + this.pad(date.getDate()) +\n 'T' + this.pad(date.getHours()) +\n ':' + this.pad(date.getMinutes());\n }\n\n private pad(num: number) {\n const norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n }\n}\n\nexport class EventInfo {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n}\n\nexport class EventOptions {\n cipherInfo = true;\n}\n","import { CollectionData } from '../data/collectionData';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nexport class Collection extends Domain {\n id: string;\n organizationId: string;\n name: EncString;\n externalId: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(obj?: CollectionData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n organizationId: null,\n name: null,\n externalId: null,\n readOnly: null,\n hidePasswords: null,\n }, alreadyEncrypted, ['id', 'organizationId', 'externalId', 'readOnly', 'hidePasswords']);\n }\n\n decrypt(): Promise {\n return this.decryptObj(new CollectionView(this), {\n name: null,\n }, this.organizationId);\n }\n}\n","import { View } from './view';\n\nimport { Identity } from '../domain/identity';\n\nimport { Utils } from '../../misc/utils';\n\nexport class IdentityView implements View {\n title: string = null;\n middleName: string = null;\n address1: string = null;\n address2: string = null;\n address3: string = null;\n city: string = null;\n state: string = null;\n postalCode: string = null;\n country: string = null;\n company: string = null;\n email: string = null;\n phone: string = null;\n ssn: string = null;\n username: string = null;\n passportNumber: string = null;\n licenseNumber: string = null;\n\n // tslint:disable\n private _firstName: string = null;\n private _lastName: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(i?: Identity) {\n // ctor\n }\n\n get firstName(): string {\n return this._firstName;\n }\n set firstName(value: string) {\n this._firstName = value;\n this._subTitle = null;\n }\n\n get lastName(): string {\n return this._lastName;\n }\n set lastName(value: string) {\n this._lastName = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null && (this.firstName != null || this.lastName != null)) {\n this._subTitle = '';\n if (this.firstName != null) {\n this._subTitle = this.firstName;\n }\n if (this.lastName != null) {\n if (this._subTitle !== '') {\n this._subTitle += ' ';\n }\n this._subTitle += this.lastName;\n }\n }\n\n return this._subTitle;\n }\n\n get fullName(): string {\n if (this.title != null || this.firstName != null || this.middleName != null || this.lastName != null) {\n let name = '';\n if (this.title != null) {\n name += (this.title + ' ');\n }\n if (this.firstName != null) {\n name += (this.firstName + ' ');\n }\n if (this.middleName != null) {\n name += (this.middleName + ' ');\n }\n if (this.lastName != null) {\n name += this.lastName;\n }\n return name.trim();\n }\n\n return null;\n }\n\n get fullAddress(): string {\n let address = this.address1;\n if (!Utils.isNullOrWhitespace(this.address2)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address2;\n }\n if (!Utils.isNullOrWhitespace(this.address3)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address3;\n }\n return address;\n }\n\n get fullAddressPart2(): string {\n if (this.city == null && this.state == null && this.postalCode == null) {\n return null;\n }\n const city = this.city || '-';\n const state = this.state;\n const postalCode = this.postalCode || '-';\n let addressPart2 = city;\n if (!Utils.isNullOrWhitespace(state)) {\n addressPart2 += ', ' + state;\n }\n addressPart2 += ', ' + postalCode;\n return addressPart2;\n }\n}\n","import { LoginUriView } from './loginUriView';\nimport { View } from './view';\n\nimport { Utils } from '../../misc/utils';\nimport { Login } from '../domain/login';\n\nexport class LoginView implements View {\n username: string = null;\n password: string = null;\n passwordRevisionDate?: Date = null;\n totp: string = null;\n uris: LoginUriView[] = null;\n autofillOnPageLoad: boolean = null;\n\n constructor(l?: Login) {\n if (!l) {\n return;\n }\n\n this.passwordRevisionDate = l.passwordRevisionDate;\n this.autofillOnPageLoad = l.autofillOnPageLoad;\n }\n\n get uri(): string {\n return this.hasUris ? this.uris[0].uri : null;\n }\n\n get maskedPassword(): string {\n return this.password != null ? '••••••••' : null;\n }\n\n get subTitle(): string {\n return this.username;\n }\n\n get canLaunch(): boolean {\n return this.hasUris && this.uris.some(u => u.canLaunch);\n }\n\n get hasTotp(): boolean {\n return !Utils.isNullOrWhitespace(this.totp);\n }\n\n get launchUri(): string {\n if (this.hasUris) {\n const uri = this.uris.find(u => u.canLaunch);\n if (uri != null) {\n return uri.launchUri;\n }\n }\n return null;\n }\n\n get hasUris(): boolean {\n return this.uris != null && this.uris.length > 0;\n }\n}\n","import { CollectionDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionData {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n readOnly: boolean;\n\n constructor(response: CollectionDetailsResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.name = response.name;\n this.externalId = response.externalId;\n this.readOnly = response.readOnly;\n }\n}\n","import { View } from './view';\n\nimport { Collection } from '../domain/collection';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nimport { CollectionGroupDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionView implements View, ITreeNodeObject {\n id: string = null;\n organizationId: string = null;\n name: string = null;\n externalId: string = null;\n readOnly: boolean = null;\n hidePasswords: boolean = null;\n\n constructor(c?: Collection | CollectionGroupDetailsResponse) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.externalId = c.externalId;\n if (c instanceof Collection) {\n this.readOnly = c.readOnly;\n this.hidePasswords = c.hidePasswords;\n }\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { AttachmentData } from './attachmentData';\nimport { CardData } from './cardData';\nimport { FieldData } from './fieldData';\nimport { IdentityData } from './identityData';\nimport { LoginData } from './loginData';\nimport { PasswordHistoryData } from './passwordHistoryData';\nimport { SecureNoteData } from './secureNoteData';\n\nimport { CipherResponse } from '../response/cipherResponse';\n\nexport class CipherData {\n id: string;\n organizationId: string;\n folderId: string;\n userId: string;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n favorite: boolean;\n revisionDate: string;\n type: CipherType;\n sizeName: string;\n name: string;\n notes: string;\n login?: LoginData;\n secureNote?: SecureNoteData;\n card?: CardData;\n identity?: IdentityData;\n fields?: FieldData[];\n attachments?: AttachmentData[];\n passwordHistory?: PasswordHistoryData[];\n collectionIds?: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response?: CipherResponse, userId?: string, collectionIds?: string[]) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.folderId = response.folderId;\n this.userId = userId;\n this.edit = response.edit;\n this.viewPassword = response.viewPassword;\n this.organizationUseTotp = response.organizationUseTotp;\n this.favorite = response.favorite;\n this.revisionDate = response.revisionDate;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds;\n this.deletedDate = response.deletedDate;\n this.reprompt = response.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginData(response.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteData(response.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardData(response.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityData(response.identity);\n break;\n default:\n break;\n }\n\n if (response.fields != null) {\n this.fields = response.fields.map(f => new FieldData(f));\n }\n if (response.attachments != null) {\n this.attachments = response.attachments.map(a => new AttachmentData(a));\n }\n if (response.passwordHistory != null) {\n this.passwordHistory = response.passwordHistory.map(ph => new PasswordHistoryData(ph));\n }\n }\n}\n","export enum SendType {\n Text = 0,\n File = 1,\n}\n","export enum CipherRepromptType {\n None = 0,\n Password = 1,\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class PermissionsApi extends BaseResponse {\n accessBusinessPortal: boolean;\n accessEventLogs: boolean;\n accessImportExport: boolean;\n accessReports: boolean;\n manageAllCollections: boolean;\n manageAssignedCollections: boolean;\n manageCiphers: boolean;\n manageGroups: boolean;\n manageSso: boolean;\n managePolicies: boolean;\n manageUsers: boolean;\n manageResetPassword: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return this;\n }\n this.accessBusinessPortal = this.getResponseProperty('AccessBusinessPortal');\n this.accessEventLogs = this.getResponseProperty('AccessEventLogs');\n this.accessImportExport = this.getResponseProperty('AccessImportExport');\n this.accessReports = this.getResponseProperty('AccessReports');\n this.manageAllCollections = this.getResponseProperty('ManageAllCollections');\n this.manageAssignedCollections = this.getResponseProperty('ManageAssignedCollections');\n this.manageCiphers = this.getResponseProperty('ManageCiphers');\n this.manageGroups = this.getResponseProperty('ManageGroups');\n this.manageSso = this.getResponseProperty('ManageSso');\n this.managePolicies = this.getResponseProperty('ManagePolicies');\n this.manageUsers = this.getResponseProperty('ManageUsers');\n this.manageResetPassword = this.getResponseProperty('ManageResetPassword');\n }\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-password-strength',\n templateUrl: 'password-strength.component.html',\n})\nexport class PasswordStrengthComponent implements OnChanges {\n @Input() score?: number;\n @Input() showText = false;\n\n scoreWidth = 0;\n color = 'bg-danger';\n text: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnChanges(): void {\n this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20;\n switch (this.score) {\n case 4:\n this.color = 'bg-success';\n this.text = this.i18nService.t('strong');\n break;\n case 3:\n this.color = 'bg-primary';\n this.text = this.i18nService.t('good');\n break;\n case 2:\n this.color = 'bg-warning';\n this.text = this.i18nService.t('weak');\n break;\n default:\n this.color = 'bg-danger';\n this.text = this.score != null ? this.i18nService.t('weak') : null;\n break;\n }\n }\n}\n","
{{text}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-two-factor-verify',\n templateUrl: 'two-factor-verify.component.html',\n})\nexport class TwoFactorVerifyComponent {\n @Input() type: TwoFactorProviderType;\n @Input() organizationId: string;\n @Output() onAuthed = new EventEmitter();\n\n masterPassword: string;\n formPromise: Promise;\n\n private masterPasswordHash: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash =\n await this.cryptoService.hashPassword(this.masterPassword, null);\n\n try {\n switch (this.type) {\n case -1:\n this.formPromise = this.apiService.getTwoFactorRecover(request);\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n if (this.organizationId != null) {\n this.formPromise = this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.getTwoFactorDuo(request);\n }\n break;\n case TwoFactorProviderType.Email:\n this.formPromise = this.apiService.getTwoFactorEmail(request);\n break;\n case TwoFactorProviderType.WebAuthn:\n this.formPromise = this.apiService.getTwoFactorWebAuthn(request);\n break;\n case TwoFactorProviderType.Authenticator:\n this.formPromise = this.apiService.getTwoFactorAuthenticator(request);\n break;\n case TwoFactorProviderType.Yubikey:\n this.formPromise = this.apiService.getTwoFactorYubiKey(request);\n break;\n }\n\n const response = await this.formPromise;\n this.onAuthed.emit({\n response: response,\n masterPasswordHash: this.masterPasswordHash,\n });\n } catch { }\n }\n}\n","

{{'twoStepLoginAuthDesc' | i18n}}

","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherData } from '../data/cipherData';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Attachment } from './attachment';\nimport { Card } from './card';\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { Password } from './password';\nimport { SecureNote } from './secureNote';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Cipher extends Domain {\n id: string;\n organizationId: string;\n folderId: string;\n name: EncString;\n notes: EncString;\n type: CipherType;\n favorite: boolean;\n organizationUseTotp: boolean;\n edit: boolean;\n viewPassword: boolean;\n revisionDate: Date;\n localData: any;\n login: Login;\n identity: Identity;\n card: Card;\n secureNote: SecureNote;\n attachments: Attachment[];\n fields: Field[];\n passwordHistory: Password[];\n collectionIds: string[];\n deletedDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(obj?: CipherData, alreadyEncrypted: boolean = false, localData: any = null) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n userId: null,\n organizationId: null,\n folderId: null,\n name: null,\n notes: null,\n }, alreadyEncrypted, ['id', 'userId', 'organizationId', 'folderId']);\n\n this.type = obj.type;\n this.favorite = obj.favorite;\n this.organizationUseTotp = obj.organizationUseTotp;\n this.edit = obj.edit;\n if (obj.viewPassword != null) {\n this.viewPassword = obj.viewPassword;\n } else {\n this.viewPassword = true; // Default for already synced Ciphers without viewPassword\n }\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.collectionIds = obj.collectionIds;\n this.localData = localData;\n this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null;\n this.reprompt = obj.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new Login(obj.login, alreadyEncrypted);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(obj.secureNote, alreadyEncrypted);\n break;\n case CipherType.Card:\n this.card = new Card(obj.card, alreadyEncrypted);\n break;\n case CipherType.Identity:\n this.identity = new Identity(obj.identity, alreadyEncrypted);\n break;\n default:\n break;\n }\n\n if (obj.attachments != null) {\n this.attachments = obj.attachments.map(a => new Attachment(a, alreadyEncrypted));\n } else {\n this.attachments = null;\n }\n\n if (obj.fields != null) {\n this.fields = obj.fields.map(f => new Field(f, alreadyEncrypted));\n } else {\n this.fields = null;\n }\n\n if (obj.passwordHistory != null) {\n this.passwordHistory = obj.passwordHistory.map(ph => new Password(ph, alreadyEncrypted));\n } else {\n this.passwordHistory = null;\n }\n }\n\n async decrypt(encKey?: SymmetricCryptoKey): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, this.organizationId, encKey);\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId, encKey);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId, encKey);\n break;\n default:\n break;\n }\n\n const orgId = this.organizationId;\n\n if (this.attachments != null && this.attachments.length > 0) {\n const attachments: any[] = [];\n await this.attachments.reduce((promise, attachment) => {\n return promise.then(() => {\n return attachment.decrypt(orgId, encKey);\n }).then(decAttachment => {\n attachments.push(decAttachment);\n });\n }, Promise.resolve());\n model.attachments = attachments;\n }\n\n if (this.fields != null && this.fields.length > 0) {\n const fields: any[] = [];\n await this.fields.reduce((promise, field) => {\n return promise.then(() => {\n return field.decrypt(orgId, encKey);\n }).then(decField => {\n fields.push(decField);\n });\n }, Promise.resolve());\n model.fields = fields;\n }\n\n if (this.passwordHistory != null && this.passwordHistory.length > 0) {\n const passwordHistory: any[] = [];\n await this.passwordHistory.reduce((promise, ph) => {\n return promise.then(() => {\n return ph.decrypt(orgId, encKey);\n }).then(decPh => {\n passwordHistory.push(decPh);\n });\n }, Promise.resolve());\n model.passwordHistory = passwordHistory;\n }\n\n return model;\n }\n\n toCipherData(userId: string): CipherData {\n const c = new CipherData();\n c.id = this.id;\n c.organizationId = this.organizationId;\n c.folderId = this.folderId;\n c.userId = this.organizationId != null ? userId : null;\n c.edit = this.edit;\n c.viewPassword = this.viewPassword;\n c.organizationUseTotp = this.organizationUseTotp;\n c.favorite = this.favorite;\n c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null;\n c.type = this.type;\n c.collectionIds = this.collectionIds;\n c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null;\n c.reprompt = this.reprompt;\n\n this.buildDataModel(this, c, {\n name: null,\n notes: null,\n });\n\n switch (c.type) {\n case CipherType.Login:\n c.login = this.login.toLoginData();\n break;\n case CipherType.SecureNote:\n c.secureNote = this.secureNote.toSecureNoteData();\n break;\n case CipherType.Card:\n c.card = this.card.toCardData();\n break;\n case CipherType.Identity:\n c.identity = this.identity.toIdentityData();\n break;\n default:\n break;\n }\n\n if (this.fields != null) {\n c.fields = this.fields.map(f => f.toFieldData());\n }\n if (this.attachments != null) {\n c.attachments = this.attachments.map(a => a.toAttachmentData());\n }\n if (this.passwordHistory != null) {\n c.passwordHistory = this.passwordHistory.map(ph => ph.toPasswordHistoryData());\n }\n return c;\n }\n}\n","export abstract class PasswordRepromptService {\n protectedFields: () => string[];\n showPasswordPrompt: () => Promise;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Provider } from 'jslib-common/models/domain/provider';\n\n@Component({\n selector: 'app-navbar',\n templateUrl: 'navbar.component.html',\n})\nexport class NavbarComponent implements OnInit {\n selfHosted = false;\n name: string;\n email: string;\n providers: Provider[] = [];\n\n constructor(private messagingService: MessagingService, private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService, private userService: UserService, private syncService: SyncService) {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.name = await this.tokenService.getName();\n this.email = await this.tokenService.getEmail();\n if (this.name == null || this.name.trim() === '') {\n this.name = this.email;\n }\n\n // Ensure provides are loaded\n if (await this.syncService.getLastSync() == null) {\n await this.syncService.fullSync(false);\n }\n this.providers = await this.userService.getAllProviders();\n }\n\n lock() {\n this.messagingService.send('lockVault');\n }\n\n logOut() {\n this.messagingService.send('logout');\n }\n}\n"," ","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: 'footer.component.html',\n})\nexport class FooterComponent implements OnInit {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n }\n}\n","
© {{year}}, Bitwarden Inc. (Powered by Vaultwarden)
{{'versionNumber' | i18n : version}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\nimport { OrganizationCreateRequest } from 'jslib-common/models/request/organizationCreateRequest';\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUpgradeRequest } from 'jslib-common/models/request/organizationUpgradeRequest';\nimport { ProviderOrganizationCreateRequest } from 'jslib-common/models/request/provider/providerOrganizationCreateRequest';\n\nimport { PlanResponse } from 'jslib-common/models/response/planResponse';\n\n@Component({\n selector: 'app-organization-plans',\n templateUrl: 'organization-plans.component.html',\n})\nexport class OrganizationPlansComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent;\n\n @Input() organizationId: string;\n @Input() showFree = true;\n @Input() showCancel = false;\n @Input() product: ProductType = ProductType.Free;\n @Input() plan: PlanType = PlanType.Free;\n @Input() providerId: string;\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n loading: boolean = true;\n selfHosted: boolean = false;\n ownedBusiness: boolean = false;\n premiumAccessAddon: boolean = false;\n additionalStorage: number = 0;\n additionalSeats: number = 0;\n name: string;\n billingEmail: string;\n clientOwnerEmail: string;\n businessName: string;\n productTypes = ProductType;\n formPromise: Promise;\n singleOrgPolicyBlock: boolean = false;\n freeTrial: boolean = false;\n\n plans: PlanResponse[];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService, private router: Router, private syncService: SyncService,\n private policyService: PolicyService, private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n if (!this.selfHosted) {\n const plans = await this.apiService.getPlans();\n this.plans = plans.data;\n if (this.product === ProductType.Enterprise || this.product === ProductType.Teams) {\n this.ownedBusiness = true;\n }\n }\n\n if (this.providerId) {\n this.ownedBusiness = true;\n this.changedOwnedBusiness();\n }\n\n this.loading = false;\n }\n\n get createOrganization() {\n return this.organizationId == null;\n }\n\n get selectedPlan() {\n return this.plans.find(plan => plan.type === this.plan);\n }\n\n get selectedPlanInterval() {\n return this.selectedPlan.isAnnual\n ? 'year'\n : 'month';\n }\n\n get selectableProducts() {\n let validPlans = this.plans.filter(plan => plan.type !== PlanType.Custom);\n\n if (this.ownedBusiness) {\n validPlans = validPlans.filter(plan => plan.canBeUsedByBusiness);\n }\n\n if (!this.showFree) {\n validPlans = validPlans.filter(plan => plan.product !== ProductType.Free);\n }\n\n validPlans = validPlans\n .filter(plan => !plan.legacyYear\n && !plan.disabled\n && (plan.isAnnual || plan.product === this.productTypes.Free));\n\n return validPlans;\n }\n\n get selectablePlans() {\n return this.plans.filter(plan => !plan.legacyYear && !plan.disabled && plan.product === this.product);\n }\n\n additionalStoragePriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.additionalStoragePricePerGb;\n }\n return selectedPlan.additionalStoragePricePerGb / 12;\n }\n\n seatPriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.seatPrice;\n }\n return selectedPlan.seatPrice / 12;\n }\n\n additionalStorageTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalStorageOption) {\n return 0;\n }\n\n return plan.additionalStoragePricePerGb * Math.abs(this.additionalStorage || 0);\n }\n\n seatTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalSeatsOption) {\n return 0;\n }\n\n return plan.seatPrice * Math.abs(this.additionalSeats || 0);\n }\n\n get subtotal() {\n let subTotal = this.selectedPlan.basePrice;\n if (this.selectedPlan.hasAdditionalSeatsOption && this.additionalSeats) {\n subTotal += this.seatTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasAdditionalStorageOption && this.additionalStorage) {\n subTotal += this.additionalStorageTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon) {\n subTotal += this.selectedPlan.premiumAccessOptionPrice;\n }\n return subTotal;\n }\n\n get taxCharges() {\n return this.taxComponent != null && this.taxComponent.taxRate != null ?\n (this.taxComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total() {\n return (this.subtotal + this.taxCharges) || 0;\n }\n\n changedProduct() {\n this.plan = this.selectablePlans[0].type;\n if (!this.selectedPlan.hasPremiumAccessOption) {\n this.premiumAccessAddon = false;\n }\n if (!this.selectedPlan.hasAdditionalStorageOption) {\n this.additionalStorage = 0;\n }\n if (!this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 0;\n } else if (!this.additionalSeats && !this.selectedPlan.baseSeats &&\n this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 1;\n }\n this.freeTrial = this.selectedPlan.trialPeriodDays != null;\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.selectedPlan.canBeUsedByBusiness) {\n return;\n }\n this.product = ProductType.Teams;\n this.plan = PlanType.TeamsAnnually;\n }\n\n changedCountry() {\n this.paymentComponent.hideBank = this.taxComponent.taxInfo.country !== 'US';\n // Bank Account payments are only available for US customers\n if (this.paymentComponent.hideBank &&\n this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n async submit() {\n this.singleOrgPolicyBlock = await this.userHasBlockingSingleOrgPolicy();\n\n if (this.singleOrgPolicyBlock) {\n return;\n }\n\n try {\n const doSubmit = async () => {\n let orgId: string = null;\n if (this.createOrganization) {\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n const collection = await this.cryptoService.encrypt(\n this.i18nService.t('defaultCollection'), shareKey[1]);\n const collectionCt = collection.encryptedString;\n const orgKeys = await this.cryptoService.makeKeyPair(shareKey[1]);\n\n if (this.selfHosted) {\n orgId = await this.createSelfHosted(key, collectionCt, orgKeys);\n } else {\n orgId = await this.createCloudHosted(key, collectionCt, orgKeys, shareKey[1]);\n }\n\n this.toasterService.popAsync('success', this.i18nService.t('organizationCreated'), this.i18nService.t('organizationReadyToGo'));\n } else {\n orgId = await this.updateOrganization(orgId);\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpgraded'));\n }\n\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.router.navigate(['/organizations/' + orgId]);\n };\n\n this.formPromise = doSubmit();\n await this.formPromise;\n this.onSuccess.emit();\n } catch { }\n }\n\n private async userHasBlockingSingleOrgPolicy() {\n return this.policyService.policyAppliesToUser(PolicyType.SingleOrg);\n }\n\n private async updateOrganization(orgId: string) {\n const request = new OrganizationUpgradeRequest();\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n\n // Retrieve org info to backfill pub/priv key if necessary\n const org = await this.userService.getOrganization(this.organizationId);\n if (!org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request);\n if (!result.success && result.paymentIntentClientSecret != null) {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n }\n return this.organizationId;\n }\n\n private async createCloudHosted(key: string, collectionCt: string, orgKeys: [string, EncString], orgKey: SymmetricCryptoKey) {\n const request = new OrganizationCreateRequest();\n request.key = key;\n request.collectionName = collectionCt;\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n\n if (this.selectedPlan.type === PlanType.Free) {\n request.planType = PlanType.Free;\n } else {\n const tokenResult = await this.paymentComponent.createPaymentToken();\n\n request.paymentToken = tokenResult[0];\n request.paymentMethodType = tokenResult[1];\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption &&\n this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n if (this.taxComponent.taxInfo.includeTaxId) {\n request.taxIdNumber = this.taxComponent.taxInfo.taxId;\n request.billingAddressLine1 = this.taxComponent.taxInfo.line1;\n request.billingAddressLine2 = this.taxComponent.taxInfo.line2;\n request.billingAddressCity = this.taxComponent.taxInfo.city;\n request.billingAddressState = this.taxComponent.taxInfo.state;\n }\n }\n\n if (this.providerId) {\n const providerRequest = new ProviderOrganizationCreateRequest(this.clientOwnerEmail, request);\n const providerKey = await this.cryptoService.getProviderKey(this.providerId);\n providerRequest.organizationCreateRequest.key = (await this.cryptoService.encrypt(orgKey.key, providerKey)).encryptedString;\n const orgId = (await this.apiService.postProviderCreateOrganization(this.providerId, providerRequest)).organizationId;\n\n return orgId;\n } else {\n return (await this.apiService.postOrganization(request)).id;\n }\n }\n\n private async createSelfHosted(key: string, collectionCt: string, orgKeys: [string, EncString]) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n throw new Error(this.i18nService.t('selectFile'));\n }\n\n const fd = new FormData();\n fd.append('license', files[0]);\n fd.append('key', key);\n fd.append('collectionName', collectionCt);\n const response = await this.apiService.postOrganizationLicense(fd);\n const orgId = response.id;\n\n // Org Keys live outside of the OrganizationLicense - add the keys to the org here\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n await this.apiService.postOrganizationKeys(orgId, request);\n\n return orgId;\n }\n}\n"," {{'loading' | i18n}}

{{'uploadLicenseFileOrg' | i18n}}

{{'licenseFileDesc' | i18n : 'bitwarden_organization_license.json'}}

{{'generalInformation' | i18n}}

{{'clientOwnerDesc' | i18n : '20'}}

{{'chooseYourPlan' | i18n}}

{{'users' | i18n}}

{{'userSeatsHowManyDesc' | i18n}}

{{'addons' | i18n}}

{{'userSeatsAdditionalDesc' | i18n : selectedPlan.baseSeats : (seatPriceMonthly(selectedPlan) | currency:'$')}}
{{'additionalStorageIntervalDesc' | i18n : '1 GB' : (additionalStoragePriceMonthly(selectedPlan) | currency:'$') : ('month' | i18n)}}
{{'premiumAccessDesc' | i18n : (3.33 | currency:'$') : ('month' | i18n)}}

{{'summary' | i18n}}


{{ (createOrganization ? 'paymentInformation' : 'billingInformation') | i18n}}

{{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}
{{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}

{{'total' | i18n}}: {{total | currency:'USD $'}}/{{selectedPlanInterval | i18n}}

{{'paymentChargedWithTrial' | i18n : (selectedPlanInterval | i18n) }} {{'paymentCharged' | i18n : (selectedPlanInterval | i18n) }}
{{'singleOrgBlockCreateMessage' | i18n}}
","import { Utils } from '../../misc/utils';\n\nimport { BaseResponse } from './baseResponse';\n\nexport class ErrorResponse extends BaseResponse {\n message: string;\n validationErrors: { [key: string]: string[]; };\n statusCode: number;\n captchaRequired: boolean;\n captchaSiteKey: string;\n\n constructor(response: any, status: number, identityResponse?: boolean) {\n super(response);\n let errorModel = null;\n if (response != null) {\n const responseErrorModel = this.getResponseProperty('ErrorModel');\n if (responseErrorModel && identityResponse) {\n errorModel = responseErrorModel;\n } else {\n errorModel = response;\n }\n }\n\n if (errorModel) {\n this.message = this.getResponseProperty('Message', errorModel);\n this.validationErrors = this.getResponseProperty('ValidationErrors', errorModel);\n this.captchaSiteKey = this.validationErrors?.HCaptcha_SiteKey?.[0];\n this.captchaRequired = !Utils.isNullOrWhitespace(this.captchaSiteKey);\n } else {\n if (status === 429) {\n this.message = 'Rate limit exceeded. Try again later.';\n }\n }\n this.statusCode = status;\n }\n\n getSingleMessage(): string {\n if (this.validationErrors == null) {\n return this.message;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n if (this.validationErrors[key].length) {\n return this.validationErrors[key][0];\n }\n }\n return this.message;\n }\n\n getAllMessages(): string[] {\n const messages: string[] = [];\n if (this.validationErrors == null) {\n return messages;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n this.validationErrors[key].forEach((item: string) => {\n let prefix = '';\n if (key.indexOf('[') > -1 && key.indexOf(']') > -1) {\n const lastSep = key.lastIndexOf('.');\n prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + ': ';\n }\n messages.push(prefix + item);\n });\n }\n return messages;\n }\n}\n","export enum EventType {\n User_LoggedIn = 1000,\n User_ChangedPassword = 1001,\n User_Updated2fa = 1002,\n User_Disabled2fa = 1003,\n User_Recovered2fa = 1004,\n User_FailedLogIn = 1005,\n User_FailedLogIn2fa = 1006,\n User_ClientExportedVault = 1007,\n User_UpdatedTempPassword = 1008,\n\n Cipher_Created = 1100,\n Cipher_Updated = 1101,\n Cipher_Deleted = 1102,\n Cipher_AttachmentCreated = 1103,\n Cipher_AttachmentDeleted = 1104,\n Cipher_Shared = 1105,\n Cipher_UpdatedCollections = 1106,\n Cipher_ClientViewed = 1107,\n Cipher_ClientToggledPasswordVisible = 1108,\n Cipher_ClientToggledHiddenFieldVisible = 1109,\n Cipher_ClientToggledCardCodeVisible = 1110,\n Cipher_ClientCopiedPassword = 1111,\n Cipher_ClientCopiedHiddenField = 1112,\n Cipher_ClientCopiedCardCode = 1113,\n Cipher_ClientAutofilled = 1114,\n Cipher_SoftDeleted = 1115,\n Cipher_Restored = 1116,\n Cipher_ClientToggledCardNumberVisible = 1117,\n\n Collection_Created = 1300,\n Collection_Updated = 1301,\n Collection_Deleted = 1302,\n\n Group_Created = 1400,\n Group_Updated = 1401,\n Group_Deleted = 1402,\n\n OrganizationUser_Invited = 1500,\n OrganizationUser_Confirmed = 1501,\n OrganizationUser_Updated = 1502,\n OrganizationUser_Removed = 1503,\n OrganizationUser_UpdatedGroups = 1504,\n OrganizationUser_UnlinkedSso = 1505,\n OrganizationUser_ResetPassword_Enroll = 1506,\n OrganizationUser_ResetPassword_Withdraw = 1507,\n OrganizationUser_AdminResetPassword = 1508,\n OrganizationUser_ResetSsoLink = 1509,\n\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n Organization_VaultAccessed = 1603,\n\n Policy_Updated = 1700,\n\n ProviderUser_Invited = 1800,\n ProviderUser_Confirmed = 1801,\n ProviderUser_Updated = 1802,\n ProviderUser_Removed = 1803,\n\n ProviderOrganization_Created = 1900,\n ProviderOrganization_Added = 1901,\n ProviderOrganization_Removed = 1902,\n ProviderOrganization_VaultAccessed = 1903,\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { View } from './view';\n\nimport { Field } from '../domain/field';\n\nexport class FieldView implements View {\n name: string = null;\n value: string = null;\n type: FieldType = null;\n newField: boolean = false; // Marks if the field is new and hasn't been saved\n showValue: boolean = false;\n\n constructor(f?: Field) {\n if (!f) {\n return;\n }\n\n this.type = f.type;\n }\n\n get maskedValue(): string {\n return this.value != null ? '••••••••' : null;\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { LoginUriApi } from '../api/loginUriApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nimport { AttachmentRequest } from './attachmentRequest';\nimport { PasswordHistoryRequest } from './passwordHistoryRequest';\n\nexport class CipherRequest {\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n login: LoginApi;\n secureNote: SecureNoteApi;\n card: CardApi;\n identity: IdentityApi;\n fields: FieldApi[];\n passwordHistory: PasswordHistoryRequest[];\n // Deprecated, remove at some point and rename attachments2 to attachments\n attachments: { [id: string]: string; };\n attachments2: { [id: string]: AttachmentRequest; };\n lastKnownRevisionDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(cipher: Cipher) {\n this.type = cipher.type;\n this.folderId = cipher.folderId;\n this.organizationId = cipher.organizationId;\n this.name = cipher.name ? cipher.name.encryptedString : null;\n this.notes = cipher.notes ? cipher.notes.encryptedString : null;\n this.favorite = cipher.favorite;\n this.lastKnownRevisionDate = cipher.revisionDate;\n this.reprompt = cipher.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginApi();\n this.login.uris = null;\n this.login.username = cipher.login.username ? cipher.login.username.encryptedString : null;\n this.login.password = cipher.login.password ? cipher.login.password.encryptedString : null;\n this.login.passwordRevisionDate = cipher.login.passwordRevisionDate != null ?\n cipher.login.passwordRevisionDate.toISOString() : null;\n this.login.totp = cipher.login.totp ? cipher.login.totp.encryptedString : null;\n this.login.autofillOnPageLoad = cipher.login.autofillOnPageLoad;\n\n if (cipher.login.uris != null) {\n this.login.uris = cipher.login.uris.map(u => {\n const uri = new LoginUriApi();\n uri.uri = u.uri != null ? u.uri.encryptedString : null;\n uri.match = u.match != null ? u.match : null;\n return uri;\n });\n }\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteApi();\n this.secureNote.type = cipher.secureNote.type;\n break;\n case CipherType.Card:\n this.card = new CardApi();\n this.card.cardholderName = cipher.card.cardholderName != null ?\n cipher.card.cardholderName.encryptedString : null;\n this.card.brand = cipher.card.brand != null ? cipher.card.brand.encryptedString : null;\n this.card.number = cipher.card.number != null ? cipher.card.number.encryptedString : null;\n this.card.expMonth = cipher.card.expMonth != null ? cipher.card.expMonth.encryptedString : null;\n this.card.expYear = cipher.card.expYear != null ? cipher.card.expYear.encryptedString : null;\n this.card.code = cipher.card.code != null ? cipher.card.code.encryptedString : null;\n break;\n case CipherType.Identity:\n this.identity = new IdentityApi();\n this.identity.title = cipher.identity.title != null ? cipher.identity.title.encryptedString : null;\n this.identity.firstName = cipher.identity.firstName != null ?\n cipher.identity.firstName.encryptedString : null;\n this.identity.middleName = cipher.identity.middleName != null ?\n cipher.identity.middleName.encryptedString : null;\n this.identity.lastName = cipher.identity.lastName != null ?\n cipher.identity.lastName.encryptedString : null;\n this.identity.address1 = cipher.identity.address1 != null ?\n cipher.identity.address1.encryptedString : null;\n this.identity.address2 = cipher.identity.address2 != null ?\n cipher.identity.address2.encryptedString : null;\n this.identity.address3 = cipher.identity.address3 != null ?\n cipher.identity.address3.encryptedString : null;\n this.identity.city = cipher.identity.city != null ? cipher.identity.city.encryptedString : null;\n this.identity.state = cipher.identity.state != null ? cipher.identity.state.encryptedString : null;\n this.identity.postalCode = cipher.identity.postalCode != null ?\n cipher.identity.postalCode.encryptedString : null;\n this.identity.country = cipher.identity.country != null ?\n cipher.identity.country.encryptedString : null;\n this.identity.company = cipher.identity.company != null ?\n cipher.identity.company.encryptedString : null;\n this.identity.email = cipher.identity.email != null ? cipher.identity.email.encryptedString : null;\n this.identity.phone = cipher.identity.phone != null ? cipher.identity.phone.encryptedString : null;\n this.identity.ssn = cipher.identity.ssn != null ? cipher.identity.ssn.encryptedString : null;\n this.identity.username = cipher.identity.username != null ?\n cipher.identity.username.encryptedString : null;\n this.identity.passportNumber = cipher.identity.passportNumber != null ?\n cipher.identity.passportNumber.encryptedString : null;\n this.identity.licenseNumber = cipher.identity.licenseNumber != null ?\n cipher.identity.licenseNumber.encryptedString : null;\n break;\n default:\n break;\n }\n\n if (cipher.fields != null) {\n this.fields = cipher.fields.map(f => {\n const field = new FieldApi();\n field.type = f.type;\n field.name = f.name ? f.name.encryptedString : null;\n field.value = f.value ? f.value.encryptedString : null;\n return field;\n });\n }\n\n if (cipher.passwordHistory != null) {\n this.passwordHistory = [];\n cipher.passwordHistory.forEach(ph => {\n this.passwordHistory.push({\n lastUsedDate: ph.lastUsedDate,\n password: ph.password ? ph.password.encryptedString : null,\n });\n });\n }\n\n if (cipher.attachments != null) {\n this.attachments = {};\n this.attachments2 = {};\n cipher.attachments.forEach(attachment => {\n const fileName = attachment.fileName ? attachment.fileName.encryptedString : null;\n this.attachments[attachment.id] = fileName;\n const attachmentRequest = new AttachmentRequest();\n attachmentRequest.fileName = fileName;\n if (attachment.key != null) {\n attachmentRequest.key = attachment.key.encryptedString;\n }\n this.attachments2[attachment.id] = attachmentRequest;\n });\n }\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nexport class ModalRef {\n\n onCreated: Observable; // Modal added to the DOM.\n onClose: Observable; // Initiated close.\n onClosed: Observable; // Modal was closed (Remove element from DOM)\n onShow: Observable; // Start showing modal\n onShown: Observable; // Modal is fully visible\n\n private readonly _onCreated = new Subject();\n private readonly _onClose = new Subject();\n private readonly _onClosed = new Subject();\n private readonly _onShow = new Subject();\n private readonly _onShown = new Subject();\n private lastResult: any;\n\n constructor() {\n this.onCreated = this._onCreated.asObservable();\n this.onClose = this._onClose.asObservable();\n this.onClosed = this._onClosed.asObservable();\n this.onShow = this._onShow.asObservable();\n this.onShown = this._onShow.asObservable();\n }\n\n show() {\n this._onShow.next();\n }\n\n shown() {\n this._onShown.next();\n }\n\n close(result?: any) {\n this.lastResult = result;\n this._onClose.next(result);\n }\n\n closed() {\n this._onClosed.next(this.lastResult);\n }\n\n created(el: HTMLElement) {\n this._onCreated.next(el);\n }\n\n onClosedPromise(): Promise {\n return this.onClosed.pipe(first()).toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { ProviderAddOrganizationRequest } from 'jslib-common/models/request/provider/providerAddOrganizationRequest';\n\n@Injectable()\nexport class ProviderService {\n constructor(private cryptoService: CryptoService, private syncService: SyncService, private apiService: ApiService) {}\n\n async addOrganizationToProvider(providerId: string, organizationId: string) {\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const providerKey = await this.cryptoService.getProviderKey(providerId);\n\n const encryptedOrgKey = await this.cryptoService.encrypt(orgKey.key, providerKey);\n\n const request = new ProviderAddOrganizationRequest();\n request.organizationId = organizationId;\n request.key = encryptedOrgKey.encryptedString;\n\n const response = await this.apiService.postProviderAddOrganization(providerId, request);\n await this.syncService.fullSync(true);\n return response;\n }\n\n async detachOrganizastion(providerId: string, organizationId: string): Promise {\n await this.apiService.deleteProviderOrganization(providerId, organizationId);\n await this.syncService.fullSync(true);\n }\n}\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually2019 = 1,\n TeamsMonthly2019 = 2,\n TeamsAnnually2019 = 3,\n EnterpriseMonthly2019 = 4,\n EnterpriseAnnually2019 = 5,\n Custom = 6,\n FamiliesAnnually = 7,\n TeamsMonthly = 8,\n TeamsAnnually = 9,\n EnterpriseMonthly = 10,\n EnterpriseAnnually = 11,\n}\n","export enum PaymentMethodType {\n Card = 0,\n BankAccount = 1,\n PayPal = 2,\n BitPay = 3,\n Credit = 4,\n WireTransfer = 5,\n AppleInApp = 6,\n GoogleInApp = 7,\n Check = 8,\n}\n","import { AttachmentResponse } from './attachmentResponse';\nimport { BaseResponse } from './baseResponse';\nimport { PasswordHistoryResponse } from './passwordHistoryResponse';\n\nimport { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class CipherResponse extends BaseResponse {\n id: string;\n organizationId: string;\n folderId: string;\n type: number;\n name: string;\n notes: string;\n fields: FieldApi[];\n login: LoginApi;\n card: CardApi;\n identity: IdentityApi;\n secureNote: SecureNoteApi;\n favorite: boolean;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n revisionDate: string;\n attachments: AttachmentResponse[];\n passwordHistory: PasswordHistoryResponse[];\n collectionIds: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.folderId = this.getResponseProperty('FolderId') || null;\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.favorite = this.getResponseProperty('Favorite') || false;\n this.edit = !!this.getResponseProperty('Edit');\n if (this.getResponseProperty('ViewPassword') == null) {\n this.viewPassword = true;\n } else {\n this.viewPassword = this.getResponseProperty('ViewPassword');\n }\n this.organizationUseTotp = this.getResponseProperty('OrganizationUseTotp');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.deletedDate = this.getResponseProperty('DeletedDate');\n\n const login = this.getResponseProperty('Login');\n if (login != null) {\n this.login = new LoginApi(login);\n }\n\n const card = this.getResponseProperty('Card');\n if (card != null) {\n this.card = new CardApi(card);\n }\n\n const identity = this.getResponseProperty('Identity');\n if (identity != null) {\n this.identity = new IdentityApi(identity);\n }\n\n const secureNote = this.getResponseProperty('SecureNote');\n if (secureNote != null) {\n this.secureNote = new SecureNoteApi(secureNote);\n }\n\n const fields = this.getResponseProperty('Fields');\n if (fields != null) {\n this.fields = fields.map((f: any) => new FieldApi(f));\n }\n\n const attachments = this.getResponseProperty('Attachments');\n if (attachments != null) {\n this.attachments = attachments.map((a: any) => new AttachmentResponse(a));\n }\n\n const passwordHistory = this.getResponseProperty('PasswordHistory');\n if (passwordHistory != null) {\n this.passwordHistory = passwordHistory.map((h: any) => new PasswordHistoryResponse(h));\n }\n\n this.reprompt = this.getResponseProperty('Reprompt') || CipherRepromptType.None;\n }\n}\n","import { BasePolicy } from '../organizations/policies/base-policy.component';\n\nexport class PolicyListService {\n private policies: BasePolicy[] = [];\n\n addPolicies(policies: BasePolicy[]) {\n this.policies.push(...policies);\n }\n\n getPolicies(): BasePolicy[] {\n return this.policies;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n ActivatedRoute,\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Injectable()\nexport class RouterService {\n private previousUrl: string = undefined;\n private currentUrl: string = undefined;\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute,\n private titleService: Title, i18nService: I18nService) {\n this.currentUrl = this.router.url;\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n\n let title = i18nService.t('pageTitle', 'Bitwarden');\n let titleId: string = null;\n let rawTitle: string = null;\n let child = this.activatedRoute.firstChild;\n while (child != null) {\n if (child.firstChild != null) {\n child = child.firstChild;\n } else if (child.snapshot.data != null && child.snapshot.data.title != null) {\n rawTitle = child.snapshot.data.title;\n break;\n } else if (child.snapshot.data != null && child.snapshot.data.titleId != null) {\n titleId = child.snapshot.data.titleId;\n break;\n } else {\n titleId = null;\n rawTitle = null;\n break;\n }\n }\n\n if (titleId != null || rawTitle != null) {\n const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId);\n if (newTitle != null && newTitle !== '') {\n title = (newTitle + ' | ' + title);\n }\n }\n this.titleService.setTitle(title);\n }\n });\n }\n\n getPreviousUrl() {\n return this.previousUrl;\n }\n\n setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n}\n","export enum KdfType {\n PBKDF2_SHA256 = 0,\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { Utils } from '../../misc/utils';\n\nexport class SymmetricCryptoKey {\n key: ArrayBuffer;\n encKey?: ArrayBuffer;\n macKey?: ArrayBuffer;\n encType: EncryptionType;\n\n keyB64: string;\n encKeyB64: string;\n macKeyB64: string;\n\n meta: any;\n\n constructor(key: ArrayBuffer, encType?: EncryptionType) {\n if (key == null) {\n throw new Error('Must provide key');\n }\n\n if (encType == null) {\n if (key.byteLength === 32) {\n encType = EncryptionType.AesCbc256_B64;\n } else if (key.byteLength === 64) {\n encType = EncryptionType.AesCbc256_HmacSha256_B64;\n } else {\n throw new Error('Unable to determine encType.');\n }\n }\n\n this.key = key;\n this.encType = encType;\n\n if (encType === EncryptionType.AesCbc256_B64 && key.byteLength === 32) {\n this.encKey = key;\n this.macKey = null;\n } else if (encType === EncryptionType.AesCbc128_HmacSha256_B64 && key.byteLength === 32) {\n this.encKey = key.slice(0, 16);\n this.macKey = key.slice(16, 32);\n } else if (encType === EncryptionType.AesCbc256_HmacSha256_B64 && key.byteLength === 64) {\n this.encKey = key.slice(0, 32);\n this.macKey = key.slice(32, 64);\n } else {\n throw new Error('Unsupported encType/key length.');\n }\n\n if (this.key != null) {\n this.keyB64 = Utils.fromBufferToB64(this.key);\n }\n if (this.encKey != null) {\n this.encKeyB64 = Utils.fromBufferToB64(this.encKey);\n }\n if (this.macKey != null) {\n this.macKeyB64 = Utils.fromBufferToB64(this.macKey);\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { TwoFactorProviderRequest } from 'jslib-common/models/request/twoFactorProviderRequest';\n\n@Directive()\nexport abstract class TwoFactorBaseComponent {\n @Output() onUpdated = new EventEmitter();\n\n type: TwoFactorProviderType;\n organizationId: string;\n twoFactorProviderType = TwoFactorProviderType;\n enabled = false;\n authed = false;\n\n protected masterPasswordHash: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected platformUtilsService: PlatformUtilsService) { }\n\n protected auth(authResponse: any) {\n this.masterPasswordHash = authResponse.masterPasswordHash;\n this.authed = true;\n }\n\n protected async enable(enableFunction: () => Promise) {\n try {\n await enableFunction();\n this.onUpdated.emit(true);\n } catch { }\n }\n\n protected async disable(promise: Promise) {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('twoStepDisableDesc'),\n this.i18nService.t('disable'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n const request = new TwoFactorProviderRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.type = this.type;\n if (this.organizationId != null) {\n promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request);\n } else {\n promise = this.apiService.putTwoFactorDisable(request);\n }\n await promise;\n this.enabled = false;\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepDisabled'));\n this.onUpdated.emit(false);\n } catch { }\n }\n}\n","import {\n Directive,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { AddEditComponent as OrgAddEditComponent } from '../organizations/vault/add-edit.component';\nimport { AddEditComponent } from '../vault/add-edit.component';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\n@Directive()\nexport class CipherReportComponent {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n\n loading = false;\n hasLoaded = false;\n ciphers: CipherView[] = [];\n organization: Organization;\n\n constructor(private modalService: ModalService, protected userService: UserService,\n protected messagingService: MessagingService, public requiresPaid: boolean) { }\n\n async load() {\n this.loading = true;\n await this.setCiphers();\n this.loading = false;\n this.hasLoaded = true;\n }\n\n async selectCipher(cipher: CipherView) {\n const type = this.organization != null ? OrgAddEditComponent : AddEditComponent;\n\n const [modal, childComponent] = await this.modalService.openViewRef(type, this.cipherAddEditModalRef, (comp: OrgAddEditComponent | AddEditComponent) => {\n if (this.organization != null) {\n (comp as OrgAddEditComponent).organization = this.organization;\n comp.organizationId = this.organization.id;\n }\n\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.load();\n });\n comp.onDeletedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.load();\n });\n comp.onRestoredCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.load();\n });\n\n });\n\n return childComponent;\n }\n\n protected async checkAccess(): Promise {\n if (this.organization != null) {\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n if (this.requiresPaid && !this.organization.useTotp) {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n return false;\n }\n } else {\n const accessPremium = await this.userService.canAccessPremium();\n if (this.requiresPaid && !accessPremium) {\n this.messagingService.send('premiumRequired');\n this.loading = false;\n return false;\n }\n }\n return true;\n }\n\n protected async setCiphers() {\n this.ciphers = [];\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { View } from './view';\n\nimport { LoginUri } from '../domain/loginUri';\n\nimport { Utils } from '../../misc/utils';\n\nconst CanLaunchWhitelist = [\n 'https://',\n 'http://',\n 'ssh://',\n 'ftp://',\n 'sftp://',\n 'irc://',\n 'vnc://',\n // https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-uri\n 'rdp://', // Legacy RDP URI scheme\n 'ms-rd:', // Preferred RDP URI scheme\n 'chrome://',\n 'iosapp://',\n 'androidapp://',\n];\n\nexport class LoginUriView implements View {\n match: UriMatchType = null;\n\n // tslint:disable\n private _uri: string = null;\n private _domain: string = null;\n private _hostname: string = null;\n private _host: string = null;\n private _canLaunch: boolean = null;\n // tslint:enable\n\n constructor(u?: LoginUri) {\n if (!u) {\n return;\n }\n\n this.match = u.match;\n }\n\n get uri(): string {\n return this._uri;\n }\n set uri(value: string) {\n this._uri = value;\n this._domain = null;\n this._canLaunch = null;\n }\n\n get domain(): string {\n if (this._domain == null && this.uri != null) {\n this._domain = Utils.getDomain(this.uri);\n if (this._domain === '') {\n this._domain = null;\n }\n }\n\n return this._domain;\n }\n\n get hostname(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._hostname == null && this.uri != null) {\n this._hostname = Utils.getHostname(this.uri);\n if (this._hostname === '') {\n this._hostname = null;\n }\n }\n\n return this._hostname;\n }\n\n get host(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._host == null && this.uri != null) {\n this._host = Utils.getHost(this.uri);\n if (this._host === '') {\n this._host = null;\n }\n }\n\n return this._host;\n }\n\n get hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : this.uri;\n }\n\n get hostOrUri(): string {\n return this.host != null ? this.host : this.uri;\n }\n\n get isWebsite(): boolean {\n return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0 ||\n (this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri)));\n }\n\n get canLaunch(): boolean {\n if (this._canLaunch != null) {\n return this._canLaunch;\n }\n if (this.uri != null && this.match !== UriMatchType.RegularExpression) {\n const uri = this.launchUri;\n for (let i = 0; i < CanLaunchWhitelist.length; i++) {\n if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {\n this._canLaunch = true;\n return this._canLaunch;\n }\n }\n }\n this._canLaunch = false;\n return this._canLaunch;\n }\n\n get launchUri(): string {\n return this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri) ? ('http://' + this.uri) : this.uri;\n }\n}\n","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\n}\n","import { Component } from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib-angular/components/add-edit.component';\nimport { LoginUriView } from 'jslib-common/models/view/loginUriView';\n\n@Component({\n selector: 'app-vault-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n canAccessPremium: boolean;\n totpCode: string;\n totpCodeFormatted: string;\n totpDash: number;\n totpSec: number;\n totpLow: boolean;\n showRevisionDate = false;\n hasPasswordHistory = false;\n viewingPasswordHistory = false;\n viewOnly = false;\n\n protected totpInterval: number;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n protected totpService: TotpService, protected passwordGenerationService: PasswordGenerationService,\n protected messagingService: MessagingService, eventService: EventService,\n protected policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, messagingService, eventService, policyService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null;\n this.hasPasswordHistory = this.cipher.hasPasswordHistory;\n this.cleanUp();\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n if (this.cipher.type === CipherType.Login && this.cipher.login.totp &&\n (this.cipher.organizationUseTotp || this.canAccessPremium)) {\n await this.totpUpdateCode();\n const interval = this.totpService.getTimeInterval(this.cipher.login.totp);\n await this.totpTick(interval);\n\n this.totpInterval = window.setInterval(async () => {\n await this.totpTick(interval);\n }, 1000);\n }\n }\n\n toggleFavorite() {\n this.cipher.favorite = !this.cipher.favorite;\n }\n\n launch(uri: LoginUriView) {\n if (!uri.canLaunch) {\n return;\n }\n\n this.platformUtilsService.launchUri(uri.launchUri);\n }\n\n copy(value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (this.editMode) {\n if (typeI18nKey === 'password') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId);\n } else if (aType === 'H_Field') {\n this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId);\n }\n }\n }\n\n async generatePassword(): Promise {\n const confirmed = await super.generatePassword();\n if (confirmed) {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.cipher.login.password = await this.passwordGenerationService.generatePassword(options);\n }\n return confirmed;\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.cipher.organizationId });\n }\n\n viewHistory() {\n this.viewingPasswordHistory = !this.viewingPasswordHistory;\n }\n\n protected cleanUp() {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n\n protected async totpUpdateCode() {\n if (this.cipher == null || this.cipher.type !== CipherType.Login || this.cipher.login.totp == null) {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n return;\n }\n\n this.totpCode = await this.totpService.getCode(this.cipher.login.totp);\n if (this.totpCode != null) {\n if (this.totpCode.length > 4) {\n const half = Math.floor(this.totpCode.length / 2);\n this.totpCodeFormatted = this.totpCode.substring(0, half) + ' ' + this.totpCode.substring(half);\n } else {\n this.totpCodeFormatted = this.totpCode;\n }\n } else {\n this.totpCodeFormatted = null;\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n }\n\n protected allowOwnershipAssignment() {\n return (!this.editMode || this.cloneMode) && this.ownershipOptions != null\n && (this.ownershipOptions.length > 1 || !this.allowPersonal);\n }\n\n private async totpTick(intervalSeconds: number) {\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const mod = epoch % intervalSeconds;\n\n this.totpSec = intervalSeconds - mod;\n this.totpDash = +(Math.round((((78.6 / intervalSeconds) * mod) + 'e+2') as any) + 'e-2');\n this.totpLow = this.totpSec <= 7;\n if (mod === 0) {\n await this.totpUpdateCode();\n }\n }\n}\n","

{{title}}

{{'personalOwnershipPolicyInEffect' | i18n}}
{{totpSec}} {{totpCodeFormatted}}
{{'newUri' | i18n}}

{{'customFields' | i18n}}

{{'newCustomField' | i18n}}

{{'ownership' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{'dateUpdated' | i18n}}: {{cipher.revisionDate | date:'medium'}}
{{'datePasswordUpdated' | i18n}}: {{cipher.passwordRevisionDisplayDate | date:'medium'}}
{{'passwordHistory' | i18n}}: {{cipher.passwordHistory.length}}
{{ph.lastUsedDate | date:'short'}} - {{ph.password}}

{{'options' | i18n}}

","import { Importer } from '../importers/importer';\n\nexport interface ImportOption {\n id: string;\n name: string;\n}\nexport abstract class ImportService {\n featuredImportOptions: ImportOption[];\n regularImportOptions: ImportOption[];\n getImportOptions: () => ImportOption[];\n import: (importer: Importer, fileContents: string, organizationId?: string) => Promise;\n getImporter: (format: string, organizationId: string) => Importer;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CiphersComponent as BaseCiphersComponent } from 'jslib-angular/components/ciphers.component';\n\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: 'app-vault-ciphers',\n templateUrl: 'ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent implements OnDestroy {\n @Input() showAddNew = true;\n @Output() onAttachmentsClicked = new EventEmitter();\n @Output() onShareClicked = new EventEmitter();\n @Output() onCollectionsClicked = new EventEmitter();\n @Output() onCloneClicked = new EventEmitter();\n\n pagedCiphers: CipherView[] = [];\n pageSize = 200;\n cipherType = CipherType;\n actionPromise: Promise;\n userHasPremiumAccess = false;\n\n private didScroll = false;\n private pagedCiphersCount = 0;\n private refreshing = false;\n\n constructor(searchService: SearchService, protected toasterService: ToasterService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected cipherService: CipherService, protected eventService: EventService,\n protected totpService: TotpService, protected userService: UserService,\n protected passwordRepromptService: PasswordRepromptService) {\n super(searchService);\n }\n\n async ngOnInit() {\n this.userHasPremiumAccess = await this.userService.canAccessPremium();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n loadMore() {\n if (this.ciphers.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCiphers.length;\n let pagedSize = this.pageSize;\n if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) {\n pagedSize = this.pagedCiphersCount;\n }\n if (this.ciphers.length > pagedLength) {\n this.pagedCiphers = this.pagedCiphers.concat(this.ciphers.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCiphersCount = this.pagedCiphers.length;\n this.didScroll = this.pagedCiphers.length > this.pageSize;\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter, this.deleted);\n } finally {\n this.refreshing = false;\n }\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.ciphers.length > this.pageSize;\n }\n\n async resetPaging() {\n this.pagedCiphers = [];\n this.loadMore();\n }\n\n async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, this.deletedFilter], indexedCiphers);\n this.resetPaging();\n }\n\n launch(uri: string) {\n this.platformUtilsService.launchUri(uri);\n }\n\n async attachments(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onAttachmentsClicked.emit(c);\n }\n\n async share(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onShareClicked.emit(c);\n }\n\n collections(c: CipherView) {\n this.onCollectionsClicked.emit(c);\n }\n\n async clone(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onCloneClicked.emit(c);\n }\n\n async delete(c: CipherView): Promise {\n if (!await this.repromptCipher(c)) {\n return;\n }\n if (this.actionPromise != null) {\n return;\n }\n const permanent = c.isDeleted;\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(permanent ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t(permanent ? 'permanentlyDeleteItem' : 'deleteItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.deleteCipher(c.id, permanent);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t(permanent ? 'permanentlyDeletedItem'\n : 'deletedItem'));\n this.refresh();\n } catch { }\n this.actionPromise = null;\n }\n\n async restore(c: CipherView): Promise {\n if (this.actionPromise != null || !c.isDeleted) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'),\n this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.cipherService.restoreWithServer(c.id);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItem'));\n this.refresh();\n } catch { }\n this.actionPromise = null;\n }\n\n async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (this.passwordRepromptService.protectedFields().includes(aType) && !await this.repromptCipher(cipher)) {\n return;\n }\n\n if (value == null || aType === 'TOTP' && !this.displayTotpCopyButton(cipher)) {\n return;\n } else if (value === cipher.login.totp) {\n value = await this.totpService.getCode(value);\n }\n\n if (!cipher.viewPassword) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.toasterService.popAsync('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (typeI18nKey === 'password' || typeI18nKey === 'verificationCodeTotp') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id);\n }\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount = select && this.ciphers.length > MaxCheckedCount\n ? MaxCheckedCount\n : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n getSelected(): CipherView[] {\n if (this.ciphers == null) {\n return [];\n }\n return this.ciphers.filter(c => !!(c as any).checked);\n }\n\n getSelectedIds(): string[] {\n return this.getSelected().map(c => c.id);\n }\n\n displayTotpCopyButton(cipher: CipherView) {\n return (cipher?.login?.hasTotp ?? false) &&\n (cipher.organizationUseTotp || this.userHasPremiumAccess);\n }\n\n async selectCipher(cipher: CipherView) {\n if (await this.repromptCipher(cipher)) {\n super.selectCipher(cipher);\n }\n }\n\n protected deleteCipher(id: string, permanent: boolean) {\n return permanent ? this.cipherService.deleteWithServer(id) : this.cipherService.softDeleteWithServer(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return c.hasOldAttachments && c.organizationId == null;\n }\n\n protected async repromptCipher(c: CipherView) {\n return c.reprompt === CipherRepromptType.None || await this.passwordRepromptService.showPasswordPrompt();\n }\n}\n","
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}} {{'attachmentsNeedFix' | i18n}}
{{c.subTitle}}
{{'loading' | i18n}}

{{'noItemsInList' | i18n}}

","export enum Permissions {\n AccessBusinessPortal,\n AccessEventLogs,\n AccessImportExport,\n AccessReports,\n ManageAllCollections,\n ManageAssignedCollections,\n ManageGroups,\n ManageOrganization,\n ManagePolicies,\n ManageProvider,\n ManageUsers,\n ManageUsersPassword,\n}\n","export enum ProviderUserType {\n ProviderAdmin = 0,\n ServiceUser = 1,\n}\n","export enum EncryptionType {\n AesCbc256_B64 = 0,\n AesCbc128_HmacSha256_B64 = 1,\n AesCbc256_HmacSha256_B64 = 2,\n Rsa2048_OaepSha256_B64 = 3,\n Rsa2048_OaepSha1_B64 = 4,\n Rsa2048_OaepSha256_HmacSha256_B64 = 5,\n Rsa2048_OaepSha1_HmacSha256_B64 = 6,\n}\n","export class KeysRequest {\n publicKey: string;\n encryptedPrivateKey: string;\n\n constructor(publicKey: string, encryptedPrivateKey: string) {\n this.publicKey = publicKey;\n this.encryptedPrivateKey = encryptedPrivateKey;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SelectionReadOnlyResponse extends BaseResponse {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.readOnly = this.getResponseProperty('ReadOnly');\n this.hidePasswords = this.getResponseProperty('HidePasswords');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileOrganizationResponse } from './profileOrganizationResponse';\nimport { ProfileProviderOrganizationResponse } from './profileProviderOrganizationResponse';\nimport { ProfileProviderResponse } from './profileProviderResponse';\n\nexport class ProfileResponse extends BaseResponse {\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n masterPasswordHint: string;\n premium: boolean;\n culture: string;\n twoFactorEnabled: boolean;\n key: string;\n privateKey: string;\n securityStamp: string;\n forcePasswordReset: boolean;\n organizations: ProfileOrganizationResponse[] = [];\n providers: ProfileProviderResponse[] = [];\n providerOrganizations: ProfileProviderOrganizationResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.emailVerified = this.getResponseProperty('EmailVerified');\n this.masterPasswordHint = this.getResponseProperty('MasterPasswordHint');\n this.premium = this.getResponseProperty('Premium');\n this.culture = this.getResponseProperty('Culture');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n this.key = this.getResponseProperty('Key');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.securityStamp = this.getResponseProperty('SecurityStamp');\n this.forcePasswordReset = this.getResponseProperty('ForcePasswordReset') ?? false;\n\n const organizations = this.getResponseProperty('Organizations');\n if (organizations != null) {\n this.organizations = organizations.map((o: any) => new ProfileOrganizationResponse(o));\n }\n const providers = this.getResponseProperty('Providers');\n if (providers != null) {\n this.providers = providers.map((o: any) => new ProfileProviderResponse(o));\n }\n const providerOrganizations = this.getResponseProperty('ProviderOrganizations');\n if (providerOrganizations != null) {\n this.providerOrganizations = providerOrganizations.map((o: any) => new ProfileProviderOrganizationResponse(o));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyResponse extends BaseResponse {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.type = this.getResponseProperty('Type');\n this.data = this.getResponseProperty('Data');\n this.enabled = this.getResponseProperty('Enabled');\n }\n}\n","import {\n Directive,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Directive()\nexport abstract class BaseAcceptComponent implements OnInit {\n loading = true;\n authed = false;\n email: string;\n actionPromise: Promise;\n\n protected requiredParameters: string[] = [];\n protected failedShortMessage = 'inviteAcceptFailedShort';\n protected failedMessage = 'inviteAcceptFailed';\n\n constructor(protected router: Router, protected toasterService: ToasterService,\n protected i18nService: I18nService, protected route: ActivatedRoute,\n protected userService: UserService, protected stateService: StateService) { }\n\n abstract authedHandler(qParams: any): Promise;\n abstract unauthedHandler(qParams: any): Promise;\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n await this.stateService.remove('loginRedirect');\n\n let error = this.requiredParameters.some(e => qParams?.[e] == null || qParams[e] === '');\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.userService.isAuthenticated();\n\n if (this.authed) {\n try {\n await this.authedHandler(qParams);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n await this.stateService.save('loginRedirect', {\n route: this.getRedirectRoute(),\n qParams: qParams,\n });\n\n this.email = qParams.email;\n await this.unauthedHandler(qParams);\n }\n }\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: errorMessage != null ? this.i18nService.t(this.failedShortMessage, errorMessage) :\n this.i18nService.t(this.failedMessage),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n }\n\n this.loading = false;\n });\n }\n\n getRedirectRoute() {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n return urlTree.toString();\n }\n}\n","export enum DeviceType {\n Android = 0,\n iOS = 1,\n ChromeExtension = 2,\n FirefoxExtension = 3,\n OperaExtension = 4,\n EdgeExtension = 5,\n WindowsDesktop = 6,\n MacOsDesktop = 7,\n LinuxDesktop = 8,\n ChromeBrowser = 9,\n FirefoxBrowser = 10,\n OperaBrowser = 11,\n EdgeBrowser = 12,\n IEBrowser = 13,\n UnknownBrowser = 14,\n AndroidAmazon = 15,\n UWP = 16,\n SafariBrowser = 17,\n VivaldiBrowser = 18,\n VivaldiExtension = 19,\n SafariExtension = 20,\n}\n","// Using index.ts is deprecated, please do not extend\nexport { ApiService } from './api.service';\nexport { AppIdService } from './appId.service';\nexport { AuditService } from './audit.service';\nexport { AuthService } from './auth.service';\nexport { CipherService } from './cipher.service';\nexport { CollectionService } from './collection.service';\nexport { CryptoService } from './crypto.service';\nexport { EnvironmentService } from './environment.service';\nexport { FolderService } from './folder.service';\nexport { I18nService } from './i18n.service';\nexport { LogService } from './log.service';\nexport { MessagingService } from './messaging.service';\nexport { PasswordGenerationService } from './passwordGeneration.service';\nexport { PlatformUtilsService } from './platformUtils.service';\nexport { SearchService } from './search.service';\nexport { SettingsService } from './settings.service';\nexport { StorageService } from './storage.service';\nexport { StateService } from './state.service';\nexport { SyncService } from './sync.service';\nexport { TokenService } from './token.service';\nexport { TotpService } from './totp.service';\nexport { UserService } from './user.service';\nexport { VaultTimeoutService } from './vaultTimeout.service';\n","export abstract class SettingsService {\n clearCache: () => void;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId: string) => Promise;\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { EventService } from '../../services/event.service';\n\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\n\n@Component({\n selector: 'app-entity-events',\n templateUrl: 'entity-events.component.html',\n})\nexport class EntityEventsComponent implements OnInit {\n @Input() name: string;\n @Input() entity: 'user' | 'cipher';\n @Input() entityId: string;\n @Input() organizationId: string;\n @Input() providerId: string;\n @Input() showUser = false;\n\n loading = true;\n loaded = false;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private eventService: EventService, private toasterService: ToasterService,\n private userNamePipe: UserNamePipe) { }\n\n async ngOnInit() {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n }\n\n async load() {\n if (this.showUser) {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n }\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n let promise: Promise;\n if (this.entity === 'user' && this.providerId) {\n promise = this.apiService.getEventsProviderUser(this.providerId, this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n } else if (this.entity === 'user') {\n promise = this.apiService.getEventsOrganizationUser(this.organizationId, this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n } else {\n promise = this.apiService.getEventsCipher(this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n }\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch { }\n\n this.continuationToken = response.continuationToken;\n const events = await Promise.all(response.data.map(async r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = this.showUser && userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.showUser ? this.i18nService.t('unknown') : null,\n userEmail: user != null ? user.email : this.showUser ? '' : null,\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n }));\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","

{{'eventLogs' | i18n}} {{name}}

{{'loading' | i18n}}
-

{{'noEventsInList' | i18n}}
{{'timestamp' | i18n}} {{'device' | i18n}} {{'user' | i18n}} {{'event' | i18n}}
{{e.date | date:'medium'}} {{e.appName}}, {{e.ip}} {{e.userName}}
","export class OrganizationUserResetPasswordEnrollmentRequest {\n resetPasswordKey: string;\n}\n","export enum HashPurpose {\n ServerAuthorization = 1,\n LocalAuthorization = 2,\n}\n","import { PolicyResponse } from '../response/policyResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyData {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: PolicyResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.type = response.type;\n this.data = response.data;\n this.enabled = response.enabled;\n }\n}\n","import { Directive, OnInit } from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\n@Directive()\nexport class ChangePasswordComponent implements OnInit {\n masterPassword: string;\n masterPasswordRetype: string;\n formPromise: Promise;\n masterPasswordScore: number;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n protected email: string;\n protected kdf: KdfType;\n protected kdfIterations: number;\n\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected i18nService: I18nService, protected cryptoService: CryptoService,\n protected messagingService: MessagingService, protected userService: UserService,\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.email = await this.userService.getEmail();\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n if (!await this.setupSubmitActions()) {\n return;\n }\n\n const email = await this.userService.getEmail();\n if (this.kdf == null) {\n this.kdf = await this.userService.getKdf();\n }\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n const key = await this.cryptoService.makeKey(this.masterPassword, email.trim().toLowerCase(),\n this.kdf, this.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n let encKey: [SymmetricCryptoKey, EncString] = null;\n const existingEncKey = await this.cryptoService.getEncKey();\n if (existingEncKey == null) {\n encKey = await this.cryptoService.makeEncKey(key);\n } else {\n encKey = await this.cryptoService.remakeEncKey(key);\n }\n\n await this.performSubmitActions(masterPasswordHash, key, encKey);\n }\n\n async setupSubmitActions(): Promise {\n // Override in sub-class\n // Can be used for additional validation and/or other processes the should occur before changing passwords\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n // Override in sub-class\n }\n\n async strongPassword(): Promise {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return false;\n }\n if (this.masterPassword !== this.masterPasswordRetype) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return false;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return false;\n }\n\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return false;\n }\n }\n\n return true;\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n return userInput;\n }\n}\n","import { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\nimport { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { DeviceRequest } from '../models/request/deviceRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\n\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { AuthService as AuthServiceAbstraction } from '../abstractions/auth.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { LogService } from '../abstractions/log.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nexport const TwoFactorProviders = {\n [TwoFactorProviderType.Authenticator]: {\n type: TwoFactorProviderType.Authenticator,\n name: null as string,\n description: null as string,\n priority: 1,\n sort: 1,\n premium: false,\n },\n [TwoFactorProviderType.Yubikey]: {\n type: TwoFactorProviderType.Yubikey,\n name: null as string,\n description: null as string,\n priority: 3,\n sort: 2,\n premium: true,\n },\n [TwoFactorProviderType.Duo]: {\n type: TwoFactorProviderType.Duo,\n name: 'Duo',\n description: null as string,\n priority: 2,\n sort: 3,\n premium: true,\n },\n [TwoFactorProviderType.OrganizationDuo]: {\n type: TwoFactorProviderType.OrganizationDuo,\n name: 'Duo (Organization)',\n description: null as string,\n priority: 10,\n sort: 4,\n premium: false,\n },\n [TwoFactorProviderType.Email]: {\n type: TwoFactorProviderType.Email,\n name: null as string,\n description: null as string,\n priority: 0,\n sort: 6,\n premium: false,\n },\n [TwoFactorProviderType.WebAuthn]: {\n type: TwoFactorProviderType.WebAuthn,\n name: null as string,\n description: null as string,\n priority: 4,\n sort: 5,\n premium: true,\n },\n};\n\nexport class AuthService implements AuthServiceAbstraction {\n email: string;\n masterPasswordHash: string;\n localMasterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType = null;\n captchaToken: string;\n\n private key: SymmetricCryptoKey;\n\n constructor(private cryptoService: CryptoService, protected apiService: ApiService,\n private userService: UserService, protected tokenService: TokenService,\n protected appIdService: AppIdService, private i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, private messagingService: MessagingService,\n private vaultTimeoutService: VaultTimeoutService, private logService: LogService,\n private setCryptoKeys = true) {\n }\n\n init() {\n TwoFactorProviders[TwoFactorProviderType.Email].name = this.i18nService.t('emailTitle');\n TwoFactorProviders[TwoFactorProviderType.Email].description = this.i18nService.t('emailDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Authenticator].name = this.i18nService.t('authenticatorAppTitle');\n TwoFactorProviders[TwoFactorProviderType.Authenticator].description =\n this.i18nService.t('authenticatorAppDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Duo].description = this.i18nService.t('duoDesc');\n\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].name =\n 'Duo (' + this.i18nService.t('organization') + ')';\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].description =\n this.i18nService.t('duoOrganizationDesc');\n\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].name = this.i18nService.t('webAuthnTitle');\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].description = this.i18nService.t('webAuthnDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Yubikey].name = this.i18nService.t('yubiKeyTitle');\n TwoFactorProviders[TwoFactorProviderType.Yubikey].description = this.i18nService.t('yubiKeyDesc');\n }\n\n async logIn(email: string, masterPassword: string, captchaToken?: string): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n const localHashedPassword = await this.cryptoService.hashPassword(masterPassword, key,\n HashPurpose.LocalAuthorization);\n return await this.logInHelper(email, hashedPassword, localHashedPassword, null, null, null, null, null,\n key, null, null, null, captchaToken);\n }\n\n async logInSso(code: string, codeVerifier: string, redirectUrl: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, code, codeVerifier, redirectUrl, null, null,\n null, null, null, null);\n }\n\n async logInApiKey(clientId: string, clientSecret: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, null, clientId, clientSecret,\n null, null, null, null);\n }\n\n async logInTwoFactor(twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean): Promise {\n return await this.logInHelper(this.email, this.masterPasswordHash, this.localMasterPasswordHash, this.code,\n this.codeVerifier, this.ssoRedirectUrl, this.clientId, this.clientSecret, this.key, twoFactorProvider,\n twoFactorToken, remember, this.captchaToken);\n }\n\n async logInComplete(email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean, captchaToken?: string): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n const localHashedPassword = await this.cryptoService.hashPassword(masterPassword, key,\n HashPurpose.LocalAuthorization);\n return await this.logInHelper(email, hashedPassword, localHashedPassword, null, null, null, null, null, key,\n twoFactorProvider, twoFactorToken, remember, captchaToken);\n }\n\n async logInSsoComplete(code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, code, codeVerifier, redirectUrl, null,\n null, null, twoFactorProvider, twoFactorToken, remember);\n }\n\n async logInApiKeyComplete(clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, null, clientId, clientSecret, null,\n twoFactorProvider, twoFactorToken, remember);\n }\n\n logOut(callback: Function) {\n callback();\n this.messagingService.send('loggedOut');\n }\n\n getSupportedTwoFactorProviders(win: Window): any[] {\n const providers: any[] = [];\n if (this.twoFactorProvidersData == null) {\n return providers;\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.OrganizationDuo) &&\n this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.OrganizationDuo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Authenticator)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Authenticator]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Yubikey)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Yubikey]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Duo) && this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Duo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.WebAuthn) && this.platformUtilsService.supportsWebAuthn(win)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.WebAuthn]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Email)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Email]);\n }\n\n return providers;\n }\n\n getDefaultTwoFactorProvider(webAuthnSupported: boolean): TwoFactorProviderType {\n if (this.twoFactorProvidersData == null) {\n return null;\n }\n\n if (this.selectedTwoFactorProviderType != null &&\n this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType)) {\n return this.selectedTwoFactorProviderType;\n }\n\n let providerType: TwoFactorProviderType = null;\n let providerPriority = -1;\n this.twoFactorProvidersData.forEach((value, type) => {\n const provider = (TwoFactorProviders as any)[type];\n if (provider != null && provider.priority > providerPriority) {\n if (type === TwoFactorProviderType.WebAuthn && !webAuthnSupported) {\n return;\n }\n\n providerType = type;\n providerPriority = provider.priority;\n }\n });\n\n return providerType;\n }\n\n async makePreloginKey(masterPassword: string, email: string): Promise {\n email = email.trim().toLowerCase();\n let kdf: KdfType = null;\n let kdfIterations: number = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n kdf = preloginResponse.kdf;\n kdfIterations = preloginResponse.kdfIterations;\n }\n } catch (e) {\n if (e == null || e.statusCode !== 404) {\n throw e;\n }\n }\n return this.cryptoService.makeKey(masterPassword, email, kdf, kdfIterations);\n }\n\n authingWithApiKey(): boolean {\n return this.clientId != null && this.clientSecret != null;\n }\n\n authingWithSso(): boolean {\n return this.code != null && this.codeVerifier != null && this.ssoRedirectUrl != null;\n }\n\n authingWithPassword(): boolean {\n return this.email != null && this.masterPasswordHash != null;\n }\n\n private async logInHelper(email: string, hashedPassword: string, localHashedPassword: string, code: string,\n codeVerifier: string, redirectUrl: string, clientId: string, clientSecret: string, key: SymmetricCryptoKey,\n twoFactorProvider?: TwoFactorProviderType, twoFactorToken?: string, remember?: boolean, captchaToken?: string): Promise {\n const storedTwoFactorToken = await this.tokenService.getTwoFactorToken(email);\n const appId = await this.appIdService.getAppId();\n const deviceRequest = new DeviceRequest(appId, this.platformUtilsService);\n\n let emailPassword: string[] = [];\n let codeCodeVerifier: string[] = [];\n let clientIdClientSecret: [string, string] = [null, null];\n\n if (email != null && hashedPassword != null) {\n emailPassword = [email, hashedPassword];\n } else {\n emailPassword = null;\n }\n if (code != null && codeVerifier != null && redirectUrl != null) {\n codeCodeVerifier = [code, codeVerifier, redirectUrl];\n } else {\n codeCodeVerifier = null;\n }\n if (clientId != null && clientSecret != null) {\n clientIdClientSecret = [clientId, clientSecret];\n } else {\n clientIdClientSecret = null;\n }\n\n let request: TokenRequest;\n if (twoFactorToken != null && twoFactorProvider != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, twoFactorProvider,\n twoFactorToken, remember, captchaToken, deviceRequest);\n } else if (storedTwoFactorToken != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret,\n TwoFactorProviderType.Remember, storedTwoFactorToken, false, captchaToken, deviceRequest);\n } else {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, null,\n null, false, captchaToken, deviceRequest);\n }\n\n const response = await this.apiService.postIdentityToken(request);\n\n this.clearState();\n const result = new AuthResult();\n result.captchaSiteKey = (response as any).siteKey;\n if (!!result.captchaSiteKey) {\n return result;\n }\n result.twoFactor = !!(response as any).twoFactorProviders2;\n\n if (result.twoFactor) {\n // two factor required\n this.email = email;\n this.masterPasswordHash = hashedPassword;\n this.localMasterPasswordHash = localHashedPassword;\n this.code = code;\n this.codeVerifier = codeVerifier;\n this.ssoRedirectUrl = redirectUrl;\n this.clientId = clientId;\n this.clientSecret = clientSecret;\n this.key = this.setCryptoKeys ? key : null;\n const twoFactorResponse = response as IdentityTwoFactorResponse;\n this.twoFactorProvidersData = twoFactorResponse.twoFactorProviders2;\n result.twoFactorProviders = twoFactorResponse.twoFactorProviders2;\n this.captchaToken = twoFactorResponse.captchaToken;\n return result;\n }\n\n const tokenResponse = response as IdentityTokenResponse;\n result.resetMasterPassword = tokenResponse.resetMasterPassword;\n if (tokenResponse.twoFactorToken != null) {\n await this.tokenService.setTwoFactorToken(tokenResponse.twoFactorToken, email);\n }\n\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken, clientIdClientSecret);\n await this.userService.setInformation(this.tokenService.getUserId(), this.tokenService.getEmail(),\n tokenResponse.kdf, tokenResponse.kdfIterations);\n if (this.setCryptoKeys) {\n if (key != null) {\n await this.cryptoService.setKey(key);\n }\n if (localHashedPassword != null) {\n await this.cryptoService.setKeyHash(localHashedPassword);\n }\n\n // Skip this step during SSO new user flow. No key is returned from server.\n if (code == null || tokenResponse.key != null) {\n await this.cryptoService.setEncKey(tokenResponse.key);\n\n // User doesn't have a key pair yet (old account), let's generate one for them\n if (tokenResponse.privateKey == null) {\n try {\n const keyPair = await this.cryptoService.makeKeyPair();\n await this.apiService.postAccountKeys(new KeysRequest(keyPair[0], keyPair[1].encryptedString));\n tokenResponse.privateKey = keyPair[1].encryptedString;\n } catch (e) {\n // tslint:disable-next-line\n this.logService.error(e);\n }\n }\n\n await this.cryptoService.setEncPrivateKey(tokenResponse.privateKey);\n }\n }\n\n if (this.vaultTimeoutService != null) {\n this.vaultTimeoutService.biometricLocked = false;\n }\n this.messagingService.send('loggedIn');\n return result;\n }\n\n private clearState(): void {\n this.key = null;\n this.email = null;\n this.masterPasswordHash = null;\n this.localMasterPasswordHash = null;\n this.code = null;\n this.codeVerifier = null;\n this.ssoRedirectUrl = null;\n this.clientId = null;\n this.clientSecret = null;\n this.twoFactorProvidersData = null;\n this.selectedTwoFactorProviderType = null;\n }\n}\n","export class SelectionReadOnlyRequest {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(id: string, readOnly: boolean, hidePasswords: boolean) {\n this.id = id;\n this.readOnly = readOnly;\n this.hidePasswords = hidePasswords;\n }\n}\n","export enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\n Custom = 4,\n}\n","import { CardData } from '../data/cardData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { CardView } from '../view/cardView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Card extends Domain {\n cardholderName: EncString;\n brand: EncString;\n number: EncString;\n expMonth: EncString;\n expYear: EncString;\n code: EncString;\n\n constructor(obj?: CardData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new CardView(this), {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, orgId, encKey);\n }\n\n toCardData(): CardData {\n const c = new CardData();\n this.buildDataModel(this, c, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n });\n return c;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldData } from '../data/fieldData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { FieldView } from '../view/fieldView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Field extends Domain {\n name: EncString;\n value: EncString;\n type: FieldType;\n\n constructor(obj?: FieldData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n this.buildDomainModel(this, obj, {\n name: null,\n value: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new FieldView(this), {\n name: null,\n value: null,\n }, orgId, encKey);\n }\n\n toFieldData(): FieldData {\n const f = new FieldData();\n this.buildDataModel(this, f, {\n name: null,\n value: null,\n type: null,\n }, ['type']);\n return f;\n }\n}\n","import { IdentityData } from '../data/identityData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { IdentityView } from '../view/identityView';\n\nexport class Identity extends Domain {\n title: EncString;\n firstName: EncString;\n middleName: EncString;\n lastName: EncString;\n address1: EncString;\n address2: EncString;\n address3: EncString;\n city: EncString;\n state: EncString;\n postalCode: EncString;\n country: EncString;\n company: EncString;\n email: EncString;\n phone: EncString;\n ssn: EncString;\n username: EncString;\n passportNumber: EncString;\n licenseNumber: EncString;\n\n constructor(obj?: IdentityData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new IdentityView(this), {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, orgId, encKey);\n }\n\n toIdentityData(): IdentityData {\n const i = new IdentityData();\n this.buildDataModel(this, i, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n });\n return i;\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginData } from '../data/loginData';\n\nimport { LoginView } from '../view/loginView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Login extends Domain {\n uris: LoginUri[];\n username: EncString;\n password: EncString;\n passwordRevisionDate?: Date;\n totp: EncString;\n autofillOnPageLoad: boolean;\n\n constructor(obj?: LoginData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.passwordRevisionDate = obj.passwordRevisionDate != null ? new Date(obj.passwordRevisionDate) : null;\n this.autofillOnPageLoad = obj.autofillOnPageLoad;\n this.buildDomainModel(this, obj, {\n username: null,\n password: null,\n totp: null,\n }, alreadyEncrypted, []);\n\n if (obj.uris) {\n this.uris = [];\n obj.uris.forEach(u => {\n this.uris.push(new LoginUri(u, alreadyEncrypted));\n });\n }\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new LoginView(this), {\n username: null,\n password: null,\n totp: null,\n }, orgId, encKey);\n\n if (this.uris != null) {\n view.uris = [];\n for (let i = 0; i < this.uris.length; i++) {\n const uri = await this.uris[i].decrypt(orgId, encKey);\n view.uris.push(uri);\n }\n }\n\n return view;\n }\n\n toLoginData(): LoginData {\n const l = new LoginData();\n l.passwordRevisionDate = this.passwordRevisionDate != null ? this.passwordRevisionDate.toISOString() : null;\n l.autofillOnPageLoad = this.autofillOnPageLoad;\n this.buildDataModel(this, l, {\n username: null,\n password: null,\n totp: null,\n });\n\n if (this.uris != null && this.uris.length > 0) {\n l.uris = [];\n this.uris.forEach(u => {\n l.uris.push(u.toLoginUriData());\n });\n }\n\n return l;\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriData } from '../data/loginUriData';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class LoginUri extends Domain {\n uri: EncString;\n match: UriMatchType;\n\n constructor(obj?: LoginUriData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.match = obj.match;\n this.buildDomainModel(this, obj, {\n uri: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new LoginUriView(this), {\n uri: null,\n }, orgId, encKey);\n }\n\n toLoginUriData(): LoginUriData {\n const u = new LoginUriData();\n this.buildDataModel(this, u, {\n uri: null,\n }, ['match']);\n return u;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteData } from '../data/secureNoteData';\n\nimport Domain from './domainBase';\n\nimport { SecureNoteView } from '../view/secureNoteView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SecureNote extends Domain {\n type: SecureNoteType;\n\n constructor(obj?: SecureNoteData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return Promise.resolve(new SecureNoteView(this));\n }\n\n toSecureNoteData(): SecureNoteData {\n const n = new SecureNoteData();\n n.type = this.type;\n return n;\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n Renderer2,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\n// ref: https://juristr.com/blog/2018/02/ng-true-value-directive/\n@Directive({\n selector: 'input[type=checkbox][appTrueFalseValue]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrueFalseValueDirective),\n multi: true,\n },\n ],\n})\nexport class TrueFalseValueDirective implements ControlValueAccessor {\n @Input() trueValue = true;\n @Input() falseValue = false;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('change', ['$event'])\n onHostChange(ev: any) {\n this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);\n }\n\n writeValue(obj: any): void {\n if (obj === this.trueValue) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', true);\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);\n }\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void { /* nothing */ }\n\n setDisabledState?(isDisabled: boolean): void { /* nothing */ }\n\n private propagateChange = (_: any) => { /* nothing */ };\n}\n","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from 'jslib-angular/components/groupings.component';\n\n@Component({\n selector: 'app-vault-groupings',\n templateUrl: 'groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n @Output() onSearchTextChanged = new EventEmitter();\n\n searchText: string = '';\n searchPlaceholder: string = null;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n searchTextChanged() {\n this.onSearchTextChanged.emit(this.searchText);\n }\n}\n"," ","import { OrganizationData } from '../data/organizationData';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\n\nexport class Organization {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n\n constructor(obj?: OrganizationData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.usePolicies = obj.usePolicies;\n this.useGroups = obj.useGroups;\n this.useDirectory = obj.useDirectory;\n this.useEvents = obj.useEvents;\n this.useTotp = obj.useTotp;\n this.use2fa = obj.use2fa;\n this.useApi = obj.useApi;\n this.useBusinessPortal = obj.useBusinessPortal;\n this.useSso = obj.useSso;\n this.useResetPassword = obj.useResetPassword;\n this.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\n this.ssoBound = obj.ssoBound;\n this.identifier = obj.identifier;\n this.permissions = obj.permissions;\n this.resetPasswordEnrolled = obj.resetPasswordEnrolled;\n this.userId = obj.userId;\n this.hasPublicAndPrivateKeys = obj.hasPublicAndPrivateKeys;\n this.providerId = obj.providerId;\n this.providerName = obj.providerName;\n this.isProviderUser = obj.isProviderUser;\n }\n\n get canAccess() {\n if (this.type === OrganizationUserType.Owner) {\n return true;\n }\n return this.enabled && this.status === OrganizationUserStatusType.Confirmed;\n }\n\n get isManager() {\n return this.type === OrganizationUserType.Manager || this.type === OrganizationUserType.Owner ||\n this.type === OrganizationUserType.Admin;\n }\n\n get isAdmin() {\n return this.type === OrganizationUserType.Owner || this.type === OrganizationUserType.Admin;\n }\n\n get isOwner() {\n return this.type === OrganizationUserType.Owner || this.isProviderUser;\n }\n\n get canAccessBusinessPortal() {\n return this.isAdmin || this.permissions.accessBusinessPortal;\n }\n\n get canAccessEventLogs() {\n return this.isAdmin || this.permissions.accessEventLogs;\n }\n\n get canAccessImportExport() {\n return this.isAdmin || this.permissions.accessImportExport;\n }\n\n get canAccessReports() {\n return this.isAdmin || this.permissions.accessReports;\n }\n\n get canManageAllCollections() {\n return this.isAdmin || this.permissions.manageAllCollections;\n }\n\n get canManageAssignedCollections() {\n return this.isManager || this.permissions.manageAssignedCollections;\n }\n\n get canManageGroups() {\n return this.isAdmin || this.permissions.manageGroups;\n }\n\n get canManageSso() {\n return this.isAdmin || this.permissions.manageSso;\n }\n\n get canManagePolicies() {\n return this.isAdmin || this.permissions.managePolicies;\n }\n\n get canManageUsers() {\n return this.isAdmin || this.permissions.manageUsers;\n }\n\n get canManageUsersPassword() {\n return this.isAdmin || this.permissions.manageResetPassword;\n }\n\n get isExemptFromPolicies() {\n return this.canManagePolicies;\n }\n}\n","import { View } from './view';\n\nimport { SendFile } from '../domain/sendFile';\n\nexport class SendFileView implements View {\n id: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n\n constructor(f?: SendFile) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.size = f.size;\n this.sizeName = f.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch { }\n return 0;\n }\n}\n","import { View } from './view';\n\nimport { SendText } from '../domain/sendText';\n\nexport class SendTextView implements View {\n text: string = null;\n hidden: boolean;\n\n constructor(t?: SendText) {\n if (!t) {\n return;\n }\n\n this.hidden = t.hidden;\n }\n\n get maskedText(): string {\n return this.text != null ? '••••••••' : null;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\n@Component({\n selector: 'app-organizations',\n templateUrl: 'organizations.component.html',\n})\nexport class OrganizationsComponent implements OnInit {\n @Input() vault = false;\n\n organizations: Organization[];\n policies: Policy[];\n loaded: boolean = false;\n actionPromise: Promise;\n\n constructor(private userService: UserService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private apiService: ApiService,\n private toasterService: ToasterService, private syncService: SyncService,\n private cryptoService: CryptoService, private policyService: PolicyService) { }\n\n async ngOnInit() {\n if (!this.vault) {\n await this.syncService.fullSync(true);\n await this.load();\n }\n }\n\n async load() {\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.organizations = orgs;\n this.policies = await this.policyService.getAll(PolicyType.ResetPassword);\n this.loaded = true;\n }\n\n allowEnrollmentChanges(org: Organization): boolean {\n if (org.usePolicies && org.useResetPassword && org.hasPublicAndPrivateKeys) {\n const policy = this.policies.find(p => p.organizationId === org.id);\n if (policy != null && policy.enabled) {\n return org.resetPasswordEnrolled && policy.data.autoEnrollEnabled ? false : true;\n }\n }\n\n return false;\n }\n\n showEnrolledStatus(org: Organization): boolean {\n return org.useResetPassword && org.resetPasswordEnrolled && this.policies.some(p => p.organizationId === org.id && p.enabled);\n }\n\n async unlinkSso(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n 'Are you sure you want to unlink SSO for this organization?', org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.deleteSsoUser(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.toasterService.popAsync('success', null, 'Unlinked SSO');\n await this.load();\n } catch { }\n }\n\n async leave(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('leaveOrganizationConfirmation'), org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('leftOrganization'));\n await this.load();\n } catch { }\n }\n\n async toggleResetPasswordEnrollment(org: Organization) {\n // Set variables\n let keyString: string = null;\n let toastStringRef = 'withdrawPasswordResetSuccess';\n\n // Enrolling\n if (!org.resetPasswordEnrolled) {\n // Alert user about enrollment\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('resetPasswordEnrollmentWarning'), null,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n // Retrieve Public Key\n this.actionPromise = this.apiService.getOrganizationKeys(org.id)\n .then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n keyString = encryptedKey.encryptedString;\n toastStringRef = 'enrollPasswordResetSuccess';\n\n // Create request and execute enrollment\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n return this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n })\n .then(() => {\n return this.syncService.fullSync(true);\n });\n } else {\n // Withdrawal\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n this.actionPromise = this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request)\n .then(() => {\n return this.syncService.fullSync(true);\n });\n }\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t(toastStringRef));\n await this.load();\n } catch { }\n }\n}\n","

{{'loading' | i18n}}

{{'noOrganizationsList' | i18n}}

{{'newOrganization' | i18n}}

{{'organizations' | i18n}} {{'loading' | i18n}}

{{'newOrganization' | i18n}}
{{'loading' | i18n}}

{{'noOrganizationsList' | i18n}}

{{'newOrganization' | i18n}}
{{o.name}} {{'organizationIsDisabled' | i18n}} {{'enrolledPasswordReset' | i18n}}
","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n RouterStateSnapshot,\n} from '@angular/router';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class AuthGuardService implements CanActivate {\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router, private messagingService: MessagingService) { }\n\n async canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {\n const isAuthed = await this.userService.isAuthenticated();\n if (!isAuthed) {\n this.messagingService.send('authBlocked');\n return false;\n }\n\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n if (routerState != null) {\n this.messagingService.send('lockedUrl', { url: routerState.url });\n }\n this.router.navigate(['lock'], { queryParams: { promptBiometric: true }});\n return false;\n }\n\n return true;\n }\n}\n","export enum ProductType {\n Free = 0,\n Families = 1,\n Teams = 2,\n Enterprise = 3,\n}\n","import { KeysRequest } from './keysRequest';\n\nexport class OrganizationKeysRequest extends KeysRequest {\n constructor(publicKey: string, encryptedPrivateKey: string) {\n super(publicKey, encryptedPrivateKey);\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class AttachmentResponse extends BaseResponse {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class CollectionResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class CollectionDetailsResponse extends CollectionResponse {\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.readOnly = this.getResponseProperty('ReadOnly') || false;\n }\n}\n\nexport class CollectionGroupDetailsResponse extends CollectionResponse {\n groups: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const groups = this.getResponseProperty('Groups');\n if (groups != null) {\n this.groups = groups.map((g: any) => new SelectionReadOnlyResponse(g));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { GlobalDomainResponse } from './globalDomainResponse';\n\nexport class DomainsResponse extends BaseResponse {\n equivalentDomains: string[][];\n globalEquivalentDomains: GlobalDomainResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.equivalentDomains = this.getResponseProperty('EquivalentDomains');\n const globalEquivalentDomains = this.getResponseProperty('GlobalEquivalentDomains');\n if (globalEquivalentDomains != null) {\n this.globalEquivalentDomains = globalEquivalentDomains.map((d: any) => new GlobalDomainResponse(d));\n } else {\n this.globalEquivalentDomains = [];\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class FolderResponse extends BaseResponse {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendResponse extends BaseResponse {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileApi;\n text: SendTextApi;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disable: boolean;\n hideEmail: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.accessId = this.getResponseProperty('AccessId');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.key = this.getResponseProperty('Key');\n this.maxAccessCount = this.getResponseProperty('MaxAccessCount');\n this.accessCount = this.getResponseProperty('AccessCount');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.deletionDate = this.getResponseProperty('DeletionDate');\n this.password = this.getResponseProperty('Password');\n this.disable = this.getResponseProperty('Disabled') || false;\n this.hideEmail = this.getResponseProperty('HideEmail') || false;\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendFileApi extends BaseResponse {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.id = this.getResponseProperty('Id');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendTextApi extends BaseResponse {\n text: string;\n hidden: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.text = this.getResponseProperty('Text');\n this.hidden = this.getResponseProperty('Hidden') || false;\n }\n}\n","export enum ProviderUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","export class ProviderUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { Component } from '@angular/core';\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { ProviderUserStatusType } from 'jslib-common/enums/providerUserStatusType';\n\nexport interface BulkUserDetails {\n id: string;\n name: string;\n email: string;\n status: OrganizationUserStatusType | ProviderUserStatusType;\n}\n\ntype BulkStatusEntry = {\n user: BulkUserDetails,\n error: boolean,\n message: string,\n};\n\n@Component({\n selector: 'app-bulk-status',\n templateUrl: 'bulk-status.component.html',\n})\nexport class BulkStatusComponent {\n\n users: BulkStatusEntry[];\n loading: boolean = false;\n\n}\n","

{{'bulkConfirmStatus' | i18n}}

{{'loading' | i18n}}
{{'user' | i18n}} {{'status' | i18n}}
{{item.user.email}} {{item.user.name}} {{item.message}} {{item.message}}
","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { OrganizationUserBulkConfirmRequest } from 'jslib-common/models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\n\nimport { Utils } from 'jslib-common/misc/utils';\nimport { BulkUserDetails } from './bulk-status.component';\n\n@Component({\n selector: 'app-bulk-confirm',\n templateUrl: 'bulk-confirm.component.html',\n})\nexport class BulkConfirmComponent implements OnInit {\n\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n excludedUsers: BulkUserDetails[];\n filteredUsers: BulkUserDetails[];\n publicKeys: Map = new Map();\n fingerprints: Map = new Map();\n statuses: Map = new Map();\n\n loading: boolean = true;\n done: boolean = false;\n error: string;\n\n constructor(protected cryptoService: CryptoService, protected apiService: ApiService,\n private i18nService: I18nService) { }\n\n async ngOnInit() {\n this.excludedUsers = this.users.filter(u => !this.isAccepted(u));\n this.filteredUsers = this.users.filter(u => this.isAccepted(u));\n\n if (this.filteredUsers.length <= 0) {\n this.done = true;\n }\n\n const response = await this.getPublicKeys();\n\n for (const entry of response.data) {\n const publicKey = Utils.fromB64ToArray(entry.key);\n const fingerprint = await this.cryptoService.getFingerprint(entry.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.publicKeys.set(entry.id, publicKey);\n this.fingerprints.set(entry.id, fingerprint.join('-'));\n }\n }\n\n this.loading = false;\n }\n\n async submit() {\n this.loading = true;\n try {\n const key = await this.getCryptoKey();\n const userIdsWithKeys: any[] = [];\n for (const user of this.filteredUsers) {\n const publicKey = this.publicKeys.get(user.id);\n if (publicKey == null) {\n continue;\n }\n const encryptedKey = await this.cryptoService.rsaEncrypt(key.key, publicKey.buffer);\n userIdsWithKeys.push({\n id: user.id,\n key: encryptedKey.encryptedString,\n });\n }\n const response = await this.postConfirmRequest(userIdsWithKeys);\n\n response.data.forEach(entry => {\n const error = entry.error !== '' ? entry.error : this.i18nService.t('bulkConfirmMessage');\n this.statuses.set(entry.id, error);\n });\n\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n this.loading = false;\n }\n\n protected isAccepted(user: BulkUserDetails) {\n return user.status === OrganizationUserStatusType.Accepted;\n }\n\n protected async getPublicKeys() {\n const request = new OrganizationUserBulkRequest(this.filteredUsers.map(user => user.id));\n return await this.apiService.postOrganizationUsersPublicKey(this.organizationId, request);\n }\n\n protected getCryptoKey() {\n return this.cryptoService.getOrgKey(this.organizationId);\n }\n\n protected async postConfirmRequest(userIdsWithKeys: any[]) {\n const request = new OrganizationUserBulkConfirmRequest(userIdsWithKeys);\n return await this.apiService.postOrganizationUserBulkConfirm(this.organizationId, request);\n }\n}\n","

{{'confirmUsers' | i18n}}

{{'loading' | i18n}}
{{'noSelectedUsersApplicable' | i18n}} {{error}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{'user' | i18n}} {{'fingerprint' | i18n}}
{{user.email}} {{user.name}} {{fingerprints.get(user.id)}}
{{user.email}} {{user.name}} {{'bulkFilteredMessage' | i18n}}
{{'user' | i18n}} {{'status' | i18n}}
{{user.email}} {{user.name}} {{statuses.get(user.id)}} {{'bulkFilteredMessage' | i18n}}
","export class OrganizationUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import {\n Component,\n Input,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\n\nimport { BulkUserDetails } from './bulk-status.component';\n\n@Component({\n selector: 'app-bulk-remove',\n templateUrl: 'bulk-remove.component.html',\n})\nexport class BulkRemoveComponent {\n\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n statuses: Map = new Map();\n\n loading: boolean = false;\n done: boolean = false;\n error: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService) { }\n\n async submit() {\n this.loading = true;\n try {\n const response = await this.deleteUsers();\n\n response.data.forEach(entry => {\n const error = entry.error !== '' ? entry.error : this.i18nService.t('bulkRemovedMessage');\n this.statuses.set(entry.id, error);\n });\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n\n this.loading = false;\n }\n\n protected async deleteUsers() {\n const request = new OrganizationUserBulkRequest(this.users.map(user => user.id));\n return await this.apiService.deleteManyOrganizationUsers(this.organizationId, request);\n }\n}\n","

{{'removeUsers' | i18n}}

{{'noSelectedUsersApplicable' | i18n}} {{error}} 0 && !error\"> {{'removeUsersWarning' | i18n}}
{{'user' | i18n}}
{{user.email}} {{user.name}}
{{'user' | i18n}} {{'status' | i18n}}
{{user.email}} {{user.name}} {{statuses.get(user.id)}} {{'bulkFilteredMessage' | i18n}}
","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-frontend-layout',\n templateUrl: 'frontend-layout.component.html',\n})\nexport class FrontendLayoutComponent implements OnInit, OnDestroy {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n document.body.classList.add('layout_frontend');\n }\n\n ngOnDestroy() {\n document.body.classList.remove('layout_frontend');\n }\n}\n","
© {{year}}, Bitwarden Inc. (Powered by Vaultwarden)
{{'versionNumber' | i18n : version}}
","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Provider } from 'jslib-common/models/domain/provider';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-providers',\n templateUrl: 'providers.component.html',\n})\nexport class ProvidersComponent implements OnInit {\n @Input() vault = false;\n\n providers: Provider[];\n loaded: boolean = false;\n actionPromise: Promise;\n\n constructor(private userService: UserService, private i18nService: I18nService) { }\n\n async ngOnInit() {\n document.body.classList.remove('layout_frontend');\n await this.load();\n }\n\n async load() {\n const providers = await this.userService.getAllProviders();\n providers.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.providers = providers;\n this.loaded = true;\n }\n}\n","

{{'loading' | i18n}}

{{'providers' | i18n}}

{{'loading' | i18n}}

{{p.name}} {{'providerIsDisabled' | i18n}}
","export abstract class NotificationsService {\n init: () => Promise;\n updateConnection: (sync?: boolean) => Promise;\n reconnectFromActivity: () => Promise;\n disconnectFromInactivity: () => Promise;\n}\n","import { PolicyData } from '../data/policyData';\n\nimport Domain from './domainBase';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class Policy extends Domain {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(obj?: PolicyData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.organizationId = obj.organizationId;\n this.type = obj.type;\n this.data = obj.data;\n this.enabled = obj.enabled;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-entity-users',\n templateUrl: 'entity-users.component.html',\n})\nexport class EntityUsersComponent implements OnInit {\n @Input() entity: 'group' | 'collection';\n @Input() entityId: string;\n @Input() entityName: string;\n @Input() organizationId: string;\n @Output() onEditedUsers = new EventEmitter();\n\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n\n showSelected = false;\n loading = true;\n formPromise: Promise;\n selectedCount = 0;\n searchText: string;\n\n private allUsers: OrganizationUserUserDetailsResponse[] = [];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n await this.loadUsers();\n this.loading = false;\n }\n\n get users() {\n if (this.showSelected) {\n return this.allUsers.filter(u => (u as any).checked);\n } else {\n return this.allUsers;\n }\n }\n\n async loadUsers() {\n const users = await this.apiService.getOrganizationUsers(this.organizationId);\n this.allUsers = users.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'email'));\n if (this.entity === 'group') {\n const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => u.id === s);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n }\n });\n }\n } else if (this.entity === 'collection') {\n const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => !u.accessAll && u.id === s.id);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n (user[0] as any).readOnly = s.readOnly;\n (user[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n }\n\n this.allUsers.forEach(u => {\n if (this.entity === 'collection' && u.accessAll) {\n (u as any).checked = true;\n }\n if ((u as any).checked) {\n this.selectedCount++;\n }\n });\n }\n\n check(u: OrganizationUserUserDetailsResponse) {\n if (this.entity === 'collection' && u.accessAll) {\n return;\n }\n (u as any).checked = !(u as any).checked;\n this.selectedChanged(u);\n }\n\n selectedChanged(u: OrganizationUserUserDetailsResponse) {\n if ((u as any).checked) {\n this.selectedCount++;\n } else {\n if (this.entity === 'collection') {\n (u as any).readOnly = false;\n (u as any).hidePasswords = false;\n }\n this.selectedCount--;\n }\n }\n\n filterSelected(showSelected: boolean) {\n this.showSelected = showSelected;\n }\n\n async submit() {\n try {\n if (this.entity === 'group') {\n const selections = this.users.filter(u => (u as any).checked).map(u => u.id);\n this.formPromise = this.apiService.putGroupUsers(this.organizationId, this.entityId, selections);\n } else {\n const selections = this.users.filter(u => (u as any).checked && !u.accessAll)\n .map(u => new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly, !!(u as any).hidePasswords));\n this.formPromise = this.apiService.putCollectionUsers(this.organizationId, this.entityId, selections);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedUsers'));\n this.onEditedUsers.emit();\n } catch { }\n }\n}\n","

{{'userAccess' | i18n}} {{entityName}}

{{'loading' | i18n}}

{{'noUsersInList' | i18n}}
    {{'name' | i18n}}   {{'userType' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{u.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{u.name}} {{'userAccessAllItems' | i18n}} {{'owner' | i18n}} {{'admin' | i18n}} {{'manager' | i18n}} {{'user' | i18n}} {{'custom' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\nimport { ApiKeyResponse } from 'jslib-common/models/response/apiKeyResponse';\n\n@Component({\n selector: 'app-api-key',\n templateUrl: 'api-key.component.html',\n})\nexport class ApiKeyComponent {\n keyType: string;\n isRotation: boolean;\n postKey: (entityId: string, request: PasswordVerificationRequest) => Promise;\n entityId: string;\n scope: string;\n grantType: string;\n apiKeyTitle: string;\n apiKeyWarning: string;\n apiKeyDescription: string;\n\n masterPassword: string;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n\n constructor(private i18nService: I18nService, private toasterService: ToasterService,\n private cryptoService: CryptoService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.postKey(this.entityId, request);\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = `${this.keyType}.${this.entityId}`;\n } catch { }\n }\n}\n","

{{apiKeyTitle | i18n}}

{{apiKeyDescription | i18n}}

{{apiKeyWarning | i18n}}

client_id:
{{clientId}}

client_secret:
{{clientSecret}}

scope:
{{scope}}

grant_type:
{{grantType}}

","import {\n Component,\n Input,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-purge-vault',\n templateUrl: 'purge-vault.component.html',\n})\nexport class PurgeVaultComponent {\n @Input() organizationId?: string = null;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postPurgeCiphers(request, this.organizationId);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('vaultPurged'));\n if (this.organizationId != null) {\n this.router.navigate(['organizations', this.organizationId, 'vault']);\n } else {\n this.router.navigate(['vault']);\n }\n } catch { }\n }\n}\n","

{{'purgeVault' | i18n}}

{{(organizationId ? 'purgeOrgVaultDesc' : 'purgeVaultDesc') | i18n}}

{{'purgeVaultWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { BillingResponse } from 'jslib-common/models/response/billingResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\nimport { TransactionType } from 'jslib-common/enums/transactionType';\nimport { VerifyBankRequest } from 'jslib-common/models/request/verifyBankRequest';\n\n@Component({\n selector: 'app-user-billing',\n templateUrl: 'user-billing.component.html',\n})\nexport class UserBillingComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n organizationId: string;\n verifyAmount1: number;\n verifyAmount2: number;\n\n verifyBankPromise: Promise;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n if (this.organizationId != null) {\n this.billing = await this.apiService.getOrganizationBilling(this.organizationId);\n } else {\n this.billing = await this.apiService.getUserBilling();\n }\n this.loading = false;\n }\n\n async verifyBank() {\n if (this.loading) {\n return;\n }\n\n try {\n const request = new VerifyBankRequest();\n request.amount1 = this.verifyAmount1;\n request.amount2 = this.verifyAmount2;\n this.verifyBankPromise = this.apiService.postOrganizationVerifyBank(this.organizationId, request);\n await this.verifyBankPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('verifiedBankAccount'));\n this.load();\n } catch { }\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('addCredit'), null, null, 'warning');\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('changePaymentMethod'), null, null, 'warning');\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp);\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","

{{'billing' | i18n}}

{{'loading' | i18n}}

{{(isCreditBalance ? 'accountCredit' : 'accountBalance') | i18n}}

{{creditOrBalance | currency:'$'}}

{{'creditAppliedDesc' | i18n}}

{{'paymentMethod' | i18n}}

{{'noPaymentMethod' | i18n}}

{{'verifyBankAccountDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}

$0.
$0.

{{'inAppPurchase' | i18n}} {{paymentSource.description}}

{{'invoices' | i18n}}

{{'noInvoices' | i18n}}

{{i.date | date:'mediumDate'}} {{'invoiceNumber' | i18n : i.number}} {{i.amount | currency:'$'}} {{'paid' | i18n}} {{'unpaid' | i18n}}

{{'transactions' | i18n}}

{{'noTransactions' | i18n}}

{{t.createdDate | date:'mediumDate'}} {{'chargeNoun' | i18n}} {{'refundNoun' | i18n}} {{t.details}} {{t.amount | currency:'$'}}
* {{'chargesStatement' | i18n : 'BITWARDEN'}}
","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { BitPayInvoiceRequest } from 'jslib-common/models/request/bitPayInvoiceRequest';\n\nimport { WebConstants } from '../../services/webConstants';\n\n@Component({\n selector: 'app-add-credit',\n templateUrl: 'add-credit.component.html',\n})\nexport class AddCreditComponent implements OnInit {\n @Input() creditAmount: string;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.PayPal;\n @Input() organizationId: string;\n @Output() onAdded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild('ppButtonForm', { read: ElementRef, static: true }) ppButtonFormRef: ElementRef;\n\n paymentMethodType = PaymentMethodType;\n ppButtonFormAction = WebConstants.paypal.buttonActionProduction;\n ppButtonBusinessId = WebConstants.paypal.businessIdProduction;\n ppButtonCustomField: string;\n ppLoading = false;\n subject: string;\n returnUrl: string;\n formPromise: Promise;\n\n private userId: string;\n private name: string;\n private email: string;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService) {\n if (process.env.ENV !== 'cloud' || platformUtilsService.isDev()) {\n this.ppButtonFormAction = WebConstants.paypal.buttonActionSandbox;\n this.ppButtonBusinessId = WebConstants.paypal.businessIdSandbox;\n }\n }\n\n async ngOnInit() {\n if (this.organizationId != null) {\n if (this.creditAmount == null) {\n this.creditAmount = '20.00';\n }\n this.ppButtonCustomField = 'organization_id:' + this.organizationId;\n const org = await this.userService.getOrganization(this.organizationId);\n if (org != null) {\n this.subject = org.name;\n this.name = org.name;\n }\n } else {\n if (this.creditAmount == null) {\n this.creditAmount = '10.00';\n }\n this.userId = await this.userService.getUserId();\n this.subject = await this.userService.getEmail();\n this.email = this.subject;\n this.ppButtonCustomField = 'user_id:' + this.userId;\n }\n this.ppButtonCustomField += ',account_credit:1';\n this.returnUrl = window.location.href;\n }\n\n async submit() {\n if (this.creditAmount == null || this.creditAmount === '') {\n return;\n }\n\n if (this.method === PaymentMethodType.PayPal) {\n this.ppButtonFormRef.nativeElement.submit();\n this.ppLoading = true;\n return;\n }\n if (this.method === PaymentMethodType.BitPay) {\n try {\n const req = new BitPayInvoiceRequest();\n req.email = this.email;\n req.name = this.name;\n req.credit = true;\n req.amount = this.creditAmountNumber;\n req.organizationId = this.organizationId;\n req.userId = this.userId;\n req.returnUrl = this.returnUrl;\n this.formPromise = this.apiService.postBitPayInvoice(req);\n const bitPayUrl: string = await this.formPromise;\n this.platformUtilsService.launchUri(bitPayUrl);\n } catch { }\n return;\n }\n try {\n this.onAdded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n formatAmount() {\n try {\n if (this.creditAmount != null && this.creditAmount !== '') {\n const floatAmount = Math.abs(parseFloat(this.creditAmount));\n if (floatAmount > 0) {\n this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString())\n .toFixed(2).toString();\n return;\n }\n }\n } catch { }\n this.creditAmount = '';\n }\n\n get creditAmountNumber(): number {\n if (this.creditAmount != null && this.creditAmount !== '') {\n try {\n return parseFloat(this.creditAmount);\n } catch { }\n }\n return null;\n }\n}\n","

{{'addCredit' | i18n}}

$USD
{{'creditDelayed' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PaymentRequest } from 'jslib-common/models/request/paymentRequest';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-adjust-payment',\n templateUrl: 'adjust-payment.component.html',\n})\nexport class AdjustPaymentComponent {\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent, { static: true }) taxInfoComponent: TaxInfoComponent;\n\n @Input() currentType?: PaymentMethodType;\n @Input() organizationId: string;\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n paymentMethodType = PaymentMethodType;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async submit() {\n try {\n const request = new PaymentRequest();\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n request.paymentToken = result[0];\n request.paymentMethodType = result[1];\n request.postalCode = this.taxInfoComponent.taxInfo.postalCode;\n request.country = this.taxInfoComponent.taxInfo.country;\n if (this.organizationId == null) {\n return this.apiService.postAccountPayment(request);\n } else {\n request.taxId = this.taxInfoComponent.taxInfo.taxId;\n request.state = this.taxInfoComponent.taxInfo.state;\n request.line1 = this.taxInfoComponent.taxInfo.line1;\n request.line2 = this.taxInfoComponent.taxInfo.line2;\n request.city = this.taxInfoComponent.taxInfo.city;\n request.state = this.taxInfoComponent.taxInfo.state;\n return this.apiService.postOrganizationPayment(this.organizationId, request);\n }\n });\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedPaymentMethod'));\n this.onAdjusted.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n changeCountry() {\n if (this.taxInfoComponent.taxInfo.country === 'US') {\n this.paymentComponent.hideBank = !this.organizationId;\n } else {\n this.paymentComponent.hideBank = true;\n if (this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n }\n}\n","

{{(currentType != null ? 'changePaymentMethod' : 'addPaymentMethod') | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-update-license',\n templateUrl: 'update-license.component.html',\n})\nexport class UpdateLicenseComponent {\n @Input() organizationId: string;\n @Output() onUpdated = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async submit() {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n try {\n const fd = new FormData();\n fd.append('license', files[0]);\n\n let updatePromise: Promise = null;\n if (this.organizationId == null) {\n updatePromise = this.apiService.postAccountLicense(fd);\n } else {\n updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd);\n }\n\n this.formPromise = updatePromise.then(() => {\n return this.apiService.refreshIdentityToken();\n });\n\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedLicense'));\n this.onUpdated.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
{{'licenseFileDesc' | i18n : (!organizationId ? 'bitwarden_premium_license.json' : 'bitwarden_organization_license.json')}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { StorageRequest } from 'jslib-common/models/request/storageRequest';\n\nimport { PaymentResponse } from 'jslib-common/models/response/paymentResponse';\n\nimport { PaymentComponent } from './payment.component';\n\n@Component({\n selector: 'app-adjust-storage',\n templateUrl: 'adjust-storage.component.html',\n})\nexport class AdjustStorageComponent {\n @Input() storageGbPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n storageAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new StorageRequest();\n request.storageGbAdjustment = this.storageAdjustment;\n if (!this.add) {\n request.storageGbAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n let response: Promise;\n if (this.organizationId == null) {\n response = this.formPromise = this.apiService.postAccountStorage(request);\n } else {\n response = this.formPromise = this.apiService.postOrganizationStorage(this.organizationId, request);\n }\n const result = await response;\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.onAdjusted.emit(this.storageAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedStorage', request.storageGbAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedStorageTotal(): number {\n return this.storageGbPrice * this.storageAdjustment;\n }\n}\n","

{{(add ? 'addStorage' : 'removeStorage') | i18n}}

{{'total' | i18n}}: {{storageAdjustment || 0}} GB × {{storageGbPrice | currency:'$'}} = {{adjustedStorageTotal | currency:'$'}} /{{interval | i18n}}
{{(add ? 'storageAddNote' : 'storageRemoveNote') | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { UpdateTwoFactorDuoRequest } from 'jslib-common/models/request/updateTwoFactorDuoRequest';\nimport { TwoFactorDuoResponse } from 'jslib-common/models/response/twoFactorDuoResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-duo',\n templateUrl: 'two-factor-duo.component.html',\n})\nexport class TwoFactorDuoComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Duo;\n ikey: string;\n skey: string;\n host: string;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorDuoRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.integrationKey = this.ikey;\n request.secretKey = this.skey;\n request.host = this.host;\n\n return super.enable(async () => {\n if (this.organizationId != null) {\n this.formPromise = this.apiService.putTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.putTwoFactorDuo(request);\n }\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private processResponse(response: TwoFactorDuoResponse) {\n this.ikey = response.integrationKey;\n this.skey = response.secretKey;\n this.host = response.host;\n this.enabled = response.enabled;\n }\n}\n","

{{'twoStepLogin' | i18n}} Duo

{{'twoStepLoginProviderEnabled' | i18n}} \"\" {{'twoFactorDuoIntegrationKey' | i18n}}: {{ikey}}
{{'twoFactorDuoSecretKey' | i18n}}: {{skey}}
{{'twoFactorDuoApiHostname' | i18n}}: {{host}}
\"\"

{{'twoFactorDuoDesc' | i18n}}

","import {\n Component,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { TwoFactorProviders } from 'jslib-common/services/auth.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { ModalRef } from 'jslib-angular/components/modal/modal.ref';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorAuthenticatorComponent } from './two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './two-factor-recovery.component';\nimport { TwoFactorWebAuthnComponent } from './two-factor-webauthn.component';\nimport { TwoFactorYubiKeyComponent } from './two-factor-yubikey.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: 'two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent implements OnInit {\n @ViewChild('recoveryTemplate', { read: ViewContainerRef, static: true }) recoveryModalRef: ViewContainerRef;\n @ViewChild('authenticatorTemplate', { read: ViewContainerRef, static: true }) authenticatorModalRef: ViewContainerRef;\n @ViewChild('yubikeyTemplate', { read: ViewContainerRef, static: true }) yubikeyModalRef: ViewContainerRef;\n @ViewChild('duoTemplate', { read: ViewContainerRef, static: true }) duoModalRef: ViewContainerRef;\n @ViewChild('emailTemplate', { read: ViewContainerRef, static: true }) emailModalRef: ViewContainerRef;\n @ViewChild('webAuthnTemplate', { read: ViewContainerRef, static: true }) webAuthnModalRef: ViewContainerRef;\n\n organizationId: string;\n providers: any[] = [];\n canAccessPremium: boolean;\n showPolicyWarning = false;\n loading = true;\n modal: ModalRef;\n\n constructor(protected apiService: ApiService, protected userService: UserService,\n protected modalService: ModalService, protected messagingService: MessagingService,\n protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n\n for (const key in TwoFactorProviders) {\n if (!TwoFactorProviders.hasOwnProperty(key)) {\n continue;\n }\n\n const p = (TwoFactorProviders as any)[key];\n if (this.filterProvider(p.type)) {\n continue;\n }\n\n this.providers.push({\n type: p.type,\n name: p.name,\n description: p.description,\n enabled: false,\n premium: p.premium,\n sort: p.sort,\n });\n }\n\n this.providers.sort((a: any, b: any) => a.sort - b.sort);\n await this.load();\n }\n\n async load() {\n this.loading = true;\n const providerList = await this.getTwoFactorProviders();\n providerList.data.forEach(p => {\n this.providers.forEach(p2 => {\n if (p.type === p2.type) {\n p2.enabled = p.enabled;\n }\n });\n });\n this.evaluatePolicies();\n this.loading = false;\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.Authenticator:\n const authComp = await this.openModal(this.authenticatorModalRef, TwoFactorAuthenticatorComponent);\n authComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Authenticator);\n });\n break;\n case TwoFactorProviderType.Yubikey:\n const yubiComp = await this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent);\n yubiComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Yubikey);\n });\n break;\n case TwoFactorProviderType.Duo:\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Duo);\n });\n break;\n case TwoFactorProviderType.Email:\n const emailComp = await this.openModal(this.emailModalRef, TwoFactorEmailComponent);\n emailComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Email);\n });\n break;\n case TwoFactorProviderType.WebAuthn:\n const webAuthnComp = await this.openModal(this.webAuthnModalRef, TwoFactorWebAuthnComponent);\n webAuthnComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.WebAuthn);\n });\n break;\n default:\n break;\n }\n }\n\n recoveryCode() {\n this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent);\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorProviders();\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type === TwoFactorProviderType.OrganizationDuo;\n }\n\n protected async openModal(ref: ViewContainerRef, type: Type): Promise {\n const [modal, childComponent] = await this.modalService.openViewRef(type, ref);\n this.modal = modal;\n\n return childComponent;\n }\n\n protected updateStatus(enabled: boolean, type: TwoFactorProviderType) {\n if (!enabled && this.modal != null) {\n this.modal.close();\n }\n this.providers.forEach(p => {\n if (p.type === type) {\n p.enabled = enabled;\n }\n });\n this.evaluatePolicies();\n }\n\n private async evaluatePolicies() {\n if (this.organizationId == null && this.providers.filter(p => p.enabled).length === 1) {\n this.showPolicyWarning = await this.policyService.policyAppliesToUser(PolicyType.TwoFactorAuthentication);\n } else {\n this.showPolicyWarning = false;\n }\n }\n}\n","

{{'twoStepLogin' | i18n}}

{{'twoStepLoginDesc' | i18n}}

{{'twoStepLoginOrganizationDesc' | i18n}}

{{'twoStepLoginRecoveryWarning' | i18n}}

{{'providers' | i18n}} {{'loading' | i18n}}

{{'twoStepLoginPolicyUserWarning' | i18n}} ","import { Component } from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from 'jslib-angular/components/export.component';\n\n@Component({\n selector: 'app-export',\n templateUrl: 'export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n organizationId: string;\n\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService, window);\n }\n\n protected saved() {\n super.saved();\n this.masterPassword = null;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('exportSuccess'));\n }\n}\n","

{{'exportVault' | i18n}}

{{'exportMasterPassword' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: 'exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n exposedPasswordMap = new Map();\n\n constructor(protected cipherService: CipherService, protected auditService: AuditService,\n modalService: ModalService, messagingService: MessagingService,\n userService: UserService) {\n super(modalService, userService, messagingService, true);\n }\n\n ngOnInit() {\n this.checkAccess();\n }\n\n async load() {\n if (await this.checkAccess()) {\n super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const exposedPasswordCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const promise = this.auditService.passwordLeaked(c.login.password).then(exposedCount => {\n if (exposedCount > 0) {\n exposedPasswordCiphers.push(c);\n this.exposedPasswordMap.set(c.id, exposedCount);\n }\n });\n promises.push(promise);\n });\n await Promise.all(promises);\n this.ciphers = exposedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n}\n","

{{'exposedPasswordsReport' | i18n}}

{{'exposedPasswordsReportDesc' | i18n}}

{{'noExposedPasswords' | i18n}} {{'exposedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'exposedXTimes' | i18n : (exposedPasswordMap.get(c.id) | number)}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherCreateRequest } from 'jslib-common/models/request/cipherCreateRequest';\nimport { CipherRequest } from 'jslib-common/models/request/cipherRequest';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../../vault/add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n organization: Organization;\n originalCipher: Cipher = null;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n private apiService: ApiService, messagingService: MessagingService,\n eventService: EventService, policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService);\n }\n\n protected allowOwnershipAssignment() {\n if (this.ownershipOptions != null && (this.ownershipOptions.length > 1 || !this.allowPersonal)) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.canManageAllCollections;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n const data = new CipherData(response);\n this.originalCipher = new Cipher(data);\n return new Cipher(data);\n }\n\n protected encryptCipher() {\n if (!this.organization.canManageAllCollections) {\n return super.encryptCipher();\n }\n return this.cipherService.encrypt(this.cipher, null, this.originalCipher);\n }\n\n protected async saveCipher(cipher: Cipher) {\n if (!this.organization.canManageAllCollections || cipher.organizationId == null) {\n return super.saveCipher(cipher);\n }\n if (this.editMode && !this.cloneMode) {\n const request = new CipherRequest(cipher);\n return this.apiService.putCipherAdmin(this.cipherId, request);\n } else {\n const request = new CipherCreateRequest(cipher);\n return this.apiService.postCipherAdmin(request);\n }\n }\n\n protected async deleteCipher() {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipher();\n }\n return this.cipher.isDeleted ? this.apiService.deleteCipherAdmin(this.cipherId)\n : this.apiService.putDeleteCipherAdmin(this.cipherId);\n }\n}\n","import { AttachmentResponse } from '../response/attachmentResponse';\n\nexport class AttachmentData {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response?: AttachmentResponse) {\n if (response == null) {\n return;\n }\n this.id = response.id;\n this.url = response.url;\n this.fileName = response.fileName;\n this.key = response.key;\n this.size = response.size;\n this.sizeName = response.sizeName;\n }\n}\n","import { CardApi } from '../api/cardApi';\n\nexport class CardData {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data?: CardApi) {\n if (data == null) {\n return;\n }\n\n this.cardholderName = data.cardholderName;\n this.brand = data.brand;\n this.number = data.number;\n this.expMonth = data.expMonth;\n this.expYear = data.expYear;\n this.code = data.code;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldApi } from '../api/fieldApi';\n\nexport class FieldData {\n type: FieldType;\n name: string;\n value: string;\n\n constructor(response?: FieldApi) {\n if (response == null) {\n return;\n }\n this.type = response.type;\n this.name = response.name;\n this.value = response.value;\n }\n}\n","import { IdentityApi } from '../api/identityApi';\n\nexport class IdentityData {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data?: IdentityApi) {\n if (data == null) {\n return;\n }\n\n this.title = data.title;\n this.firstName = data.firstName;\n this.middleName = data.middleName;\n this.lastName = data.lastName;\n this.address1 = data.address1;\n this.address2 = data.address2;\n this.address3 = data.address3;\n this.city = data.city;\n this.state = data.state;\n this.postalCode = data.postalCode;\n this.country = data.country;\n this.company = data.company;\n this.email = data.email;\n this.phone = data.phone;\n this.ssn = data.ssn;\n this.username = data.username;\n this.passportNumber = data.passportNumber;\n this.licenseNumber = data.licenseNumber;\n }\n}\n","import { LoginApi } from '../api/loginApi';\n\nimport { LoginUriData } from './loginUriData';\n\nexport class LoginData {\n uris: LoginUriData[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data?: LoginApi) {\n if (data == null) {\n return;\n }\n\n this.username = data.username;\n this.password = data.password;\n this.passwordRevisionDate = data.passwordRevisionDate;\n this.totp = data.totp;\n this.autofillOnPageLoad = data.autofillOnPageLoad;\n\n if (data.uris) {\n this.uris = data.uris.map(u => new LoginUriData(u));\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriApi } from '../api/loginUriApi';\n\nexport class LoginUriData {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data?: LoginUriApi) {\n if (data == null) {\n return;\n }\n this.uri = data.uri;\n this.match = data.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class SecureNoteData {\n type: SecureNoteType;\n\n constructor(data?: SecureNoteApi) {\n if (data == null) {\n return;\n }\n\n this.type = data.type;\n }\n}\n","import { AttachmentData } from '../data/attachmentData';\n\nimport { AttachmentView } from '../view/attachmentView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nexport class Attachment extends Domain {\n id: string;\n url: string;\n size: string;\n sizeName: string;\n key: EncString;\n fileName: EncString;\n\n constructor(obj?: AttachmentData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, alreadyEncrypted, ['id', 'url', 'sizeName']);\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new AttachmentView(this), {\n fileName: null,\n }, orgId, encKey);\n\n if (this.key != null) {\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n const decValue = await cryptoService.decryptToBytes(this.key, orgKey ?? encKey);\n view.key = new SymmetricCryptoKey(decValue);\n } catch (e) {\n // TODO: error?\n }\n }\n\n return view;\n }\n\n toAttachmentData(): AttachmentData {\n const a = new AttachmentData();\n a.size = this.size;\n this.buildDataModel(this, a, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, ['id', 'url', 'sizeName']);\n return a;\n }\n}\n","import { View } from './view';\n\nimport { Password } from '../domain/password';\n\nexport class PasswordHistoryView implements View {\n password: string = null;\n lastUsedDate: Date = null;\n\n constructor(ph?: Password) {\n if (!ph) {\n return;\n }\n\n this.lastUsedDate = ph.lastUsedDate;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { ImportOption, ImportService } from 'jslib-common/abstractions/import.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n\n@Component({\n selector: 'app-import',\n templateUrl: 'import.component.html',\n})\nexport class ImportComponent implements OnInit {\n featuredImportOptions: ImportOption[];\n importOptions: ImportOption[];\n format: string = null;\n fileContents: string;\n formPromise: Promise;\n loading: boolean = false;\n importBlockedByPolicy: boolean = false;\n\n protected organizationId: string = null;\n protected successNavigate: any[] = ['vault'];\n\n constructor(protected i18nService: I18nService, protected toasterService: ToasterService,\n protected importService: ImportService, protected router: Router,\n protected platformUtilsService: PlatformUtilsService, protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.setImportOptions();\n this.importOptions.sort((a, b) => {\n if (a.name == null && b.name != null) {\n return -1;\n }\n if (a.name != null && b.name == null) {\n return 1;\n }\n if (a.name == null && b.name == null) {\n return 0;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(a.name, b.name) :\n a.name.localeCompare(b.name);\n });\n\n this.importBlockedByPolicy = await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership);\n }\n\n async submit() {\n if (this.importBlockedByPolicy) {\n this.platformUtilsService.showToast('error', null,\n this.i18nService.t('personalOwnershipPolicyInEffectImports'));\n return;\n }\n\n this.loading = true;\n\n const importer = this.importService.getImporter(this.format, this.organizationId);\n if (importer === null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFormat'));\n this.loading = false;\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if ((files == null || files.length === 0) && (this.fileContents == null || this.fileContents === '')) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n let fileContents = this.fileContents;\n if (files != null && files.length > 0) {\n try {\n const content = await this.getFileContents(files[0]);\n if (content != null) {\n fileContents = content;\n }\n } catch { }\n }\n\n if (fileContents == null || fileContents === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n try {\n this.formPromise = this.importService.import(importer, fileContents, this.organizationId);\n const error = await this.formPromise;\n if (error != null) {\n this.error(error);\n this.loading = false;\n return;\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('importSuccess'));\n this.router.navigate(this.successNavigate);\n } catch { }\n\n this.loading = false;\n }\n\n getFormatInstructionTitle() {\n if (this.format == null) {\n return null;\n }\n\n const results = this.featuredImportOptions.concat(this.importOptions).filter(o => o.id === this.format);\n if (results.length > 0) {\n return this.i18nService.t('instructionsFor', results[0].name);\n }\n return null;\n }\n\n protected setImportOptions() {\n this.featuredImportOptions = [{\n id: null,\n name: '-- ' + this.i18nService.t('select') + ' --',\n }, ...this.importService.featuredImportOptions];\n this.importOptions = this.importService.regularImportOptions;\n }\n\n private async error(error: Error) {\n await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: 'error' as SweetAlertIcon,\n iconHtml: ``,\n input: 'textarea',\n inputValue: error.message,\n inputAttributes: {\n 'readonly': 'true',\n },\n titleText: this.i18nService.t('importError'),\n text: this.i18nService.t('importErrorDesc'),\n showConfirmButton: true,\n confirmButtonText: this.i18nService.t('ok'),\n onOpen: popupEl => {\n popupEl.querySelector('.swal2-textarea').scrollTo(0, 0);\n },\n });\n }\n\n private getFileContents(file: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file, 'utf-8');\n reader.onload = evt => {\n if (this.format === 'lastpasscsv' && file.type === 'text/html') {\n const parser = new DOMParser();\n const doc = parser.parseFromString((evt.target as any).result, 'text/html');\n const pre = doc.querySelector('pre');\n if (pre != null) {\n resolve(pre.textContent);\n return;\n }\n reject();\n return;\n }\n\n resolve((evt.target as any).result);\n };\n reader.onerror = () => {\n reject();\n };\n });\n }\n}\n","

{{'importData' | i18n}}

{{'personalOwnershipPolicyInEffectImports' | i18n}}
See detailed instructions on our help site at https://help.bitwarden.com/article/export-your-data/ See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-lastpass/ Using the KeePassX desktop application, navigate to \"Database\" → \"Export to CSV file\" and save the CSV file. In the Avira web vault, go to \"Settings\" → \"My Data\" → \"Export data\" and save the CSV file. In the Blur web vault, click your username at the top and go to \"Settings\" → \"Export Data\", then click \"Export CSV\" for your \"Accounts\". Using the SaveInCloud desktop application, navigate to \"File\" → \"Export\" → \"As XML\" and save the XML file. Using the Padlock desktop application, click the hamburger icon in the top left corner and navigate to \"Settings\" → \"Export\" button and save the file \"As CSV\". Using the KeePass 2 desktop application, navigate to \"File\" → \"Export\" and select the \"KeePass XML (2.x)\" option. Using the Universal Password Manager desktop application, navigate to \"Database\" → \"Export\" and save the CSV file. Using the SaferPass browser extension, click the hamburger icon in the top left corner and navigate to \"Settings\". Click the \"Export accounts\" button to save the CSV file. Using the Meldium web vault, navigate to \"Settings\". Locate the \"Export data\" function and click \"Show me my data\" to save the CSV file. Log into the Keeper web vault (keepersecurity.com/vault). Navigate to \"Backup\" (top right) and find the \"Export to .csv File\" option. Click \"Export Now\" to save the CSV file. The process is exactly the same as importing from Google Chrome. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/ See detailed instructions on our help site at https://bitwarden.com/help/article/import-from-firefox/. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-1password/. Using the Password Dragon desktop application, navigate to \"File\" → \"Export\" → \"To XML\". In the dialog that pops up select \"All Rows\" and check all fields. Click the \"Export\" button and save the XML file. Using the Enpass desktop application, navigate to \"File\" → \"Export\" → \"As CSV\". Select \"OK\" to the warning alert and save the CSV file. Note that the importer only supports files exported while Enpass is set to the English language, so adjust your settings accordingly. Using the Enpass 6 desktop application, click the menu button and navigate to \"File\" → \"Export\". Select the \".json\" file format option and save the JSON file. Using the Password Safe desktop application, navigate to \"File\" → \"Export To\" → \"XML format...\" and save the XML file. Using the Dashlane desktop application, navigate to \"File\" → \"Export\" → \"Unsecured archive (readable) in JSON format\" and save the JSON file. Using the mSecure desktop application, navigate to \"File\" → \"Export\" → \"CSV File...\" and save the CSV file. Using the Sticky Password desktop application, navigate to \"Menu\" (top right) → \"Export\" → \"Export all\". Select the unencrypted format XML option and save the XML file. Using the True Key desktop application, click the gear icon (top right) and then navigate to \"App Settings\". Click the \"Export\" button, enter your password and save the CSV file. Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the top right to expand the navigation bar. Navigate to \"Data\" → \"Export\". Click the \"download HTML+JSON\" button to save the HTML file. Using the RoboForm Editor desktop application, navigate to \"RoboForm\" (top left) → \"Options\" → \"Account & Data\" and click the \"Export\" button. Select all of your data, change the \"Format\" to \"CSV file\" and then click the \"Export\" button to save the CSV file. Note: RoboForm only allows you to export Logins. Other items will not be exported. Log into the Passbolt web vault and navigate to the \"Passwords\" listing. Select all of the passwords you would like to export and click the \"Export\" button at the top of the listing. Choose the \"csv (lastpass)\" export format and click the \"Export\" button. Using the Ascendo DataVault desktop application, navigate to \"Tools\" → \"Export\". In the dialog that pops up, select the \"All Items (DVX, CSV)\" option. Click the \"Ok\" button to save the CSV file. Using the Password Boss desktop application, navigate to \"File\" → \"Export data\" → \"Password Boss JSON - not encrypted\" and save the JSON file. Log into the Zoho web vault (vault.zoho.com). Navigate to \"Tools\" → \"Export Secrets\". Select \"All Secrets\" and click the \"Zoho Vault Format CSV\" button. Highlight and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the data from the text editor as zoho_export.csv. Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top right corner. Navigate to \"Export\" → \"Export as CSV\" and save the CSV file. Using the PassKeep mobile app, navigate to \"Backup/Restore\". Locate the \"CSV Backup/Restore\" section and click \"Backup to CSV\" to save the CSV file. Make sure you have python-keyring and python-gnomekeyring installed. Save the GNOME Keyring Import/Export python script to your desktop as pw_helper.py. Open terminal and run chmod +rx Desktop/pw_helper.py and then python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the resulting my_passwords.json file here to Bitwarden. Using the Password Agent desktop application navigate to \"File\" → \"Export\", select the \"Fields to export\" button and check all of the fields, change the \"Output format\" to \"CSV\", and then click the \"Start\" button to save the CSV file. Log into the Passpack website vault and navigate to \"Settings\" → \"Export\", then click the \"Download\" button to save the CSV file. Open your Passman vault and click on \"Settings\" in the bottom left corner. In the \"Settings\" window switch to the \"Export credentials\" tab and choose \"JSON\" as the export type. Enter your vault's passphrase and click the \"Export\" button to save the JSON file. Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select the \"Export\" button for the \"Export to CSV file\" option to save the CSV file. Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select the \"Export\" button for the \"Export to JSON file\" option to save the JSON file. Open the F-Secure KEY desktop application and navigate to \"Settings\" → \"Export Passwords\". Select the \"Export\" button, enter your master password, and save the FSK file. Open the Kaspersky Password Manager desktop application and navigate to \"Settings\" → \"Import/Export\". Locate the \"Export to text file\" section and select the \"Export\" button to save the TXT file. Open the RememBear desktop application and navigate to \"Settings\" → \"Account\" → \"Export\". Enter your master password and select the \"Export Anyway\" button to save the CSV file. Open the PasswordWallet desktop application and navigate to \"File\" → \"Export\" → \"Visible entries to text file\". Enter your password and select the \"Ok\" button to save the TXT file. Open the Myki desktop browser extension and navigate to \"Advanced\" → \"Export Accounts\" and then scan the QR code with your mobile device. Various CSV files will then be saved to your computer's downloads folder. Export your SecureSafe password safe to a CSV file with a comma delimiter. Open the LogMeOnce browser extension, then navigate to \"Open Menu\" → \"Export To\" and select \"CSV File\" to save the CSV file. Open the BlackBerry Password Keeper application, then navigate to \"Settings\" → \"Import/Export\". Select \"Export Passwords\" and follow the instructions on screen to save the unencrypted CSV file. Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon and select \"Export\" to save the CSV file. Open the Codebook desktop application and log in. Navigate to \"File\" → \"Export all\", then click \"Yes\" on the dialog and save the CSV file. Open the newest version of the Encryptr desktop application and allow all of your data to sync. Once syncing of your data is complete, the download icon in the top right corner will turn pink. Click the download icon and save the CSV file. From the Yoti browser extension, click on \"Settings\", then \"Export Saved Logins\" and save the CSV file.
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: 'inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit {\n services = new Map();\n cipherDocs = new Map();\n\n constructor(protected cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService) {\n super(modalService, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n try {\n await this.load2fa();\n } catch { }\n if (this.services.size > 0) {\n const allCiphers = await this.getAllCiphers();\n const inactive2faCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n const docs = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || (c.login.totp != null && c.login.totp !== '') || !c.login.hasUris ||\n c.isDeleted) {\n return;\n }\n for (let i = 0; i < c.login.uris.length; i++) {\n const u = c.login.uris[i];\n if (u.uri != null && u.uri !== '') {\n const hostname = Utils.getHostname(u.uri);\n if (hostname != null && this.services.has(hostname)) {\n if (this.services.get(hostname) != null) {\n docs.set(c.id, this.services.get(hostname));\n }\n inactive2faCiphers.push(c);\n break;\n }\n }\n }\n });\n await Promise.all(promises);\n this.ciphers = inactive2faCiphers;\n this.cipherDocs = docs;\n }\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private async load2fa() {\n if (this.services.size > 0) {\n return;\n }\n const response = await fetch(new Request('https://2fa.directory/api/v2/totp.json'));\n if (response.status !== 200) {\n throw new Error();\n }\n const responseJson = await response.json();\n for (const categoryName in responseJson) {\n if (responseJson.hasOwnProperty(categoryName)) {\n const category = responseJson[categoryName];\n for (const serviceName in category) {\n if (category.hasOwnProperty(serviceName)) {\n const service = category[serviceName];\n if (service.url != null) {\n const hostname = Utils.getHostname(service.url);\n if (hostname != null) {\n this.services.set(hostname, service.doc);\n }\n }\n }\n }\n }\n }\n }\n}\n","

{{'inactive2faReport' | i18n}} {{'loading' | i18n}}

{{'inactive2faReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noInactive2fa' | i18n}} {{'inactive2faFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'instructions' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: 'reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordUseMap: Map;\n\n constructor(protected cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService) {\n super(modalService, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const ciphersWithPasswords: CipherView[] = [];\n this.passwordUseMap = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n ciphersWithPasswords.push(c);\n if (this.passwordUseMap.has(c.login.password)) {\n this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1);\n } else {\n this.passwordUseMap.set(c.login.password, 1);\n }\n });\n const reusedPasswordCiphers = ciphersWithPasswords.filter(c =>\n this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1);\n this.ciphers = reusedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from an organization view\n return true;\n }\n}\n","

{{'reusedPasswordsReport' | i18n}} {{'loading' | i18n}}

{{'reusedPasswordsReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noReusedPasswords' | i18n}} {{'reusedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'reusedXTimes' | i18n : passwordUseMap.get(c.login.password)}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: 'unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit {\n constructor(protected cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService) {\n super(modalService, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const unsecuredCiphers = allCiphers.filter(c => {\n if (c.type !== CipherType.Login || !c.login.hasUris || c.isDeleted) {\n return false;\n }\n return c.login.uris.some(u => u.uri != null && u.uri.indexOf('http://') === 0);\n });\n this.ciphers = unsecuredCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","

{{'unsecuredWebsitesReport' | i18n}} {{'loading' | i18n}}

{{'unsecuredWebsitesReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noUnsecuredWebsites' | i18n}} {{'unsecuredWebsitesFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: 'weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit {\n\n passwordStrengthMap = new Map();\n\n private passwordStrengthCache = new Map();\n\n constructor(protected cipherService: CipherService, protected passwordGenerationService: PasswordGenerationService,\n modalService: ModalService, messagingService: MessagingService,\n userService: UserService) {\n super(modalService, userService, messagingService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const weakPasswordCiphers: CipherView[] = [];\n const isUserNameNotEmpty = (c: CipherView): boolean => {\n return c.login.username != null && c.login.username.trim() !== '';\n };\n const getCacheKey = (c: CipherView): string => {\n return c.login.password + '_____' + (isUserNameNotEmpty(c) ? c.login.username : '');\n };\n\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const hasUserName = isUserNameNotEmpty(c);\n const cacheKey = getCacheKey(c);\n if (!this.passwordStrengthCache.has(cacheKey)) {\n let userInput: string[] = [];\n if (hasUserName) {\n const atPosition = c.login.username.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(\n c.login.username.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/))\n .filter(i => i.length >= 3);\n } else {\n userInput = c.login.username.trim().toLowerCase().split(/[^A-Za-z0-9]/)\n .filter(i => i.length >= 3);\n }\n }\n const result = this.passwordGenerationService.passwordStrength(c.login.password,\n userInput.length > 0 ? userInput : null);\n this.passwordStrengthCache.set(cacheKey, result.score);\n }\n const score = this.passwordStrengthCache.get(cacheKey);\n if (score != null && score <= 2) {\n this.passwordStrengthMap.set(c.id, this.scoreKey(score));\n weakPasswordCiphers.push(c);\n }\n });\n weakPasswordCiphers.sort((a, b) => {\n return this.passwordStrengthCache.get(getCacheKey(a)) -\n this.passwordStrengthCache.get(getCacheKey(b));\n });\n this.ciphers = weakPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n\n private scoreKey(score: number): [string, string] {\n switch (score) {\n case 4:\n return ['strong', 'success'];\n case 3:\n return ['good', 'primary'];\n case 2:\n return ['weak', 'warning'];\n default:\n return ['veryWeak', 'danger'];\n }\n }\n}\n","

{{'weakPasswordsReport' | i18n}} {{'loading' | i18n}}

{{'weakPasswordsReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noWeakPasswords' | i18n}} {{'weakPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{passwordStrengthMap.get(c.id)[0] | i18n}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib-angular/components/attachments.component';\n\n@Component({\n selector: 'app-vault-attachments',\n templateUrl: 'attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService, window);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.showFixOldAttachments(attachment)) {\n await this.reuploadCipherAttachment(attachment, false);\n }\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.cipher.organizationId == null;\n }\n}\n","

{{'attachments' | i18n}} {{cipher.name}}

{{a.sizeName}}

{{'newAttachment' | i18n}}

{{'maxFileSize' | i18n}}
","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CiphersComponent as BaseCiphersComponent } from '../../vault/ciphers.component';\n\n@Component({\n selector: 'app-org-vault-ciphers',\n templateUrl: '../../vault/ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent {\n @Output() onEventsClicked = new EventEmitter();\n\n organization: Organization;\n accessEvents = false;\n\n protected allCiphers: CipherView[] = [];\n\n constructor(searchService: SearchService, toasterService: ToasterService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, cipherService: CipherService,\n private apiService: ApiService, eventService: EventService, totpService: TotpService,\n userService: UserService, passwordRepromptService: PasswordRepromptService) {\n super(searchService, toasterService, i18nService, platformUtilsService, cipherService,\n eventService, totpService, userService, passwordRepromptService);\n }\n\n async load(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canManageAllCollections) {\n this.accessEvents = this.organization.useEvents;\n this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id);\n } else {\n this.allCiphers = (await this.cipherService.getAllDecrypted()).filter(c => c.organizationId === this.organization.id);\n }\n await this.searchService.indexCiphers(this.organization.id, this.allCiphers);\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canManageAllCollections) {\n await super.applyFilter(filter);\n } else {\n const f = (c: CipherView) => c.organizationId === this.organization.id && (filter == null || filter(c));\n await super.applyFilter(f);\n }\n }\n\n async search(timeout: number = null) {\n await super.search(timeout, this.allCiphers);\n }\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipher(id, this.deleted);\n }\n return this.deleted ? this.apiService.deleteCipherAdmin(id) : this.apiService.putDeleteCipherAdmin(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return this.organization.canManageAllCollections && c.hasOldAttachments;\n }\n}\n","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from 'jslib-angular/components/collections.component';\n\n@Component({\n selector: 'app-vault-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n}\n","

{{'collections' | i18n}} {{cipher.name}}

{{'collectionsDesc' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from '../../vault/groupings.component';\n\n@Component({\n selector: 'app-org-vault-groupings',\n templateUrl: '../../vault/groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService,\n private apiService: ApiService, private i18nService: I18nService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n async loadCollections() {\n if (!this.organization.canManageAllCollections) {\n await super.loadCollections(this.organization.id);\n return;\n }\n\n const collections = await this.apiService.getCollections(this.organization.id);\n if (collections != null && collections.data != null && collections.data.length) {\n const collectionDomains = collections.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collectionDomains);\n } else {\n this.collections = [];\n }\n\n const unassignedCollection = new CollectionView();\n unassignedCollection.name = this.i18nService.t('unassigned');\n unassignedCollection.id = 'unassigned';\n unassignedCollection.organizationId = this.organization.id;\n unassignedCollection.readOnly = true;\n this.collections.push(unassignedCollection);\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n collapse(grouping: CollectionView) {\n super.collapse(grouping, 'org_');\n }\n\n isCollapsed(grouping: CollectionView) {\n return super.isCollapsed(grouping, 'org_');\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { BulkDeleteComponent } from './bulk-delete.component';\nimport { BulkMoveComponent } from './bulk-move.component';\nimport { BulkRestoreComponent } from './bulk-restore.component';\nimport { BulkShareComponent } from './bulk-share.component';\nimport { CiphersComponent } from './ciphers.component';\n\n@Component({\n selector: 'app-vault-bulk-actions',\n templateUrl: 'bulk-actions.component.html',\n})\nexport class BulkActionsComponent {\n @Input() ciphersComponent: CiphersComponent;\n @Input() deleted: boolean;\n @Input() organization: Organization;\n\n @ViewChild('bulkDeleteTemplate', { read: ViewContainerRef, static: true }) bulkDeleteModalRef: ViewContainerRef;\n @ViewChild('bulkRestoreTemplate', { read: ViewContainerRef, static: true }) bulkRestoreModalRef: ViewContainerRef;\n @ViewChild('bulkMoveTemplate', { read: ViewContainerRef, static: true }) bulkMoveModalRef: ViewContainerRef;\n @ViewChild('bulkShareTemplate', { read: ViewContainerRef, static: true }) bulkShareModalRef: ViewContainerRef;\n\n constructor(private toasterService: ToasterService, private i18nService: I18nService,\n private modalService: ModalService, private passwordRepromptService: PasswordRepromptService) { }\n\n async bulkDelete() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkDeleteComponent, this.bulkDeleteModalRef, comp => {\n comp.permanent = this.deleted;\n comp.cipherIds = selectedIds;\n comp.organization = this.organization;\n comp.onDeleted.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async bulkRestore() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkRestoreComponent, this.bulkRestoreModalRef, comp => {\n comp.cipherIds = selectedIds;\n comp.onRestored.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async bulkShare() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedCiphers = this.ciphersComponent.getSelected();\n if (selectedCiphers.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkShareComponent, this.bulkShareModalRef, comp => {\n comp.ciphers = selectedCiphers;\n comp.onShared.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async bulkMove() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkMoveComponent, this.bulkMoveModalRef, comp => {\n comp.cipherIds = selectedIds;\n comp.onMoved.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n selectAll(select: boolean) {\n this.ciphersComponent.selectAll(select);\n }\n\n private async promptPassword() {\n const selectedCiphers = this.ciphersComponent.getSelected();\n const notProtected = !selectedCiphers.find(cipher => cipher.reprompt !== CipherRepromptType.None);\n\n return notProtected || await this.passwordRepromptService.showPasswordPrompt();\n }\n}\n","
","import Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendFileData } from '../data/sendFileData';\n\nimport { SendFileView } from '../view/sendFileView';\n\nexport class SendFile extends Domain {\n id: string;\n size: string;\n sizeName: string;\n fileName: EncString;\n\n constructor(obj?: SendFileData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n sizeName: null,\n fileName: null,\n }, alreadyEncrypted, ['id', 'sizeName']);\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new SendFileView(this), {\n fileName: null,\n }, null, key);\n return view;\n }\n}\n","import Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendTextData } from '../data/sendTextData';\n\nimport { SendTextView } from '../view/sendTextView';\n\nexport class SendText extends Domain {\n text: EncString;\n hidden: boolean;\n\n constructor(obj?: SendTextData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.hidden = obj.hidden;\n this.buildDomainModel(this, obj, {\n text: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(key: SymmetricCryptoKey): Promise {\n return this.decryptObj(new SendTextView(this), {\n text: null,\n }, null, key);\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherWithIdRequest extends CipherRequest {\n id: string;\n\n constructor(cipher: Cipher) {\n super(cipher);\n this.id = cipher.id;\n }\n}\n","import { Folder } from '../domain/folder';\n\nexport class FolderRequest {\n name: string;\n\n constructor(folder: Folder) {\n this.name = folder.name ? folder.name.encryptedString : null;\n }\n}\n","import { FolderResponse } from '../response/folderResponse';\n\nexport class FolderData {\n id: string;\n userId: string;\n name: string;\n revisionDate: string;\n\n constructor(response: FolderResponse, userId: string) {\n this.userId = userId;\n this.name = response.name;\n this.id = response.id;\n this.revisionDate = response.revisionDate;\n }\n}\n","import { FolderData } from '../data/folderData';\n\nimport { FolderView } from '../view/folderView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nexport class Folder extends Domain {\n id: string;\n name: EncString;\n revisionDate: Date;\n\n constructor(obj?: FolderData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n }, alreadyEncrypted, ['id']);\n\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n }\n\n decrypt(): Promise {\n return this.decryptObj(new FolderView(this), {\n name: null,\n }, null);\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Directive({\n selector: '[appSelectCopy]',\n})\nexport class SelectCopyDirective {\n constructor(private el: ElementRef, private platformUtilsService: PlatformUtilsService) { }\n\n @HostListener('copy') onCopy() {\n if (window == null) {\n return;\n }\n let copyText = '';\n const selection = window.getSelection();\n for (let i = 0; i < selection.rangeCount; i++) {\n const range = selection.getRangeAt(i);\n const text = range.toString();\n\n // The selection should only contain one line of text. In some cases however, the\n // selection contains newlines and space characters from the indentation of following\n // sibling nodes. To avoid copying passwords containing trailing newlines and spaces\n // that aren't part of the password, the selection has to be trimmed.\n let stringEndPos = text.length;\n const newLinePos = text.search(/(?:\\r\\n|\\r|\\n)/);\n if (newLinePos > -1) {\n const otherPart = text.substr(newLinePos).trim();\n if (otherPart === '') {\n stringEndPos = newLinePos;\n }\n }\n copyText += text.substring(0, stringEndPos);\n }\n this.platformUtilsService.copyToClipboard(copyText, { window: window });\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { Utils } from 'jslib-common/misc/utils';\n\n/*\n An updated pipe that sanitizes HTML, highlights numbers and special characters (in different colors each)\n and handles Unicode / Emoji characters correctly.\n*/\n@Pipe({ name: 'colorPassword' })\nexport class ColorPasswordPipe implements PipeTransform {\n transform(password: string) {\n // Convert to an array to handle cases that stings have special characters, ie: emoji.\n const passwordArray = Array.from(password);\n let colorizedPassword = '';\n for (let i = 0; i < passwordArray.length; i++) {\n let character = passwordArray[i];\n let isSpecial = false;\n // Sanitize HTML first.\n switch (character) {\n case '&':\n character = '&';\n isSpecial = true;\n break;\n case '<':\n character = '<';\n isSpecial = true;\n break;\n case '>':\n character = '>';\n isSpecial = true;\n break;\n case ' ':\n character = ' ';\n isSpecial = true;\n break;\n default:\n break;\n }\n let type = 'letter';\n if (character.match(Utils.regexpEmojiPresentation)) {\n type = 'emoji';\n } else if (isSpecial || character.match(/[^\\w ]/)) {\n type = 'special';\n } else if (character.match(/\\d/)) {\n type = 'number';\n }\n colorizedPassword += '' + character + '';\n }\n return colorizedPassword;\n }\n}\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 487;","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Injectable()\nexport class ProviderGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const provider = await this.userService.getProvider(route.params.providerId);\n if (provider == null) {\n this.router.navigate(['/']);\n return false;\n }\n if (!provider.isProviderAdmin && !provider.enabled) {\n this.toasterService.popAsync('error', null, this.i18nService.t('providerIsDisabled'));\n this.router.navigate(['/']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Permissions } from 'jslib-common/enums/permissions';\n\n@Injectable()\nexport class ProviderTypeGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const provider = await this.userService.getProvider(route.params.providerId);\n const permissions = route.data == null ? null : route.data.permissions as Permissions[];\n\n if (\n (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && provider.canAccessEventLogs) ||\n (permissions.indexOf(Permissions.ManageProvider) !== -1 && provider.isProviderAdmin) ||\n (permissions.indexOf(Permissions.ManageUsers) !== -1 && provider.canManageUsers)\n ) {\n return true;\n }\n\n this.router.navigate(['/providers', provider.id]);\n return false;\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Provider } from 'jslib-common/models/domain/provider';\n\n@Component({\n selector: 'providers-layout',\n templateUrl: 'providers-layout.component.html',\n})\nexport class ProvidersLayoutComponent {\n\n provider: Provider;\n private providerId: string;\n\n constructor(private route: ActivatedRoute, private userService: UserService) { }\n\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n this.route.params.subscribe(async params => {\n this.providerId = params.providerId;\n await this.load();\n });\n }\n\n async load() {\n this.provider = await this.userService.getProvider(this.providerId);\n }\n\n get showMenuBar() {\n return this.showManageTab || this.showSettingsTab;\n }\n\n get showManageTab() {\n return this.provider.canManageUsers || this.provider.canAccessEventLogs;\n }\n\n get showSettingsTab() {\n return this.provider.isProviderAdmin;\n }\n\n get manageRoute(): string {\n switch (true) {\n case this.provider.canManageUsers:\n return 'manage/people';\n case this.provider.canAccessEventLogs:\n return 'manage/events';\n }\n }\n}\n","
{{provider.name}} {{'provider' | i18n}}
{{'providerIsDisabled' | i18n}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProviderUserType } from 'jslib-common/enums/providerUserType';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport {\n ProviderOrganizationOrganizationDetailsResponse\n} from 'jslib-common/models/response/provider/providerOrganizationResponse';\n\nimport { ProviderService } from '../services/provider.service';\n\nimport { AddOrganizationComponent } from './add-organization.component';\n\nconst DisallowedPlanTypes = [PlanType.Free, PlanType.FamiliesAnnually2019, PlanType.FamiliesAnnually];\n\n@Component({\n templateUrl: 'clients.component.html',\n})\nexport class ClientsComponent implements OnInit {\n\n @ViewChild('add', { read: ViewContainerRef, static: true }) addModalRef: ViewContainerRef;\n\n providerId: any;\n searchText: string;\n addableOrganizations: Organization[];\n loading = true;\n manageOrganizations = false;\n showAddExisting = false;\n\n clients: ProviderOrganizationOrganizationDetailsResponse[];\n pagedClients: ProviderOrganizationOrganizationDetailsResponse[];\n\n protected didScroll = false;\n protected pageSize = 100;\n protected actionPromise: Promise;\n private pagedClientsCount = 0;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private apiService: ApiService, private searchService: SearchService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private toasterService: ToasterService, private validationService: ValidationService,\n private providerService: ProviderService, private logService: LogService,\n private modalService: ModalService) { }\n\n async ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.providerId = params.providerId;\n\n await this.load();\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getProviderClients(this.providerId);\n this.clients = response.data != null && response.data.length > 0 ? response.data : [];\n this.manageOrganizations = (await this.userService.getProvider(this.providerId)).type === ProviderUserType.ProviderAdmin;\n const candidateOrgs = (await this.userService.getAllOrganizations()).filter(o => o.isOwner && o.providerId == null);\n const allowedOrgsIds = await Promise.all(candidateOrgs.map(o => this.apiService.getOrganization(o.id))).then(orgs =>\n orgs.filter(o => !DisallowedPlanTypes.includes(o.planType))\n .map(o => o.id));\n this.addableOrganizations = candidateOrgs.filter(o => allowedOrgsIds.includes(o.id));\n\n this.showAddExisting = this.addableOrganizations.length !== 0;\n this.loading = false;\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.clients && this.clients.length > this.pageSize;\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n async resetPaging() {\n this.pagedClients = [];\n this.loadMore();\n }\n\n\n loadMore() {\n if (!this.clients || this.clients.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedClients.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedClientsCount > this.pageSize) {\n pagedSize = this.pagedClientsCount;\n }\n if (this.clients.length > pagedLength) {\n this.pagedClients = this.pagedClients.concat(this.clients.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedClientsCount = this.pagedClients.length;\n this.didScroll = this.pagedClients.length > this.pageSize;\n }\n\n async addExistingOrganization() {\n const [modal] = await this.modalService.openViewRef(AddOrganizationComponent, this.addModalRef, comp => {\n comp.providerId = this.providerId;\n comp.organizations = this.addableOrganizations;\n comp.onAddedOrganization.subscribe(async () => {\n try {\n await this.load();\n modal.close();\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n });\n });\n }\n\n async remove(organization: ProviderOrganizationOrganizationDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('detachOrganizationConfirmation'), organization.organizationName,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.providerService.detachOrganizastion(this.providerId, organization.id);\n try {\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('detachedOrganization', organization.organizationName));\n await this.load();\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n}\n","

{{'clients' | i18n}}

{{'newClientOrganization' | i18n}}
{{'loading' | i18n}}

{{'noClientsInList' | i18n}}

{{o.organizationName}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ProviderService } from '../services/provider.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { Provider } from 'jslib-common/models/domain/provider';\n\nimport { PlanType } from 'jslib-common/enums/planType';\n\n@Component({\n selector: 'provider-add-organization',\n templateUrl: 'add-organization.component.html',\n})\nexport class AddOrganizationComponent implements OnInit {\n\n @Input() providerId: string;\n @Input() organizations: Organization[];\n @Output() onAddedOrganization = new EventEmitter();\n\n provider: Provider;\n formPromise: Promise;\n loading = true;\n\n constructor(private userService: UserService, private providerService: ProviderService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private validationService: ValidationService,\n private apiService: ApiService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n if (this.providerId == null) {\n return;\n }\n\n this.provider = await this.userService.getProvider(this.providerId);\n\n this.loading = false;\n }\n\n async add(organization: Organization) {\n if (this.formPromise) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('addOrganizationConfirmation', organization.name, this.provider.name), organization.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n\n if (!confirmed) {\n return false;\n }\n\n try {\n this.formPromise = this.providerService.addOrganizationToProvider(this.providerId, organization.id);\n await this.formPromise;\n } catch (e) {\n this.validationService.showError(e);\n return;\n } finally {\n this.formPromise = null;\n }\n\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationJoinedProvider'));\n this.onAddedOrganization.emit();\n }\n}\n","

{{'addExistingOrganization' | i18n}}

{{'loading' | i18n}}
{{o.name}}
","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { OrganizationPlansComponent } from 'src/app/settings/organization-plans.component';\n\n@Component({\n selector: 'app-create-organization',\n templateUrl: 'create-organization.component.html',\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true }) orgPlansComponent: OrganizationPlansComponent;\n\n providerId: string;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.providerId = params.providerId;\n });\n }\n}\n","

{{'newClientOrganization' | i18n}}

{{'newClientOrganizationDesc' | i18n}}

","export class WebConstants {\n static readonly stripeTestKey = 'pk_test_KPoCfZXu7mznb9uSCPZ2JpTD';\n static readonly stripeLiveKey = 'pk_live_bpN0P37nMxrMQkcaHXtAybJk';\n static readonly btSandboxKey = 'sandbox_r72q8jq6_9pnxkwm75f87sdc2';\n static readonly btProductionKey = 'production_qfbsv8kc_njj2zjtyngtjmbjd';\n static readonly paypal = {\n businessIdProduction: '4ZDA7DLUUJGMN',\n businessIdSandbox: 'AD3LAUZSNVPJY',\n buttonActionProduction: 'https://www.paypal.com/cgi-bin/webscr',\n buttonActionSandbox: 'https://www.sandbox.paypal.com/cgi-bin/webscr',\n };\n}\n","import Domain from './domainBase';\n\nexport class MasterPasswordPolicyOptions extends Domain {\n minComplexity: number = 0;\n minLength: number = 0;\n requireUpper: boolean = false;\n requireLower: boolean = false;\n requireNumbers: boolean = false;\n requireSpecial: boolean = false;\n}\n","import { TaxInfoUpdateRequest } from './taxInfoUpdateRequest';\n\nexport class OrganizationTaxInfoUpdateRequest extends TaxInfoUpdateRequest {\n taxId: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n}\n","export class TaxInfoUpdateRequest {\n country: string;\n postalCode: string;\n}\n","export { AttachmentResponse } from './attachmentResponse';\nexport { CipherResponse } from './cipherResponse';\nexport { CollectionResponse } from './collectionResponse';\nexport { DeviceResponse } from './deviceResponse';\nexport { DomainsResponse } from './domainsResponse';\nexport { ErrorResponse } from './errorResponse';\nexport { FolderResponse } from './folderResponse';\nexport { GlobalDomainResponse } from './globalDomainResponse';\nexport { IdentityTokenResponse } from './identityTokenResponse';\nexport { IdentityTwoFactorResponse } from './identityTwoFactorResponse';\nexport { KeysResponse } from './keysResponse';\nexport { ListResponse } from './listResponse';\nexport { ProfileOrganizationResponse } from './profileOrganizationResponse';\nexport { ProfileResponse } from './profileResponse';\nexport { SyncResponse } from './syncResponse';\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class CardApi extends BaseResponse {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.cardholderName = this.getResponseProperty('CardholderName');\n this.brand = this.getResponseProperty('Brand');\n this.number = this.getResponseProperty('Number');\n this.expMonth = this.getResponseProperty('ExpMonth');\n this.expYear = this.getResponseProperty('ExpYear');\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { FieldType } from '../../enums/fieldType';\n\nexport class FieldApi extends BaseResponse {\n name: string;\n value: string;\n type: FieldType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.value = this.getResponseProperty('Value');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class IdentityApi extends BaseResponse {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.title = this.getResponseProperty('Title');\n this.firstName = this.getResponseProperty('FirstName');\n this.middleName = this.getResponseProperty('MiddleName');\n this.lastName = this.getResponseProperty('LastName');\n this.address1 = this.getResponseProperty('Address1');\n this.address2 = this.getResponseProperty('Address2');\n this.address3 = this.getResponseProperty('Address3');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n this.company = this.getResponseProperty('Company');\n this.email = this.getResponseProperty('Email');\n this.phone = this.getResponseProperty('Phone');\n this.ssn = this.getResponseProperty('SSN');\n this.username = this.getResponseProperty('Username');\n this.passportNumber = this.getResponseProperty('PassportNumber');\n this.licenseNumber = this.getResponseProperty('LicenseNumber');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { LoginUriApi } from './loginUriApi';\n\nexport class LoginApi extends BaseResponse {\n uris: LoginUriApi[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.username = this.getResponseProperty('Username');\n this.password = this.getResponseProperty('Password');\n this.passwordRevisionDate = this.getResponseProperty('PasswordRevisionDate');\n this.totp = this.getResponseProperty('Totp');\n this.autofillOnPageLoad = this.getResponseProperty('AutofillOnPageLoad');\n\n const uris = this.getResponseProperty('Uris');\n if (uris != null) {\n this.uris = uris.map((u: any) => new LoginUriApi(u));\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { UriMatchType } from '../../enums/uriMatchType';\n\nexport class LoginUriApi extends BaseResponse {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.uri = this.getResponseProperty('Uri');\n const match = this.getResponseProperty('Match');\n this.match = match != null ? match : null;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class SecureNoteApi extends BaseResponse {\n type: SecureNoteType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class GlobalDomainResponse extends BaseResponse {\n type: number;\n domains: string[];\n excluded: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.domains = this.getResponseProperty('Domains');\n this.excluded = this.getResponseProperty('Excluded');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n resetMasterPassword: boolean;\n privateKey: string;\n key: string;\n twoFactorToken: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.accessToken = response.access_token;\n this.expiresIn = response.expires_in;\n this.refreshToken = response.refresh_token;\n this.tokenType = response.token_type;\n\n this.resetMasterPassword = this.getResponseProperty('ResetMasterPassword');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.key = this.getResponseProperty('Key');\n this.twoFactorToken = this.getResponseProperty('TwoFactorToken');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class IdentityTwoFactorResponse extends BaseResponse {\n twoFactorProviders: TwoFactorProviderType[];\n twoFactorProviders2 = new Map();\n captchaToken: string;\n\n constructor(response: any) {\n super(response);\n this.captchaToken = this.getResponseProperty('CaptchaBypassToken');\n this.twoFactorProviders = this.getResponseProperty('TwoFactorProviders');\n const twoFactorProviders2 = this.getResponseProperty('TwoFactorProviders2');\n if (twoFactorProviders2 != null) {\n for (const prop in twoFactorProviders2) {\n if (twoFactorProviders2.hasOwnProperty(prop)) {\n this.twoFactorProviders2.set(parseInt(prop, null), twoFactorProviders2[prop]);\n }\n }\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class KeysResponse extends BaseResponse {\n privateKey: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ListResponse extends BaseResponse {\n data: T[];\n continuationToken: string;\n\n constructor(response: any, t: new (dataResponse: any) => T) {\n super(response);\n const data = this.getResponseProperty('Data');\n this.data = data == null ? [] : data.map((dr: any) => new t(dr));\n this.continuationToken = this.getResponseProperty('ContinuationToken');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class ProfileOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n hasPublicAndPrivateKeys: boolean;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n providerId: string;\n providerName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.usePolicies = this.getResponseProperty('UsePolicies');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useBusinessPortal = this.getResponseProperty('UseBusinessPortal');\n this.useSso = this.getResponseProperty('UseSso');\n this.useResetPassword = this.getResponseProperty('UseResetPassword');\n this.selfHost = this.getResponseProperty('SelfHost');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.key = this.getResponseProperty('Key');\n this.hasPublicAndPrivateKeys = this.getResponseProperty('HasPublicAndPrivateKeys');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n this.ssoBound = this.getResponseProperty('SsoBound');\n this.identifier = this.getResponseProperty('Identifier');\n this.permissions = new PermissionsApi(this.getResponseProperty('permissions'));\n this.resetPasswordEnrolled = this.getResponseProperty('ResetPasswordEnrolled');\n this.userId = this.getResponseProperty('UserId');\n this.providerId = this.getResponseProperty('ProviderId');\n this.providerName = this.getResponseProperty('ProviderName');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\nimport { CollectionDetailsResponse } from './collectionResponse';\nimport { DomainsResponse } from './domainsResponse';\nimport { FolderResponse } from './folderResponse';\nimport { PolicyResponse } from './policyResponse';\nimport { ProfileResponse } from './profileResponse';\nimport { SendResponse } from './sendResponse';\n\nexport class SyncResponse extends BaseResponse {\n profile?: ProfileResponse;\n folders: FolderResponse[] = [];\n collections: CollectionDetailsResponse[] = [];\n ciphers: CipherResponse[] = [];\n domains?: DomainsResponse;\n policies?: PolicyResponse[] = [];\n sends: SendResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n const profile = this.getResponseProperty('Profile');\n if (profile != null) {\n this.profile = new ProfileResponse(profile);\n }\n\n const folders = this.getResponseProperty('Folders');\n if (folders != null) {\n this.folders = folders.map((f: any) => new FolderResponse(f));\n }\n\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new CollectionDetailsResponse(c));\n }\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n\n const domains = this.getResponseProperty('Domains');\n if (domains != null) {\n this.domains = new DomainsResponse(domains);\n }\n\n const policies = this.getResponseProperty('Policies');\n if (policies != null) {\n this.policies = policies.map((p: any) => new PolicyResponse(p));\n }\n\n const sends = this.getResponseProperty('Sends');\n if (sends != null) {\n this.sends = sends.map((s: any) => new SendResponse(s));\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Toast, ToasterService } from 'angular2-toaster';\n\nimport { BaseAcceptComponent } from 'src/app/common/base.accept.component';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { ProviderUserAcceptRequest } from 'jslib-common/models/request/provider/providerUserAcceptRequest';\n\n@Component({\n selector: 'app-accept-provider',\n templateUrl: 'accept-provider.component.html',\n})\nexport class AcceptProviderComponent extends BaseAcceptComponent {\n providerName: string;\n\n failedMessage = 'providerInviteAcceptFailed';\n\n requiredParameters = ['providerId', 'providerUserId', 'token'];\n\n constructor(router: Router, toasterService: ToasterService, i18nService: I18nService, route: ActivatedRoute,\n userService: UserService, stateService: StateService, private apiService: ApiService) {\n super(router, toasterService, i18nService, route, userService, stateService);\n }\n\n async authedHandler(qParams: any) {\n const request = new ProviderUserAcceptRequest();\n request.token = qParams.token;\n\n await this.apiService.postProviderUserAccept(qParams.providerId, qParams.providerUserId, request);\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('providerInviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n }\n\n async unauthedHandler(qParams: any) {\n this.providerName = qParams.providerName;\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'joinProvider' | i18n}}

{{providerName}} {{email}}

{{'joinProviderDesc' | i18n}}


","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\n\nimport { EventService } from 'src/app/services/event.service';\n\nimport { BaseEventsComponent } from 'src/app/common/base.events.component';\n\n@Component({\n selector: 'provider-events',\n templateUrl: 'events.component.html',\n})\nexport class EventsComponent extends BaseEventsComponent implements OnInit {\n exportFileName: string = 'provider-events';\n providerId: string;\n\n private providerUsersUserIdMap = new Map();\n private providerUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute, eventService: EventService,\n i18nService: I18nService, toasterService: ToasterService, private userService: UserService,\n exportService: ExportService, platformUtilsService: PlatformUtilsService, private router: Router,\n logService: LogService, private userNamePipe: UserNamePipe) {\n super(eventService, i18nService, toasterService, exportService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.providerId = params.providerId;\n const provider = await this.userService.getProvider(this.providerId);\n if (provider == null || !provider.useEvents) {\n this.router.navigate(['/providers', this.providerId]);\n return;\n }\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getProviderUsers(this.providerId);\n response.data.forEach(u => {\n const name = this.userNamePipe.transform(u);\n this.providerUsersIdMap.set(u.id, { name: name, email: u.email });\n this.providerUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n protected requestEvents(startDate: string, endDate: string, continuationToken: string) {\n return this.apiService.getEventsProvider(this.providerId, startDate, endDate, continuationToken);\n }\n\n protected getUserName(r: EventResponse, userId: string) {\n return userId != null && this.providerUsersUserIdMap.has(userId) ? this.providerUsersUserIdMap.get(userId) : null;\n }\n}\n","

{{'eventLogs' | i18n}}

-
{{'loading' | i18n}}

{{'noEventsInList' | i18n}}

{{'timestamp' | i18n}} {{'device' | i18n}} {{'user' | i18n}} {{'event' | i18n}}
{{e.date | date:'medium'}} {{e.appName}}, {{e.ip}} {{e.userName}}
","import { Directive } from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { EventView } from 'jslib-common/models/view/eventView';\n\nimport { ListResponse } from 'jslib-common/models/response';\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\n\nimport { LogService } from 'jslib-common/abstractions';\nimport { EventService } from 'src/app/services/event.service';\n\n@Directive()\nexport abstract class BaseEventsComponent {\n loading = true;\n loaded = false;\n events: EventView[];\n start: string;\n end: string;\n dirtyDates: boolean = true;\n continuationToken: string;\n refreshPromise: Promise;\n exportPromise: Promise;\n morePromise: Promise;\n\n abstract readonly exportFileName: string;\n\n constructor(protected eventService: EventService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected exportService: ExportService,\n protected platformUtilsService: PlatformUtilsService, protected logService: LogService) {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n }\n\n async exportEvents() {\n if (this.appApiPromiseUnfulfilled() || this.dirtyDates) {\n return;\n }\n\n this.loading = true;\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n try {\n this.exportPromise = this.export(dates[0], dates[1]);\n\n await this.exportPromise;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n this.exportPromise = null;\n this.loading = false;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.appApiPromiseUnfulfilled()) {\n return;\n }\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n this.loading = true;\n let events: EventView[] = [];\n try {\n const promise = this.loadAndParseEvents(dates[0], dates[1], clearExisting ? null : this.continuationToken);\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n const result = await promise;\n this.continuationToken = result.continuationToken;\n events = result.events;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.dirtyDates = false;\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n\n protected abstract requestEvents(startDate: string, endDate: string, continuationToken: string): Promise>;\n protected abstract getUserName(r: EventResponse, userId: string): { name: string, email: string };\n\n protected async loadAndParseEvents(startDate: string, endDate: string, continuationToken: string) {\n const response = await this.requestEvents(startDate, endDate, continuationToken);\n\n const events = await Promise.all(response.data.map(async r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = this.getUserName(r, userId);\n return new EventView({\n message: eventInfo.message,\n humanReadableMessage: eventInfo.humanReadableMessage,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.i18nService.t('unknown'),\n userEmail: user != null ? user.email : '',\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n });\n }));\n return { continuationToken: response.continuationToken, events: events };\n }\n\n protected parseDates() {\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return null;\n }\n return dates;\n }\n\n protected appApiPromiseUnfulfilled() {\n return this.refreshPromise != null || this.morePromise != null || this.exportPromise != null;\n }\n\n private async export(start: string, end: string) {\n let continuationToken = this.continuationToken;\n let events = [].concat(this.events);\n\n while (continuationToken != null) {\n const result = await this.loadAndParseEvents(start, end, continuationToken);\n continuationToken = result.continuationToken;\n events = events.concat(result.events);\n }\n\n const data = await this.exportService.getEventExport(events);\n const fileName = this.exportService.getFileName(this.exportFileName, 'csv');\n this.platformUtilsService.saveFile(window, data, { type: 'text/plain' }, fileName);\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Provider } from 'jslib-common/models/domain/provider';\n\n@Component({\n selector: 'provider-manage',\n templateUrl: 'manage.component.html',\n})\nexport class ManageComponent implements OnInit {\n provider: Provider;\n accessEvents = false;\n\n constructor(private route: ActivatedRoute, private userService: UserService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.provider = await this.userService.getProvider(params.providerId);\n this.accessEvents = this.provider.useEvents;\n });\n }\n}\n"," ","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ProviderUserStatusType } from 'jslib-common/enums/providerUserStatusType';\nimport { ProviderUserType } from 'jslib-common/enums/providerUserType';\n\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { ProviderUserUserDetailsResponse } from 'jslib-common/models/response/provider/providerUserResponse';\n\nimport { ProviderUserBulkRequest } from 'jslib-common/models/request/provider/providerUserBulkRequest';\nimport { ProviderUserConfirmRequest } from 'jslib-common/models/request/provider/providerUserConfirmRequest';\nimport { ProviderUserBulkResponse } from 'jslib-common/models/response/provider/providerUserBulkResponse';\n\nimport { BasePeopleComponent } from 'src/app/common/base.people.component';\nimport { BulkStatusComponent } from 'src/app/organizations/manage/bulk/bulk-status.component';\nimport { EntityEventsComponent } from 'src/app/organizations/manage/entity-events.component';\nimport { BulkConfirmComponent } from './bulk/bulk-confirm.component';\nimport { BulkRemoveComponent } from './bulk/bulk-remove.component';\nimport { UserAddEditComponent } from './user-add-edit.component';\n\n@Component({\n selector: 'provider-people',\n templateUrl: 'people.component.html',\n})\nexport class PeopleComponent extends BasePeopleComponent implements OnInit {\n\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('groupsTemplate', { read: ViewContainerRef, static: true }) groupsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n @ViewChild('bulkStatusTemplate', { read: ViewContainerRef, static: true }) bulkStatusModalRef: ViewContainerRef;\n @ViewChild('bulkConfirmTemplate', { read: ViewContainerRef, static: true }) bulkConfirmModalRef: ViewContainerRef;\n @ViewChild('bulkRemoveTemplate', { read: ViewContainerRef, static: true }) bulkRemoveModalRef: ViewContainerRef;\n\n userType = ProviderUserType;\n userStatusType = ProviderUserStatusType;\n providerId: string;\n accessEvents = false;\n\n constructor(apiService: ApiService, private route: ActivatedRoute,\n i18nService: I18nService, modalService: ModalService,\n platformUtilsService: PlatformUtilsService, toasterService: ToasterService,\n cryptoService: CryptoService, private userService: UserService, private router: Router,\n storageService: StorageService, searchService: SearchService, validationService: ValidationService,\n logService: LogService, searchPipe: SearchPipe, userNamePipe: UserNamePipe) {\n super(apiService, searchService, i18nService, platformUtilsService, toasterService, cryptoService,\n storageService, validationService, modalService, logService, searchPipe, userNamePipe);\n }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.providerId = params.providerId;\n const provider = await this.userService.getProvider(this.providerId);\n\n if (!provider.canManageUsers) {\n this.router.navigate(['../'], { relativeTo: this.route });\n return;\n }\n\n this.accessEvents = provider.useEvents;\n\n await this.load();\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter(u => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === ProviderUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n getUsers(): Promise> {\n return this.apiService.getProviderUsers(this.providerId);\n }\n\n deleteUser(id: string): Promise {\n return this.apiService.deleteProviderUser(this.providerId, id);\n }\n\n reinviteUser(id: string): Promise {\n return this.apiService.postProviderUserReinvite(this.providerId, id);\n }\n\n async confirmUser(user: ProviderUserUserDetailsResponse, publicKey: Uint8Array): Promise {\n const providerKey = await this.cryptoService.getProviderKey(this.providerId);\n const key = await this.cryptoService.rsaEncrypt(providerKey.key, publicKey.buffer);\n const request = new ProviderUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postProviderUserConfirm(this.providerId, user.id, request);\n }\n\n async edit(user: ProviderUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(UserAddEditComponent, this.addEditModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.providerId = this.providerId;\n comp.providerUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedUser.subscribe(() => {\n modal.close();\n this.removeUser(user);\n });\n });\n }\n\n async events(user: ProviderUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.providerId = this.providerId;\n comp.entityId = user.id;\n comp.showUser = false;\n comp.entity = 'user';\n });\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkRemoveComponent, this.bulkRemoveModalRef, comp => {\n comp.providerId = this.providerId;\n comp.users = this.getCheckedUsers();\n });\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter(u => u.status === ProviderUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('noSelectedUsersApplicable'));\n return;\n }\n\n try {\n const request = new ProviderUserBulkRequest(filteredUsers.map(user => user.id));\n const response = this.apiService.postManyProviderUserReinvite(this.providerId, request);\n this.showBulkStatus(users, filteredUsers, response, this.i18nService.t('bulkReinviteMessage'));\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkConfirmComponent, this.bulkConfirmModalRef, comp => {\n comp.providerId = this.providerId;\n comp.users = this.getCheckedUsers();\n });\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n private async showBulkStatus(users: ProviderUserUserDetailsResponse[], filteredUsers: ProviderUserUserDetailsResponse[],\n request: Promise>, successfullMessage: string) {\n\n const [modal, childComponent] = await this.modalService.openViewRef(BulkStatusComponent, this.bulkStatusModalRef, comp => {\n comp.loading = true;\n });\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n modal.onShown.subscribe(() => {\n if (close) {\n modal.close();\n }\n });\n\n try {\n const response = await request;\n\n if (modal) {\n const keyedErrors: any = response.data.filter(r => r.error !== '').reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map(user => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t('bulkFilteredMessage');\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id),\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n modal.close();\n }\n }\n}\n","

{{'people' | i18n}}

{{'loading' | i18n}}

{{'noUsersInList' | i18n}}

{{'providerUsersNeedConfirmed' | i18n}}
{{u.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{u.name}} {{'userUsingTwoStep' | i18n}} {{'providerAdmin' | i18n}} {{'serviceUser' | i18n}} {{'custom' | i18n}}
","import {\n Directive,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ValidationService } from 'jslib-angular/services/validation.service';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { ProviderUserStatusType } from 'jslib-common/enums/providerUserStatusType';\nimport { ProviderUserType } from 'jslib-common/enums/providerUserType';\n\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\nimport { ProviderUserUserDetailsResponse } from 'jslib-common/models/response/provider/providerUserResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { UserConfirmComponent } from '../organizations/manage/user-confirm.component';\n\ntype StatusType = OrganizationUserStatusType | ProviderUserStatusType;\n\nconst MaxCheckedCount = 500;\n\n@Directive()\nexport abstract class BasePeopleComponent {\n\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n\n get allCount() {\n return this.allUsers != null ? this.allUsers.length : 0;\n }\n\n get invitedCount() {\n return this.statusMap.has(this.userStatusType.Invited) ?\n this.statusMap.get(this.userStatusType.Invited).length : 0;\n }\n\n get acceptedCount() {\n return this.statusMap.has(this.userStatusType.Accepted) ?\n this.statusMap.get(this.userStatusType.Accepted).length : 0;\n }\n\n get confirmedCount() {\n return this.statusMap.has(this.userStatusType.Confirmed) ?\n this.statusMap.get(this.userStatusType.Confirmed).length : 0;\n }\n\n get showConfirmUsers(): boolean {\n return this.allUsers != null && this.statusMap != null && this.allUsers.length > 1 &&\n this.confirmedCount > 0 && this.confirmedCount < 3 && this.acceptedCount > 0;\n }\n\n get showBulkConfirmUsers(): boolean {\n return this.acceptedCount > 0;\n }\n\n abstract userType: typeof OrganizationUserType | typeof ProviderUserType;\n abstract userStatusType: typeof OrganizationUserStatusType | typeof ProviderUserStatusType;\n\n loading = true;\n statusMap = new Map();\n status: StatusType;\n users: UserType[] = [];\n pagedUsers: UserType[] = [];\n searchText: string;\n actionPromise: Promise;\n\n protected allUsers: UserType[] = [];\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedUsersCount = 0;\n\n constructor(protected apiService: ApiService, private searchService: SearchService,\n protected i18nService: I18nService, private platformUtilsService: PlatformUtilsService,\n protected toasterService: ToasterService, protected cryptoService: CryptoService,\n private storageService: StorageService, protected validationService: ValidationService,\n protected modalService: ModalService, private logService: LogService,\n private searchPipe: SearchPipe, protected userNamePipe: UserNamePipe) { }\n\n abstract edit(user: UserType): void;\n abstract getUsers(): Promise>;\n abstract deleteUser(id: string): Promise;\n abstract reinviteUser(id: string): Promise;\n abstract confirmUser(user: UserType, publicKey: Uint8Array): Promise;\n\n async load() {\n const response = await this.getUsers();\n this.statusMap.clear();\n for (const status of Utils.iterateEnum(this.userStatusType)) {\n this.statusMap.set(status, []);\n }\n\n this.allUsers = response.data != null && response.data.length > 0 ? response.data : [];\n this.allUsers.sort(Utils.getSortFunction(this.i18nService, 'email'));\n this.allUsers.forEach(u => {\n if (!this.statusMap.has(u.status)) {\n this.statusMap.set(u.status, [u]);\n } else {\n this.statusMap.get(u.status).push(u);\n }\n });\n this.filter(this.status);\n this.loading = false;\n }\n\n filter(status: StatusType) {\n this.status = status;\n if (this.status != null) {\n this.users = this.statusMap.get(this.status);\n } else {\n this.users = this.allUsers;\n }\n // Reset checkbox selecton\n this.selectAll(false);\n this.resetPaging();\n }\n\n loadMore() {\n if (!this.users || this.users.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedUsers.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) {\n pagedSize = this.pagedUsersCount;\n }\n if (this.users.length > pagedLength) {\n this.pagedUsers = this.pagedUsers.concat(this.users.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedUsersCount = this.pagedUsers.length;\n this.didScroll = this.pagedUsers.length > this.pageSize;\n }\n\n checkUser(user: OrganizationUserUserDetailsResponse, select?: boolean) {\n (user as any).checked = select == null ? !(user as any).checked : select;\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n\n const filteredUsers = this.searchPipe.transform(this.users, this.searchText, 'name', 'email', 'id');\n\n const selectCount = select && filteredUsers.length > MaxCheckedCount\n ? MaxCheckedCount\n : filteredUsers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkUser(filteredUsers[i], select);\n }\n }\n\n async resetPaging() {\n this.pagedUsers = [];\n this.loadMore();\n }\n\n invite() {\n this.edit(null);\n }\n\n async remove(user: UserType) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.userNamePipe.transform(user),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.deleteUser(user.id);\n try {\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.userNamePipe.transform(user)));\n this.removeUser(user);\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async reinvite(user: UserType) {\n if (this.actionPromise != null) {\n return;\n }\n\n this.actionPromise = this.reinviteUser(user.id);\n try {\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', this.userNamePipe.transform(user)));\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async confirm(user: UserType) {\n function updateUser(self: BasePeopleComponent) {\n user.status = self.userStatusType.Confirmed;\n const mapIndex = self.statusMap.get(self.userStatusType.Accepted).indexOf(user);\n if (mapIndex > -1) {\n self.statusMap.get(self.userStatusType.Accepted).splice(mapIndex, 1);\n self.statusMap.get(self.userStatusType.Confirmed).push(user);\n }\n }\n\n const confirmUser = async (publicKey: Uint8Array) => {\n try {\n this.actionPromise = this.confirmUser(user, publicKey);\n await this.actionPromise;\n updateUser(this);\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.userNamePipe.transform(user)));\n } catch (e) {\n this.validationService.showError(e);\n throw e;\n } finally {\n this.actionPromise = null;\n }\n };\n\n if (this.actionPromise != null) {\n return;\n }\n\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(UserConfirmComponent, this.confirmModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.userId = user != null ? user.userId : null;\n comp.publicKey = publicKey;\n comp.onConfirmedUser.subscribe(async () => {\n try {\n await confirmUser(publicKey);\n modal.close();\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n });\n });\n return;\n }\n\n try {\n const fingerprint = await this.cryptoService.getFingerprint(user.userId, publicKey.buffer);\n this.logService.info(`User's fingerprint: ${fingerprint.join('-')}`);\n } catch { }\n await confirmUser(publicKey);\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.users && this.users.length > this.pageSize;\n }\n\n protected getCheckedUsers() {\n return this.users.filter(u => (u as any).checked);\n }\n\n protected removeUser(user: UserType) {\n let index = this.users.indexOf(user);\n if (index > -1) {\n this.users.splice(index, 1);\n this.resetPaging();\n }\n if (this.statusMap.has(user.status)) {\n index = this.statusMap.get(user.status).indexOf(user);\n if (index > -1) {\n this.statusMap.get(user.status).splice(index, 1);\n }\n }\n }\n\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\n@Component({\n selector: 'app-user-confirm',\n templateUrl: 'user-confirm.component.html',\n})\nexport class UserConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() publicKey: Uint8Array;\n @Output() onConfirmedUser = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n constructor(private cryptoService: CryptoService, private storageService: StorageService) { }\n\n async ngOnInit() {\n try {\n if (this.publicKey != null) {\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, this.publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch { }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n this.onConfirmedUser.emit();\n }\n}\n","

{{'confirmUser' | i18n}} {{name}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{fingerprint}}

","import {\n Component,\n Input,\n} from '@angular/core';\n\nimport { ProviderUserBulkConfirmRequest } from 'jslib-common/models/request/provider/providerUserBulkConfirmRequest';\nimport { ProviderUserBulkRequest } from 'jslib-common/models/request/provider/providerUserBulkRequest';\n\nimport { ProviderUserStatusType } from 'jslib-common/enums/providerUserStatusType';\n\nimport { BulkConfirmComponent as OrganizationBulkConfirmComponent } from 'src/app/organizations/manage/bulk/bulk-confirm.component';\nimport { BulkUserDetails } from 'src/app/organizations/manage/bulk/bulk-status.component';\n\n@Component({\n templateUrl: '/src/app/organizations/manage/bulk/bulk-confirm.component.html',\n})\nexport class BulkConfirmComponent extends OrganizationBulkConfirmComponent {\n\n @Input() providerId: string;\n\n protected isAccepted(user: BulkUserDetails) {\n return user.status === ProviderUserStatusType.Accepted;\n }\n\n protected async getPublicKeys() {\n const request = new ProviderUserBulkRequest(this.filteredUsers.map(user => user.id));\n return await this.apiService.postProviderUsersPublicKey(this.providerId, request);\n }\n\n protected getCryptoKey() {\n return this.cryptoService.getProviderKey(this.providerId);\n }\n\n protected async postConfirmRequest(userIdsWithKeys: any[]) {\n const request = new ProviderUserBulkConfirmRequest(userIdsWithKeys);\n return await this.apiService.postProviderUserBulkConfirm(this.providerId, request);\n }\n}\n","import {\n Component,\n Input,\n} from '@angular/core';\n\nimport { ProviderUserBulkRequest } from 'jslib-common/models/request/provider/providerUserBulkRequest';\n\nimport { BulkRemoveComponent as OrganizationBulkRemoveComponent } from 'src/app/organizations/manage/bulk/bulk-remove.component';\n\n@Component({\n templateUrl: '/src/app/organizations/manage/bulk/bulk-remove.component.html',\n})\nexport class BulkRemoveComponent extends OrganizationBulkRemoveComponent {\n\n @Input() providerId: string;\n\n async deleteUsers() {\n const request = new ProviderUserBulkRequest(this.users.map(user => user.id));\n return await this.apiService.deleteManyProviderUsers(this.providerId, request);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ProviderUserInviteRequest } from 'jslib-common/models/request/provider/providerUserInviteRequest';\n\nimport { PermissionsApi } from 'jslib-common/models/api/permissionsApi';\n\nimport { ProviderUserType } from 'jslib-common/enums/providerUserType';\nimport { ProviderUserUpdateRequest } from 'jslib-common/models/request/provider/providerUserUpdateRequest';\n\n@Component({\n selector: 'provider-user-add-edit',\n templateUrl: 'user-add-edit.component.html',\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() providerUserId: string;\n @Input() providerId: string;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n emails: string;\n type: ProviderUserType = ProviderUserType.ServiceUser;\n permissions = new PermissionsApi();\n showCustom = false;\n access: 'all' | 'selected' = 'selected';\n formPromise: Promise;\n deletePromise: Promise;\n userType = ProviderUserType;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.providerUserId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editUser');\n try {\n const user = await this.apiService.getProviderUser(this.providerId, this.providerUserId);\n this.type = user.type;\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteUser');\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new ProviderUserUpdateRequest();\n request.type = this.type;\n this.formPromise = this.apiService.putProviderUser(this.providerId, this.providerUserId, request);\n } else {\n const request = new ProviderUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.type = this.type;\n this.formPromise = this.apiService.postProviderUserInvite(this.providerId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteProviderUser(this.providerId, this.providerUserId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.name));\n this.onDeletedUser.emit();\n } catch { }\n }\n\n}\n","

{{title}} {{name}}

{{'loading' | i18n}}

{{'providerInviteUserDesc' | i18n}}

{{'inviteMultipleEmailDesc' | i18n : '20'}}

{{'userType' | i18n}}

","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'provider-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent {\n constructor(private route: ActivatedRoute, private userService: UserService,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n const provider = await this.userService.getProvider(params.providerId);\n });\n }\n}\n","
{{'settings' | i18n}}
","import { Component } from '@angular/core';\n\nimport { BaseAcceptComponent } from 'src/app/common/base.accept.component';\n\n@Component({\n selector: 'app-setup-provider',\n templateUrl: 'setup-provider.component.html',\n})\nexport class SetupProviderComponent extends BaseAcceptComponent {\n\n failedShortMessage = 'inviteAcceptFailedShort';\n failedMessage = 'inviteAcceptFailed';\n\n requiredParameters = ['providerId', 'email', 'token'];\n\n async authedHandler(qParams: any) {\n this.router.navigate(['/providers/setup'], {queryParams: qParams});\n }\n\n // tslint:disable-next-line\n async unauthedHandler(qParams: any) {}\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'setupProvider' | i18n}}

{{'setupProviderLoginDesc' | i18n}}


","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\n\nimport { ValidationService } from 'jslib-angular/services/validation.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { ProviderSetupRequest } from 'jslib-common/models/request/provider/providerSetupRequest';\n\n@Component({\n selector: 'provider-setup',\n templateUrl: 'setup.component.html',\n})\nexport class SetupComponent implements OnInit {\n loading = true;\n authed = false;\n email: string;\n formPromise: Promise;\n\n providerId: string;\n token: string;\n name: string;\n billingEmail: string;\n\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private cryptoService: CryptoService, private apiService: ApiService,\n private syncService: SyncService, private validationService: ValidationService) { }\n\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n const error = qParams.providerId == null || qParams.email == null || qParams.token == null;\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: this.i18nService.t('emergencyInviteAcceptFailed'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n return;\n }\n\n this.providerId = qParams.providerId;\n this.token = qParams.token;\n\n // Check if provider exists, redirect if it does\n try {\n const provider = await this.apiService.getProvider(this.providerId);\n if (provider.name != null) {\n this.router.navigate(['/providers', provider.id], { replaceUrl: true });\n }\n } catch (e) {\n this.validationService.showError(e);\n this.router.navigate(['/']);\n }\n });\n }\n\n async submit() {\n this.formPromise = this.doSubmit();\n await this.formPromise;\n this.formPromise = null;\n }\n\n async doSubmit() {\n try {\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n\n const request = new ProviderSetupRequest();\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.token = this.token;\n request.key = key;\n\n const provider = await this.apiService.postProviderSetup(this.providerId, request);\n this.toasterService.popAsync('success', null, this.i18nService.t('providerSetup'));\n await this.syncService.fullSync(true);\n\n this.router.navigate(['/providers', provider.id]);\n } catch (e) {\n this.validationService.showError(e);\n }\n }\n}\n","

{{'setupProvider' | i18n}}

{{'setupProviderDesc' | i18n}}

{{'generalInformation' | i18n}}

","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { ProviderUpdateRequest } from 'jslib-common/models/request/provider/providerUpdateRequest';\n\nimport { ProviderResponse } from 'jslib-common/models/response/provider/providerResponse';\n\n@Component({\n selector: 'provider-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n selfHosted = false;\n loading = true;\n provider: ProviderResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private providerId: string;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private route: ActivatedRoute,\n private syncService: SyncService, private platformUtilsService: PlatformUtilsService,\n private logService: LogService) { }\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n this.route.parent.parent.params.subscribe(async params => {\n this.providerId = params.providerId;\n try {\n this.provider = await this.apiService.getProvider(this.providerId);\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new ProviderUpdateRequest();\n request.name = this.provider.name;\n request.businessName = this.provider.businessName;\n request.billingEmail = this.provider.billingEmail;\n\n this.formPromise = this.apiService.putProvider(this.providerId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('providerUpdated'));\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n }\n}\n","

{{'myProvider' | i18n}}

{{'loading' | i18n}}
","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport {\n DatePipe,\n registerLocaleData,\n} from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { ToasterModule } from 'angular2-toaster';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\nimport { AppComponent } from './app.component';\n\nimport { AvatarComponent } from './components/avatar.component';\nimport { PasswordRepromptComponent } from './components/password-reprompt.component';\nimport { PasswordStrengthComponent } from './components/password-strength.component';\n\nimport { FooterComponent } from './layouts/footer.component';\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { NavbarComponent } from './layouts/navbar.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorOptionsComponent } from './accounts/two-factor-options.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { UpdateTempPasswordComponent } from './accounts/update-temp-password.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { BulkConfirmComponent as OrgBulkConfirmComponent } from './organizations/manage/bulk/bulk-confirm.component';\nimport { BulkRemoveComponent as OrgBulkRemoveComponent } from './organizations/manage/bulk/bulk-remove.component';\nimport { BulkStatusComponent as OrgBulkStatusComponent } from './organizations/manage/bulk/bulk-status.component';\nimport {\n CollectionAddEditComponent as OrgCollectionAddEditComponent,\n} from './organizations/manage/collection-add-edit.component';\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EntityEventsComponent as OrgEntityEventsComponent } from './organizations/manage/entity-events.component';\nimport { EntityUsersComponent as OrgEntityUsersComponent } from './organizations/manage/entity-users.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupAddEditComponent as OrgGroupAddEditComponent } from './organizations/manage/group-add-edit.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\nimport { PolicyEditComponent as OrgPolicyEditComponent } from './organizations/manage/policy-edit.component';\nimport { ResetPasswordComponent as OrgResetPasswordComponent } from './organizations/manage/reset-password.component';\nimport { UserAddEditComponent as OrgUserAddEditComponent } from './organizations/manage/user-add-edit.component';\nimport { UserConfirmComponent as OrgUserConfirmComponent } from './organizations/manage/user-confirm.component';\nimport { UserGroupsComponent as OrgUserGroupsComponent } from './organizations/manage/user-groups.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { AdjustSeatsComponent } from './organizations/settings/adjust-seats.component';\nimport { ChangePlanComponent } from './organizations/settings/change-plan.component';\nimport { DeleteOrganizationComponent } from './organizations/settings/delete-organization.component';\nimport { DownloadLicenseComponent } from './organizations/settings/download-license.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { AddEditComponent as OrgAddEditComponent } from './organizations/vault/add-edit.component';\nimport { AttachmentsComponent as OrgAttachmentsComponent } from './organizations/vault/attachments.component';\nimport { CiphersComponent as OrgCiphersComponent } from './organizations/vault/ciphers.component';\nimport { CollectionsComponent as OrgCollectionsComponent } from './organizations/vault/collections.component';\nimport { GroupingsComponent as OrgGroupingsComponent } from './organizations/vault/groupings.component';\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { AddEditComponent as SendAddEditComponent } from './send/add-edit.component';\nimport { EffluxDatesComponent as SendEffluxDatesComponent } from './send/efflux-dates.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { AddCreditComponent } from './settings/add-credit.component';\nimport { AdjustPaymentComponent } from './settings/adjust-payment.component';\nimport { AdjustStorageComponent } from './settings/adjust-storage.component';\nimport { ApiKeyComponent } from './settings/api-key.component';\nimport { ChangeEmailComponent } from './settings/change-email.component';\nimport { ChangeKdfComponent } from './settings/change-kdf.component';\nimport { ChangePasswordComponent } from './settings/change-password.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DeauthorizeSessionsComponent } from './settings/deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './settings/delete-account.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { EmergencyAccessAddEditComponent } from './settings/emergency-access-add-edit.component';\nimport { EmergencyAccessAttachmentsComponent } from './settings/emergency-access-attachments.component';\nimport { EmergencyAccessConfirmComponent } from './settings/emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './settings/emergency-access-takeover.component';\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\nimport { EmergencyAddEditComponent } from './settings/emergency-add-edit.component';\nimport { LinkSsoComponent } from './settings/link-sso.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationPlansComponent } from './settings/organization-plans.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PaymentComponent } from './settings/payment.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { ProfileComponent } from './settings/profile.component';\nimport { PurgeVaultComponent } from './settings/purge-vault.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TaxInfoComponent } from './settings/tax-info.component';\nimport { TwoFactorAuthenticatorComponent } from './settings/two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './settings/two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './settings/two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './settings/two-factor-recovery.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { TwoFactorVerifyComponent } from './settings/two-factor-verify.component';\nimport { TwoFactorWebAuthnComponent } from './settings/two-factor-webauthn.component';\nimport { TwoFactorYubiKeyComponent } from './settings/two-factor-yubikey.component';\nimport { UpdateKeyComponent } from './settings/update-key.component';\nimport { UpdateLicenseComponent } from './settings/update-license.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\nimport { VerifyEmailComponent } from './settings/verify-email.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorHistoryComponent } from './tools/password-generator-history.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { AddEditComponent } from './vault/add-edit.component';\nimport { AttachmentsComponent } from './vault/attachments.component';\nimport { BulkActionsComponent } from './vault/bulk-actions.component';\nimport { BulkDeleteComponent } from './vault/bulk-delete.component';\nimport { BulkMoveComponent } from './vault/bulk-move.component';\nimport { BulkRestoreComponent } from './vault/bulk-restore.component';\nimport { BulkShareComponent } from './vault/bulk-share.component';\nimport { CiphersComponent } from './vault/ciphers.component';\nimport { CollectionsComponent } from './vault/collections.component';\nimport { FolderAddEditComponent } from './vault/folder-add-edit.component';\nimport { GroupingsComponent } from './vault/groupings.component';\nimport { ShareComponent } from './vault/share.component';\nimport { VaultComponent } from './vault/vault.component';\n\nimport { ProvidersComponent } from './providers/providers.component';\n\nimport { CalloutComponent } from 'jslib-angular/components/callout.component';\nimport { IconComponent } from 'jslib-angular/components/icon.component';\n\nimport { A11yTitleDirective } from 'jslib-angular/directives/a11y-title.directive';\nimport { ApiActionDirective } from 'jslib-angular/directives/api-action.directive';\nimport { AutofocusDirective } from 'jslib-angular/directives/autofocus.directive';\nimport { BlurClickDirective } from 'jslib-angular/directives/blur-click.directive';\nimport { BoxRowDirective } from 'jslib-angular/directives/box-row.directive';\nimport { FallbackSrcDirective } from 'jslib-angular/directives/fallback-src.directive';\nimport { InputVerbatimDirective } from 'jslib-angular/directives/input-verbatim.directive';\nimport { SelectCopyDirective } from 'jslib-angular/directives/select-copy.directive';\nimport { StopClickDirective } from 'jslib-angular/directives/stop-click.directive';\nimport { StopPropDirective } from 'jslib-angular/directives/stop-prop.directive';\nimport { TrueFalseValueDirective } from 'jslib-angular/directives/true-false-value.directive';\n\nimport { ColorPasswordPipe } from 'jslib-angular/pipes/color-password.pipe';\nimport { I18nPipe } from 'jslib-angular/pipes/i18n.pipe';\nimport { SearchCiphersPipe } from 'jslib-angular/pipes/search-ciphers.pipe';\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport localeAz from '@angular/common/locales/az';\nimport localeBg from '@angular/common/locales/bg';\nimport localeCa from '@angular/common/locales/ca';\nimport localeCs from '@angular/common/locales/cs';\nimport localeDa from '@angular/common/locales/da';\nimport localeDe from '@angular/common/locales/de';\nimport localeEl from '@angular/common/locales/el';\nimport localeEnGb from '@angular/common/locales/en-GB';\nimport localeEnIn from '@angular/common/locales/en-IN';\nimport localeEo from '@angular/common/locales/eo';\nimport localeEs from '@angular/common/locales/es';\nimport localeEt from '@angular/common/locales/et';\nimport localeFi from '@angular/common/locales/fi';\nimport localeFr from '@angular/common/locales/fr';\nimport localeHe from '@angular/common/locales/he';\nimport localeHr from '@angular/common/locales/hr';\nimport localeHu from '@angular/common/locales/hu';\nimport localeId from '@angular/common/locales/id';\nimport localeIt from '@angular/common/locales/it';\nimport localeJa from '@angular/common/locales/ja';\nimport localeKn from '@angular/common/locales/kn';\nimport localeKo from '@angular/common/locales/ko';\nimport localeLv from '@angular/common/locales/lv';\nimport localeMl from '@angular/common/locales/ml';\nimport localeNb from '@angular/common/locales/nb';\nimport localeNl from '@angular/common/locales/nl';\nimport localePl from '@angular/common/locales/pl';\nimport localePtBr from '@angular/common/locales/pt';\nimport localePtPt from '@angular/common/locales/pt-PT';\nimport localeRo from '@angular/common/locales/ro';\nimport localeRu from '@angular/common/locales/ru';\nimport localeSk from '@angular/common/locales/sk';\nimport localeSr from '@angular/common/locales/sr';\nimport localeSv from '@angular/common/locales/sv';\nimport localeTr from '@angular/common/locales/tr';\nimport localeUk from '@angular/common/locales/uk';\nimport localeZhCn from '@angular/common/locales/zh-Hans';\nimport localeZhTw from '@angular/common/locales/zh-Hant';\n\nimport { DisableSendPolicyComponent } from './organizations/policies/disable-send.component';\nimport { MasterPasswordPolicyComponent } from './organizations/policies/master-password.component';\nimport { PasswordGeneratorPolicyComponent } from './organizations/policies/password-generator.component';\nimport { PersonalOwnershipPolicyComponent } from './organizations/policies/personal-ownership.component';\nimport { RequireSsoPolicyComponent } from './organizations/policies/require-sso.component';\nimport { ResetPasswordPolicyComponent } from './organizations/policies/reset-password.component';\nimport { SendOptionsPolicyComponent } from './organizations/policies/send-options.component';\nimport { SingleOrgPolicyComponent } from './organizations/policies/single-org.component';\nimport { TwoFactorAuthenticationPolicyComponent } from './organizations/policies/two-factor-authentication.component';\n\nregisterLocaleData(localeAz, 'az');\nregisterLocaleData(localeBg, 'bg');\nregisterLocaleData(localeCa, 'ca');\nregisterLocaleData(localeCs, 'cs');\nregisterLocaleData(localeDa, 'da');\nregisterLocaleData(localeDe, 'de');\nregisterLocaleData(localeEl, 'el');\nregisterLocaleData(localeEnGb, 'en-GB');\nregisterLocaleData(localeEnIn, 'en-IN');\nregisterLocaleData(localeEs, 'es');\nregisterLocaleData(localeEt, 'et');\nregisterLocaleData(localeEo, 'eo');\nregisterLocaleData(localeFi, 'fi');\nregisterLocaleData(localeFr, 'fr');\nregisterLocaleData(localeHe, 'he');\nregisterLocaleData(localeHr, 'hr');\nregisterLocaleData(localeHu, 'hu');\nregisterLocaleData(localeId, 'id');\nregisterLocaleData(localeIt, 'it');\nregisterLocaleData(localeJa, 'ja');\nregisterLocaleData(localeKn, 'kn');\nregisterLocaleData(localeKo, 'ko');\nregisterLocaleData(localeLv, 'lv');\nregisterLocaleData(localeMl, 'ml');\nregisterLocaleData(localeNb, 'nb');\nregisterLocaleData(localeNl, 'nl');\nregisterLocaleData(localePl, 'pl');\nregisterLocaleData(localePtBr, 'pt-BR');\nregisterLocaleData(localePtPt, 'pt-PT');\nregisterLocaleData(localeRo, 'ro');\nregisterLocaleData(localeRu, 'ru');\nregisterLocaleData(localeSk, 'sk');\nregisterLocaleData(localeSr, 'sr');\nregisterLocaleData(localeSv, 'sv');\nregisterLocaleData(localeTr, 'tr');\nregisterLocaleData(localeUk, 'uk');\nregisterLocaleData(localeZhCn, 'zh-CN');\nregisterLocaleData(localeZhTw, 'zh-TW');\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n InfiniteScrollModule,\n DragDropModule,\n ToasterModule.forChild(),\n ReactiveFormsModule,\n RouterModule,\n ],\n declarations: [\n A11yTitleDirective,\n AcceptEmergencyComponent,\n AccessComponent,\n AcceptOrganizationComponent,\n AccountComponent,\n SetPasswordComponent,\n AddCreditComponent,\n AddEditComponent,\n AdjustPaymentComponent,\n AdjustSeatsComponent,\n AdjustStorageComponent,\n ApiActionDirective,\n ApiKeyComponent,\n AppComponent,\n AttachmentsComponent,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n CalloutComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n ColorPasswordPipe,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FallbackSrcDirective,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n GroupingsComponent,\n HintComponent,\n I18nPipe,\n IconComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n InputVerbatimDirective,\n LinkSsoComponent,\n LockComponent,\n LoginComponent,\n NavbarComponent,\n OptionsComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgBulkStatusComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupingsComponent,\n OrgGroupsComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPolicyEditComponent,\n OrgPoliciesComponent,\n OrgResetPasswordComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrganizationsComponent,\n OrganizationLayoutComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgVaultComponent,\n OrgWeakPasswordsReportComponent,\n PasswordGeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordStrengthComponent,\n PasswordRepromptComponent,\n PaymentComponent,\n PremiumComponent,\n ProfileComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n ReusedPasswordsReportComponent,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n SendAddEditComponent,\n SendEffluxDatesComponent,\n SendComponent,\n SettingsComponent,\n ShareComponent,\n SsoComponent,\n StopClickDirective,\n StopPropDirective,\n TaxInfoComponent,\n ToolsComponent,\n TrueFalseValueDirective,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorVerifyComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UpdateTempPasswordComponent,\n UserBillingComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n UserNamePipe,\n VaultComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ProvidersComponent,\n TwoFactorAuthenticationPolicyComponent,\n MasterPasswordPolicyComponent,\n SingleOrgPolicyComponent,\n PasswordGeneratorPolicyComponent,\n RequireSsoPolicyComponent,\n PersonalOwnershipPolicyComponent,\n DisableSendPolicyComponent,\n SendOptionsPolicyComponent,\n ResetPasswordPolicyComponent,\n ],\n exports: [\n A11yTitleDirective,\n AvatarComponent,\n CalloutComponent,\n ApiActionDirective,\n StopClickDirective,\n StopPropDirective,\n I18nPipe,\n SearchPipe,\n UserNamePipe,\n NavbarComponent,\n FooterComponent,\n OrganizationPlansComponent,\n ],\n providers: [DatePipe, SearchPipe, UserNamePipe],\n bootstrap: [],\n})\nexport class OssModule { }\n","import * as jq from 'jquery';\nimport Swal from 'sweetalert2';\n\nimport {\n BodyOutputType,\n Toast,\n ToasterConfig,\n ToasterService,\n} from 'angular2-toaster';\n\nimport {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport {\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { NotificationsService } from 'jslib-common/abstractions/notifications.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SettingsService } from 'jslib-common/abstractions/settings.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { PolicyListService } from './services/policy-list.service';\nimport { RouterService } from './services/router.service';\n\nimport { DisableSendPolicy } from './organizations/policies/disable-send.component';\nimport { MasterPasswordPolicy } from './organizations/policies/master-password.component';\nimport { PasswordGeneratorPolicy } from './organizations/policies/password-generator.component';\nimport { PersonalOwnershipPolicy } from './organizations/policies/personal-ownership.component';\nimport { RequireSsoPolicy } from './organizations/policies/require-sso.component';\nimport { ResetPasswordPolicy } from './organizations/policies/reset-password.component';\nimport { SendOptionsPolicy } from './organizations/policies/send-options.component';\nimport { SingleOrgPolicy } from './organizations/policies/single-org.component';\nimport { TwoFactorAuthenticationPolicy } from './organizations/policies/two-factor-authentication.component';\n\nconst BroadcasterSubscriptionId = 'AppComponent';\nconst IdleTimeout = 60000 * 10; // 10 minutes\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n})\nexport class AppComponent implements OnDestroy, OnInit {\n\n toasterConfig: ToasterConfig = new ToasterConfig({\n showCloseButton: true,\n mouseoverTimerStop: true,\n animation: 'flyRight',\n limit: 5,\n });\n\n private lastActivity: number = null;\n private idleTimer: number = null;\n private isIdle = false;\n\n constructor(\n private broadcasterService: BroadcasterService, private userService: UserService,\n private tokenService: TokenService, private folderService: FolderService,\n private settingsService: SettingsService, private syncService: SyncService,\n private passwordGenerationService: PasswordGenerationService, private cipherService: CipherService,\n private authService: AuthService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private ngZone: NgZone,\n private vaultTimeoutService: VaultTimeoutService, private storageService: StorageService,\n private cryptoService: CryptoService, private collectionService: CollectionService,\n private sanitizer: DomSanitizer, private searchService: SearchService,\n private notificationsService: NotificationsService, private routerService: RouterService,\n private stateService: StateService, private eventService: EventService,\n private policyService: PolicyService, protected policyListService: PolicyListService) { }\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n window.onmousemove = () => this.recordActivity();\n window.onmousedown = () => this.recordActivity();\n window.ontouchstart = () => this.recordActivity();\n window.onclick = () => this.recordActivity();\n window.onscroll = () => this.recordActivity();\n window.onkeypress = () => this.recordActivity();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'loggedIn':\n case 'loggedOut':\n case 'unlocked':\n this.notificationsService.updateConnection(false);\n break;\n case 'authBlocked':\n this.router.navigate(['/']);\n break;\n case 'logout':\n this.logOut(!!message.expired);\n break;\n case 'lockVault':\n await this.vaultTimeoutService.lock();\n break;\n case 'locked':\n this.notificationsService.updateConnection(false);\n this.router.navigate(['lock']);\n break;\n case 'lockedUrl':\n window.setTimeout(() => this.routerService.setPreviousUrl(message.url), 500);\n break;\n case 'syncStarted':\n break;\n case 'syncCompleted':\n break;\n case 'upgradeOrganization':\n const upgradeConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('upgradeOrganizationDesc'), this.i18nService.t('upgradeOrganization'),\n this.i18nService.t('upgradeOrganization'), this.i18nService.t('cancel'));\n if (upgradeConfirmed) {\n this.router.navigate(['organizations', message.organizationId, 'settings', 'billing']);\n }\n break;\n case 'premiumRequired':\n const premiumConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (premiumConfirmed) {\n this.router.navigate(['settings/premium']);\n }\n break;\n case 'emailVerificationRequired':\n const emailVerificationConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('emailVerificationRequiredDesc'),\n this.i18nService.t('emailVerificationRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (emailVerificationConfirmed) {\n this.platformUtilsService.launchUri('https://bitwarden.com/help/article/create-bitwarden-account/');\n }\n break;\n case 'showToast':\n if (typeof message.text === \"string\" && typeof crypto.subtle === 'undefined') {\n message.title=\"This browser requires HTTPS to use the web vault\";\n message.text=\"Check the Vaultwarden wiki for details on how to enable it\";\n }\n this.showToast(message);\n break;\n case 'setFullWidth':\n this.setFullWidth();\n break;\n default:\n break;\n }\n });\n });\n\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n const modals = Array.from(document.querySelectorAll('.modal'));\n for (const modal of modals) {\n (jq(modal) as any).modal('hide');\n }\n\n if (document.querySelector('.swal-modal') != null) {\n Swal.close(undefined);\n }\n }\n });\n\n this.policyListService.addPolicies([\n new TwoFactorAuthenticationPolicy(),\n new MasterPasswordPolicy(),\n new PasswordGeneratorPolicy(),\n new SingleOrgPolicy(),\n new RequireSsoPolicy(),\n new PersonalOwnershipPolicy(),\n new DisableSendPolicy(),\n new SendOptionsPolicy(),\n new ResetPasswordPolicy(),\n ]);\n\n this.setFullWidth();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n private async logOut(expired: boolean) {\n await this.eventService.uploadEvents();\n const userId = await this.userService.getUserId();\n\n await Promise.all([\n this.eventService.clearEvents(),\n this.syncService.setLastSync(new Date(0)),\n this.tokenService.clearToken(),\n this.cryptoService.clearKeys(),\n this.userService.clear(),\n this.settingsService.clear(userId),\n this.cipherService.clear(userId),\n this.folderService.clear(userId),\n this.collectionService.clear(userId),\n this.policyService.clear(userId),\n this.passwordGenerationService.clear(),\n this.stateService.purge(),\n ]);\n\n this.searchService.clearIndex();\n this.authService.logOut(async () => {\n if (expired) {\n this.toasterService.popAsync('warning', this.i18nService.t('loggedOut'),\n this.i18nService.t('loginExpired'));\n }\n\n Swal.close();\n this.router.navigate(['/']);\n });\n }\n\n private async recordActivity() {\n const now = (new Date()).getTime();\n if (this.lastActivity != null && now - this.lastActivity < 250) {\n return;\n }\n\n this.lastActivity = now;\n this.storageService.save(ConstantsService.lastActiveKey, now);\n\n // Idle states\n if (this.isIdle) {\n this.isIdle = false;\n this.idleStateChanged();\n }\n if (this.idleTimer != null) {\n window.clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n this.idleTimer = window.setTimeout(() => {\n if (!this.isIdle) {\n this.isIdle = true;\n this.idleStateChanged();\n }\n }, IdleTimeout);\n }\n\n private showToast(msg: any) {\n const toast: Toast = {\n type: msg.type,\n title: msg.title,\n };\n if (typeof (msg.text) === 'string') {\n toast.body = msg.text;\n } else if (msg.text.length === 1) {\n toast.body = msg.text[0];\n } else {\n let message = '';\n msg.text.forEach((t: string) =>\n message += ('

' + this.sanitizer.sanitize(SecurityContext.HTML, t) + '

'));\n toast.body = message;\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options != null) {\n if (msg.options.trustedHtml === true) {\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options.timeout != null && msg.options.timeout > 0) {\n toast.timeout = msg.options.timeout;\n }\n }\n this.toasterService.popAsync(toast);\n }\n\n private idleStateChanged() {\n if (this.isIdle) {\n this.notificationsService.disconnectFromInactivity();\n } else {\n this.notificationsService.reconnectFromActivity();\n }\n }\n\n private async setFullWidth() {\n const enableFullWidth = await this.storageService.get('enableFullWidth');\n if (enableFullWidth) {\n document.body.classList.add('full-width');\n } else {\n document.body.classList.remove('full-width');\n }\n }\n}\n"," ","import { Component } from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class DisableSendPolicy extends BasePolicy {\n name = 'disableSend';\n description = 'disableSendPolicyDesc';\n type = PolicyType.DisableSend;\n component = DisableSendPolicyComponent;\n}\n\n@Component({\n selector: 'policy-disable-send',\n templateUrl: 'disable-send.component.html',\n})\nexport class DisableSendPolicyComponent extends BasePolicyComponent {\n}\n"," {{'disableSendExemption' | i18n}}
","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class MasterPasswordPolicy extends BasePolicy {\n name = 'masterPass';\n description = 'masterPassPolicyDesc';\n type = PolicyType.MasterPassword;\n component = MasterPasswordPolicyComponent;\n}\n\n@Component({\n selector: 'policy-master-password',\n templateUrl: 'master-password.component.html',\n})\nexport class MasterPasswordPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n minComplexity: [null],\n minLength: [null],\n requireUpper: [null],\n requireLower: [null],\n requireNumbers: [null],\n requireSpecial: [null],\n });\n\n passwordScores: { name: string; value: number; }[];\n\n constructor(private fb: FormBuilder, i18nService: I18nService) {\n super();\n\n this.passwordScores = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('weak') + ' (0)', value: 0 },\n { name: i18nService.t('weak') + ' (1)', value: 1 },\n { name: i18nService.t('weak') + ' (2)', value: 2 },\n { name: i18nService.t('good') + ' (3)', value: 3 },\n { name: i18nService.t('strong') + ' (4)', value: 4 },\n ];\n }\n}\n","
","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class PasswordGeneratorPolicy extends BasePolicy {\n name = 'passwordGenerator';\n description = 'passwordGeneratorPolicyDesc';\n type = PolicyType.PasswordGenerator;\n component = PasswordGeneratorPolicyComponent;\n}\n\n@Component({\n selector: 'policy-password-generator',\n templateUrl: 'password-generator.component.html',\n})\nexport class PasswordGeneratorPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n defaultType: [null],\n minLength: [null],\n useUpper: [null],\n useLower: [null],\n useNumbers: [null],\n useSpecial: [null],\n minNumbers: [null],\n minSpecial: [null],\n minNumberWords: [null],\n capitalize: [null],\n includeNumber: [null],\n });\n\n defaultTypes: { name: string; value: string; }[];\n\n constructor(private fb: FormBuilder, i18nService: I18nService) {\n super();\n\n this.defaultTypes = [\n { name: i18nService.t('userPreference'), value: null },\n { name: i18nService.t('password'), value: 'password' },\n { name: i18nService.t('passphrase'), value: 'passphrase' },\n ];\n }\n}\n","

{{'password' | i18n}}

{{'passphrase' | i18n}}

","import { Component } from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class PersonalOwnershipPolicy extends BasePolicy {\n name = 'personalOwnership';\n description = 'personalOwnershipPolicyDesc';\n type = PolicyType.PersonalOwnership;\n component = PersonalOwnershipPolicyComponent;\n}\n\n@Component({\n selector: 'policy-personal-ownership',\n templateUrl: 'personal-ownership.component.html',\n})\nexport class PersonalOwnershipPolicyComponent extends BasePolicyComponent {\n}\n"," {{'personalOwnershipExemption' | i18n}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class RequireSsoPolicy extends BasePolicy {\n name = 'requireSso';\n description = 'requireSsoPolicyDesc';\n type = PolicyType.RequireSso;\n component = RequireSsoPolicyComponent;\n\n display(organization: Organization) {\n return organization.useSso;\n }\n}\n\n@Component({\n selector: 'policy-require-sso',\n templateUrl: 'require-sso.component.html',\n})\nexport class RequireSsoPolicyComponent extends BasePolicyComponent {\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false;\n if (this.enabled.value && !singleOrgEnabled) {\n throw new Error(this.i18nService.t('requireSsoPolicyReqError'));\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n"," {{'requireSsoPolicyReq' | i18n}} {{'requireSsoExemption' | i18n}}
","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class ResetPasswordPolicy extends BasePolicy {\n name = 'resetPasswordPolicy';\n description = 'resetPasswordPolicyDescription';\n type = PolicyType.ResetPassword;\n component = ResetPasswordPolicyComponent;\n\n display(organization: Organization) {\n return organization.useResetPassword;\n }\n}\n\n@Component({\n selector: 'policy-reset-password',\n templateUrl: 'reset-password.component.html',\n})\nexport class ResetPasswordPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n autoEnrollEnabled: false,\n });\n\n defaultTypes: { name: string; value: string; }[];\n\n constructor(private fb: FormBuilder) {\n super();\n }\n}\n"," {{'resetPasswordPolicyWarning' | i18n}}

{{'resetPasswordPolicyAutoEnroll' | i18n}}

{{'resetPasswordPolicyAutoEnrollDescription' | i18n}}

{{'resetPasswordPolicyAutoEnrollWarning' | i18n}}
","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class SendOptionsPolicy extends BasePolicy {\n name = 'sendOptions';\n description = 'sendOptionsPolicyDesc';\n type = PolicyType.SendOptions;\n component = SendOptionsPolicyComponent;\n}\n\n@Component({\n selector: 'policy-send-options',\n templateUrl: 'send-options.component.html',\n})\nexport class SendOptionsPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n disableHideEmail: false,\n });\n\n constructor(private fb: FormBuilder) {\n super();\n }\n}\n"," {{'sendOptionsExemption' | i18n}}

{{'options' | i18n}}

","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class SingleOrgPolicy extends BasePolicy {\n name = 'singleOrg';\n description = 'singleOrgDesc';\n type = PolicyType.SingleOrg;\n component = SingleOrgPolicyComponent;\n}\n\n@Component({\n selector: 'policy-single-org',\n templateUrl: 'single-org.component.html',\n})\nexport class SingleOrgPolicyComponent extends BasePolicyComponent {\n\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n const requireSsoEnabled = policiesEnabledMap.get(PolicyType.RequireSso) ?? false;\n if (!this.enabled.value && requireSsoEnabled) {\n throw new Error(this.i18nService.t('disableRequireSsoError'));\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n"," {{'singleOrgPolicyWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class TwoFactorAuthenticationPolicy extends BasePolicy {\n name = 'twoStepLogin';\n description = 'twoStepLoginPolicyDesc';\n type = PolicyType.TwoFactorAuthentication;\n component = TwoFactorAuthenticationPolicyComponent;\n}\n\n@Component({\n selector: 'policy-two-factor-authentication',\n templateUrl: 'two-factor-authentication.component.html',\n})\nexport class TwoFactorAuthenticationPolicyComponent extends BasePolicyComponent {\n}\n"," {{'twoStepLoginPolicyWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { PasswordRepromptComponent as BasePasswordRepromptComponent } from 'jslib-angular/components/password-reprompt.component';\n\n@Component({\n templateUrl: 'password-reprompt.component.html',\n})\nexport class PasswordRepromptComponent extends BasePasswordRepromptComponent {}\n","

{{'passwordConfirmation' | i18n}}

{{'passwordConfirmationDesc' | i18n}}
","import { Directive } from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { ModalRef } from './modal/modal.ref';\n\n@Directive()\nexport class PasswordRepromptComponent {\n\n showPassword = false;\n masterPassword = '';\n\n constructor(private modalRef: ModalRef, private cryptoService: CryptoService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService) {}\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n }\n\n async submit() {\n if (!await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, null)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n return;\n }\n\n this.modalRef.close(true);\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBlurClick]',\n})\nexport class BlurClickDirective {\n constructor(private el: ElementRef) {\n }\n\n @HostListener('click') onClick() {\n this.el.nativeElement.blur();\n }\n}\n","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nconst BroadcasterSubscriptionId = 'OrganizationLayoutComponent';\n\n@Component({\n selector: 'app-organization-layout',\n templateUrl: 'organization-layout.component.html',\n})\nexport class OrganizationLayoutComponent implements OnInit, OnDestroy {\n organization: Organization;\n businessTokenPromise: Promise;\n private organizationId: string;\n private businessUrl: string;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone,\n private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private environmentService: EnvironmentService) { }\n\n ngOnInit() {\n this.businessUrl = this.environmentService.getEnterpriseUrl();\n\n document.body.classList.remove('layout_frontend');\n this.route.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'updatedOrgLicense':\n await this.load();\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.organization = await this.userService.getOrganization(this.organizationId);\n }\n\n async goToBusinessPortal() {\n if (this.businessTokenPromise != null) {\n return;\n }\n try {\n this.businessTokenPromise = this.apiService.getEnterprisePortalSignInToken();\n const token = await this.businessTokenPromise;\n if (token != null) {\n const userId = await this.userService.getUserId();\n this.platformUtilsService.launchUri(this.businessUrl + '/login?userId=' + userId +\n '&token=' + (window as any).encodeURIComponent(token) + '&organizationId=' + this.organization.id);\n }\n } catch { }\n this.businessTokenPromise = null;\n }\n\n get showMenuBar() {\n return this.showManageTab || this.showToolsTab || this.organization.isOwner;\n }\n\n get showManageTab(): boolean {\n return this.organization.canManageUsers ||\n this.organization.canManageAssignedCollections ||\n this.organization.canManageAllCollections ||\n this.organization.canManageGroups ||\n this.organization.canManagePolicies ||\n this.organization.canAccessEventLogs;\n }\n\n get showToolsTab(): boolean {\n return this.organization.canAccessImportExport || this.organization.canAccessReports;\n }\n\n get showBusinessPortalButton(): boolean {\n return this.organization.useBusinessPortal && this.organization.canAccessBusinessPortal;\n }\n\n get toolsRoute(): string {\n return this.organization.canAccessImportExport ?\n 'tools/import' :\n 'tools/exposed-passwords-report';\n }\n\n get manageRoute(): string {\n let route: string;\n switch (true) {\n case this.organization.canManageUsers:\n route = 'manage/people';\n break;\n case this.organization.canManageAssignedCollections || this.organization.canManageAllCollections:\n route = 'manage/collections';\n break;\n case this.organization.canManageGroups:\n route = 'manage/groups';\n break;\n case this.organization.canManagePolicies:\n route = 'manage/policies';\n break;\n case this.organization.canAccessEventLogs:\n route = 'manage/events';\n break;\n }\n return route;\n }\n}\n","
{{organization.name}} {{'organization' | i18n}}
{{'organizationIsDisabled' | i18n}}
{{'accessingUsingProvider' | i18n : organization.providerName}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\n@Component({\n selector: 'app-user-layout',\n templateUrl: 'user-layout.component.html',\n})\nexport class UserLayoutComponent implements OnInit {\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n }\n}\n"," ","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { EmergencyAccessAcceptRequest } from 'jslib-common/models/request/emergencyAccessAcceptRequest';\nimport { BaseAcceptComponent } from '../common/base.accept.component';\n\n@Component({\n selector: 'app-accept-emergency',\n templateUrl: 'accept-emergency.component.html',\n})\nexport class AcceptEmergencyComponent extends BaseAcceptComponent {\n\n name: string;\n\n protected requiredParameters: string[] = ['id', 'name', 'email', 'token'];\n protected failedShortMessage = 'emergencyInviteAcceptFailedShort';\n protected failedMessage = 'emergencyInviteAcceptFailed';\n\n constructor(router: Router, toasterService: ToasterService,\n i18nService: I18nService, route: ActivatedRoute,\n private apiService: ApiService, userService: UserService,\n stateService: StateService) {\n super(router, toasterService, i18nService, route, userService, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new EmergencyAccessAcceptRequest();\n request.token = qParams.token;\n this.actionPromise = this.apiService.postEmergencyAccessAccept(qParams.id, request);\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('emergencyInviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.name = qParams.name;\n if (this.name != null) {\n // Fix URL encoding of space issue with Angular\n this.name = this.name.replace(/\\+/g, ' ');\n }\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'emergencyAccess' | i18n}}

{{name}}

{{'acceptEmergencyAccess' | i18n}}


","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { OrganizationUserAcceptRequest } from 'jslib-common/models/request/organizationUserAcceptRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\nimport { Policy } from 'jslib-common/models/domain/policy';\nimport { BaseAcceptComponent } from '../common/base.accept.component';\n\n@Component({\n selector: 'app-accept-organization',\n templateUrl: 'accept-organization.component.html',\n})\nexport class AcceptOrganizationComponent extends BaseAcceptComponent {\n orgName: string;\n\n protected requiredParameters: string[] = ['organizationId', 'organizationUserId', 'token'];\n\n constructor(router: Router, toasterService: ToasterService,\n i18nService: I18nService, route: ActivatedRoute,\n private apiService: ApiService, userService: UserService,\n stateService: StateService, private cryptoService: CryptoService,\n private policyService: PolicyService) {\n super(router, toasterService, i18nService, route, userService, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new OrganizationUserAcceptRequest();\n request.token = qParams.token;\n if (await this.performResetPasswordAutoEnroll(qParams)) {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request).then(() => {\n // Retrieve Public Key\n return this.apiService.getOrganizationKeys(qParams.organizationId);\n }).then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create request and execute enrollment\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n // Get User Id\n const userId = await this.userService.getUserId();\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(qParams.organizationId, userId, resetRequest);\n });\n } else {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request);\n }\n\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('inviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n\n await this.stateService.remove('orgInvitation');\n this.router.navigate(['/vault']);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.orgName = qParams.organizationName;\n if (this.orgName != null) {\n // Fix URL encoding of space issue with Angular\n this.orgName = this.orgName.replace(/\\+/g, ' ');\n }\n await this.stateService.save('orgInvitation', qParams);\n }\n\n private async performResetPasswordAutoEnroll(qParams: any): Promise {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(qParams.organizationId, qParams.token,\n qParams.email, qParams.organizationUserId);\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch { }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(policyList, qParams.organizationId);\n // Return true if policy enabled and auto-enroll enabled\n return result[1] && result[0].autoEnrollEnabled;\n }\n\n return false;\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'joinOrganization' | i18n}}

{{orgName}} {{email}}

{{'joinOrganizationDesc' | i18n}}


","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { HintComponent as BaseHintComponent } from 'jslib-angular/components/hint.component';\n\n@Component({\n selector: 'app-hint',\n templateUrl: 'hint.component.html',\n})\nexport class HintComponent extends BaseHintComponent {\n constructor(router: Router, i18nService: I18nService,\n apiService: ApiService, platformUtilsService: PlatformUtilsService) {\n super(router, i18nService, apiService, platformUtilsService);\n }\n}\n","

{{'passwordHint' | i18n}}

{{'enterEmailToGetHint' | i18n}}

{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { RouterService } from '../services/router.service';\n\nimport { LockComponent as BaseLockComponent } from 'jslib-angular/components/lock.component';\n\n@Component({\n selector: 'app-lock',\n templateUrl: 'lock.component.html',\n})\nexport class LockComponent extends BaseLockComponent {\n constructor(router: Router, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, messagingService: MessagingService,\n userService: UserService, cryptoService: CryptoService,\n storageService: StorageService, vaultTimeoutService: VaultTimeoutService,\n environmentService: EnvironmentService, private routerService: RouterService,\n stateService: StateService, apiService: ApiService) {\n super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,\n storageService, vaultTimeoutService, environmentService, stateService, apiService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n this.onSuccessfulSubmit = () => {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl !== '/' && previousUrl.indexOf('lock') === -1) {\n this.successRoute = previousUrl;\n }\n this.router.navigate([this.successRoute]);\n };\n }\n}\n","

{{'yourVaultIsLocked' | i18n}}

{{'loggedInAsEmailOn' | i18n : email : webVaultHostname}}

","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { LoginComponent as BaseLoginComponent } from 'jslib-angular/components/login.component';\n\nimport { Policy } from 'jslib-common/models/domain/policy';\n\n@Component({\n selector: 'app-login',\n templateUrl: 'login.component.html',\n})\nexport class LoginComponent extends BaseLoginComponent {\n\n showResetPasswordAutoEnrollWarning = false;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, private route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService, cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService, private policyService: PolicyService) {\n super(authService, router,\n platformUtilsService, i18nService,\n stateService, environmentService,\n passwordGenerationService, cryptoFunctionService,\n storageService);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n await super.ngOnInit();\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch { }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(policyList, invite.organizationId);\n // Set to true if policy enabled and auto-enroll enabled\n this.showResetPasswordAutoEnrollWarning = result[1] && result[0].autoEnrollEnabled;\n }\n }\n }\n\n async goAfterLogIn() {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n}\n","

{{'loginOrCreateNewAccount' | i18n}}

{{'resetPasswordAutoEnrollInviteWarning' | i18n}}
{{'getMasterPasswordHint' | i18n}}

{{'createAccount' | i18n}}
","import { Directive, Input } from '@angular/core';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CaptchaIFrame } from 'jslib-common/misc/captcha_iframe';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport abstract class CaptchaProtectedComponent {\n @Input() captchaSiteKey: string = null;\n captchaToken: string = null;\n captcha: CaptchaIFrame;\n\n constructor(protected environmentService: EnvironmentService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async setupCaptcha() {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n\n this.captcha = new CaptchaIFrame(window, webVaultUrl,\n this.i18nService, (token: string) => {\n this.captchaToken = token;\n }, (error: string) => {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), error);\n }, (info: string) => {\n this.platformUtilsService.showToast('info', this.i18nService.t('info'), info);\n }\n );\n }\n\n showCaptcha() {\n return !Utils.isNullOrWhitespace(this.captchaSiteKey);\n }\n\n protected handleCaptchaRequired(response: { captchaSiteKey: string; }): boolean {\n if (Utils.isNullOrWhitespace(response.captchaSiteKey)) {\n return false;\n }\n\n this.captchaSiteKey = response.captchaSiteKey;\n this.captcha.init(response.captchaSiteKey);\n return true;\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { DeleteRecoverRequest } from 'jslib-common/models/request/deleteRecoverRequest';\n\n@Component({\n selector: 'app-recover-delete',\n templateUrl: 'recover-delete.component.html',\n})\nexport class RecoverDeleteComponent {\n email: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService) {\n }\n\n async submit() {\n try {\n const request = new DeleteRecoverRequest();\n request.email = this.email.trim().toLowerCase();\n this.formPromise = this.apiService.postAccountRecoverDelete(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deleteRecoverEmailSent'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteRecoverDesc' | i18n}}


{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { TwoFactorRecoveryRequest } from 'jslib-common/models/request/twoFactorRecoveryRequest';\n\n@Component({\n selector: 'app-recover-two-factor',\n templateUrl: 'recover-two-factor.component.html',\n})\nexport class RecoverTwoFactorComponent {\n email: string;\n masterPassword: string;\n recoveryCode: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private cryptoService: CryptoService, private authService: AuthService) { }\n\n async submit() {\n try {\n const request = new TwoFactorRecoveryRequest();\n request.recoveryCode = this.recoveryCode.replace(/\\s/g, '').toLowerCase();\n request.email = this.email.trim().toLowerCase();\n const key = await this.authService.makePreloginKey(this.masterPassword, request.email);\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n this.formPromise = this.apiService.postTwoFactorRecover(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepRecoverDisabled'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'recoverAccountTwoStep' | i18n}}

{{'recoverAccountTwoStepDesc' | i18n}} {{'learnMore' | i18n}}


{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { RegisterComponent as BaseRegisterComponent } from 'jslib-angular/components/register.component';\n\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\nimport { PolicyData } from 'jslib-common/models/data/policyData';\nimport { ReferenceEventRequest } from 'jslib-common/models/request/referenceEventRequest';\n\n@Component({\n selector: 'app-register',\n templateUrl: 'register.component.html',\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n layout = '';\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private policies: Policy[];\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, cryptoService: CryptoService,\n apiService: ApiService, private route: ActivatedRoute,\n stateService: StateService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, private policyService: PolicyService,\n environmentService: EnvironmentService) {\n super(authService, router, i18nService, cryptoService, apiService, stateService, platformUtilsService,\n passwordGenerationService, environmentService);\n }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(qParams => {\n this.referenceData = new ReferenceEventRequest();\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.showCreateOrgMessage = true;\n this.referenceData.flow = qParams.org;\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n if (qParams.layout != null) {\n this.layout = this.referenceData.layout = qParams.layout;\n }\n if (qParams.reference != null) {\n this.referenceData.id = qParams.reference;\n } else {\n this.referenceData.id = ('; ' + document.cookie).split('; reference=').pop().split(';').shift();\n }\n if (this.referenceData.id === '') {\n this.referenceData.id = null;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n if (policies.data != null) {\n const policiesData = policies.data.map(p => new PolicyData(p));\n this.policies = policiesData.map(p => new Policy(p));\n }\n } catch { }\n }\n\n if (this.policies != null) {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(this.policies);\n }\n\n await super.ngOnInit();\n }\n\n async submit() {\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n await super.submit();\n }\n}\n","

Companies globally trust Bitwarden for password management.

Start your 7-day free trial!

Quickly deploy your organization

Use Bitwarden across all platforms

Collaborate and share securely

\"Wired\"
\"Bitwarden has become a popular choice among open-source software advocates. After using it for a few months, I can see why.\" - February 2020

Enterprise 3 layout

Enterprise 4 layout

{{'createAccount' | i18n}}

{{'createOrganizationCreatePersonalAccount' | i18n}}
{{'emailAddressDesc' | i18n}}
{{'yourNameDesc' | i18n}}
{{'masterPassDesc' | i18n}}
{{'masterPassHintDesc' | i18n}}

{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n SetPasswordComponent as BaseSetPasswordComponent,\n} from 'jslib-angular/components/set-password.component';\n\n@Component({\n selector: 'app-set-password',\n templateUrl: 'set-password.component.html',\n})\nexport class SetPasswordComponent extends BaseSetPasswordComponent {\n constructor(apiService: ApiService, i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, router: Router,\n syncService: SyncService, route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService, router, apiService, syncService, route);\n }\n}\n","

{{'setMasterPassword' | i18n}}

{{'loading' | i18n}}
{{'ssoCompleteRegistration' | i18n}} {{'resetPasswordAutoEnrollInviteWarning' | i18n}}
{{'masterPassDesc' | i18n}}
{{'masterPassHintDesc' | i18n}}

","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { SsoComponent as BaseSsoComponent } from 'jslib-angular/components/sso.component';\n\nconst IdentifierStorageKey = 'ssoOrgIdentifier';\n\n@Component({\n selector: 'app-sso',\n templateUrl: 'sso.component.html',\n})\nexport class SsoComponent extends BaseSsoComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService,\n cryptoFunctionService: CryptoFunctionService, environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService) {\n super(authService, router, i18nService, route, storageService, stateService, platformUtilsService,\n apiService, cryptoFunctionService, environmentService, passwordGenerationService);\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n } else {\n const storedIdentifier = await this.storageService.get(IdentifierStorageKey);\n if (storedIdentifier != null) {\n this.identifier = storedIdentifier;\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async submit() {\n await this.storageService.save(IdentifierStorageKey, this.identifier);\n if (this.clientId === 'browser') {\n document.cookie = `ssoHandOffMessage=${this.i18nService.t('ssoHandOff')};SameSite=strict`;\n }\n super.submit();\n }\n}\n","
{{'loading' | i18n}}

{{'ssoLogInWithOrgIdentifier' | i18n}}


{{'cancel' | i18n}}
","import { Directive } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { AuthResult } from 'jslib-common/models/domain/authResult';\n\n@Directive()\nexport class SsoComponent {\n identifier: string;\n loggingIn = false;\n\n formPromise: Promise;\n initiateSsoFormPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginChangePasswordNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'lock';\n protected changePasswordRoute = 'set-password';\n protected clientId: string;\n protected redirectUri: string;\n protected state: string;\n protected codeChallenge: string;\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected route: ActivatedRoute,\n protected storageService: StorageService, protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService, protected apiService: ApiService,\n protected cryptoFunctionService: CryptoFunctionService, protected environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService) { }\n\n async ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.code != null && qParams.state != null) {\n const codeVerifier = await this.storageService.get(ConstantsService.ssoCodeVerifierKey);\n const state = await this.storageService.get(ConstantsService.ssoStateKey);\n await this.storageService.remove(ConstantsService.ssoCodeVerifierKey);\n await this.storageService.remove(ConstantsService.ssoStateKey);\n if (qParams.code != null && codeVerifier != null && state != null && this.checkState(state, qParams.state)) {\n await this.logIn(qParams.code, codeVerifier, this.getOrgIdentiferFromState(qParams.state));\n }\n } else if (qParams.clientId != null && qParams.redirectUri != null && qParams.state != null &&\n qParams.codeChallenge != null) {\n this.redirectUri = qParams.redirectUri;\n this.state = qParams.state;\n this.codeChallenge = qParams.codeChallenge;\n this.clientId = qParams.clientId;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n async submit(returnUri?: string, includeUserIdentifier?: boolean) {\n this.initiateSsoFormPromise = this.preValidate();\n if (await this.initiateSsoFormPromise) {\n const authorizeUrl = await this.buildAuthorizeUrl(returnUri, includeUserIdentifier);\n this.platformUtilsService.launchUri(authorizeUrl, { sameWindow: true });\n }\n }\n\n async preValidate(): Promise {\n if (this.identifier == null || this.identifier === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('ssoValidationFailed'),\n this.i18nService.t('ssoIdentifierRequired'));\n return false;\n }\n return await this.apiService.preValidateSso(this.identifier);\n }\n\n protected async buildAuthorizeUrl(returnUri?: string, includeUserIdentifier?: boolean): Promise {\n let codeChallenge = this.codeChallenge;\n let state = this.state;\n\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n\n if (codeChallenge == null) {\n const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, 'sha256');\n codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, codeVerifier);\n }\n\n if (state == null) {\n state = await this.passwordGenerationService.generatePassword(passwordOptions);\n if (returnUri) {\n state += `_returnUri='${returnUri}'`;\n }\n }\n\n // Add Organization Identifier to state\n state += `_identifier=${this.identifier}`;\n\n // Save state (regardless of new or existing)\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n\n let authorizeUrl = this.environmentService.getIdentityUrl() + '/connect/authorize?' +\n 'client_id=' + this.clientId + '&redirect_uri=' + encodeURIComponent(this.redirectUri) + '&' +\n 'response_type=code&scope=api offline_access&' +\n 'state=' + state + '&code_challenge=' + codeChallenge + '&' +\n 'code_challenge_method=S256&response_mode=query&' +\n 'domain_hint=' + encodeURIComponent(this.identifier);\n\n if (includeUserIdentifier) {\n const userIdentifier = await this.apiService.getSsoUserIdentifier();\n authorizeUrl += `&user_identifier=${encodeURIComponent(userIdentifier)}`;\n }\n\n return authorizeUrl;\n }\n\n private async logIn(code: string, codeVerifier: string, orgIdFromState: string) {\n this.loggingIn = true;\n try {\n this.formPromise = this.authService.logInSso(code, codeVerifier, this.redirectUri);\n const response = await this.formPromise;\n if (response.twoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute], {\n queryParams: {\n identifier: orgIdFromState,\n sso: 'true',\n },\n });\n }\n } else if (response.resetMasterPassword) {\n if (this.onSuccessfulLoginChangePasswordNavigate != null) {\n this.onSuccessfulLoginChangePasswordNavigate();\n } else {\n this.router.navigate([this.changePasswordRoute], {\n queryParams: {\n identifier: orgIdFromState,\n },\n });\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch { }\n this.loggingIn = false;\n }\n\n private getOrgIdentiferFromState(state: string): string {\n if (state === null || state === undefined) {\n return null;\n }\n\n const stateSplit = state.split('_identifier=');\n return stateSplit.length > 1 ? stateSplit[1] : null;\n }\n\n private checkState(state: string, checkState: string): boolean {\n if (state === null || state === undefined) {\n return false;\n }\n if (checkState === null || checkState === undefined) {\n return false;\n }\n\n const stateSplit = state.split('_identifier=');\n const checkStateSplit = checkState.split('_identifier=');\n return stateSplit[0] === checkStateSplit[0];\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent,\n} from 'jslib-angular/components/two-factor-options.component';\n\n@Component({\n selector: 'app-two-factor-options',\n templateUrl: 'two-factor-options.component.html',\n})\nexport class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService) {\n super(authService, router, i18nService, platformUtilsService, window);\n }\n}\n"," ","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorComponent as BaseTwoFactorComponent } from 'jslib-angular/components/two-factor.component';\n\nimport { TwoFactorOptionsComponent } from './two-factor-options.component';\n\n@Component({\n selector: 'app-two-factor',\n templateUrl: 'two-factor.component.html',\n})\nexport class TwoFactorComponent extends BaseTwoFactorComponent {\n @ViewChild('twoFactorOptions', { read: ViewContainerRef, static: true }) twoFactorOptionsModal: ViewContainerRef;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, apiService: ApiService,\n platformUtilsService: PlatformUtilsService, stateService: StateService,\n environmentService: EnvironmentService, private modalService: ModalService,\n storageService: StorageService, route: ActivatedRoute) {\n super(authService, router, i18nService, apiService, platformUtilsService, window, environmentService,\n stateService, storageService, route);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async anotherMethod() {\n const [modal] = await this.modalService.openViewRef(TwoFactorOptionsComponent, this.twoFactorOptionsModal, comp => {\n comp.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => {\n modal.close();\n this.selectedProviderType = provider;\n await this.init();\n });\n comp.onRecoverSelected.subscribe(() => {\n modal.close();\n });\n });\n }\n\n async goAfterLogIn() {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n}\n","

{{title}}

{{'enterVerificationCodeApp' | i18n}}

{{'enterVerificationCodeEmail' | i18n : twoFactorEmail}}

{{'sendVerificationCodeEmailAgain' | i18n}}

{{'insertYubiKey' | i18n}}

\"\"

{{'noTwoStepProviders' | i18n}}

{{'noTwoStepProviders2' | i18n}}


{{'cancel' | i18n}}
","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorEmailRequest extends PasswordVerificationRequest {\n email: string;\n\n constructor(email: string, masterPasswordHash: string) {\n super();\n this.masterPasswordHash = masterPasswordHash;\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class AuthResult {\n twoFactor: boolean = false;\n captchaSiteKey: string = '';\n resetMasterPassword: boolean = false;\n twoFactorProviders: Map = null;\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from 'jslib-angular/components/update-temp-password.component';\n\n@Component({\n selector: 'app-update-temp-password',\n templateUrl: 'update-temp-password.component.html',\n})\n\nexport class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent {\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, policyService: PolicyService,\n cryptoService: CryptoService, userService: UserService,\n messagingService: MessagingService, apiService: ApiService) {\n super(i18nService, platformUtilsService, passwordGenerationService, policyService, cryptoService,\n userService, messagingService, apiService);\n }\n}\n","

{{'updateMasterPassword' | i18n}}

{{'updateMasterPasswordWarning' | i18n}}
{{'masterPassHintDesc' | i18n}}

","export class OrganizationUserResetPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { VerifyEmailRequest } from 'jslib-common/models/request/verifyEmailRequest';\n\n@Component({\n selector: 'app-verify-email-token',\n templateUrl: 'verify-email-token.component.html',\n})\nexport class VerifyEmailTokenComponent implements OnInit {\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService) { }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null) {\n try {\n await this.apiService.postAccountVerifyEmailToken(\n new VerifyEmailRequest(qParams.userId, qParams.token));\n const authed = await this.userService.isAuthenticated();\n if (authed) {\n await this.apiService.refreshIdentityToken();\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('emailVerified'));\n this.router.navigate(['/']);\n return;\n } catch { }\n }\n this.toasterService.popAsync('error', null, this.i18nService.t('emailVerifiedFailed'));\n this.router.navigate(['/']);\n });\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { VerifyDeleteRecoverRequest } from 'jslib-common/models/request/verifyDeleteRecoverRequest';\n\n@Component({\n selector: 'app-verify-recover-delete',\n templateUrl: 'verify-recover-delete.component.html',\n})\nexport class VerifyRecoverDeleteComponent implements OnInit {\n email: string;\n formPromise: Promise;\n\n private userId: string;\n private token: string;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private route: ActivatedRoute) {\n }\n\n ngOnInit() {\n let fired = false;\n this.route.queryParams.subscribe(async qParams => {\n if (fired) {\n return;\n }\n fired = true;\n if (qParams.userId != null && qParams.token != null && qParams.email != null) {\n this.userId = qParams.userId;\n this.token = qParams.token;\n this.email = qParams.email;\n } else {\n this.router.navigate(['/']);\n }\n });\n }\n\n async submit() {\n try {\n const request = new VerifyDeleteRecoverRequest(this.userId, this.token);\n this.formPromise = this.apiService.postAccountRecoverDeleteToken(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteAccountWarning' | i18n}}

{{email}}

{{'deleteRecoverConfirmDesc' | i18n}}


{{'cancel' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { CollectionRequest } from 'jslib-common/models/request/collectionRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-collection-add-edit',\n templateUrl: 'collection-add-edit.component.html',\n})\nexport class CollectionAddEditComponent implements OnInit {\n @Input() collectionId: string;\n @Input() organizationId: string;\n @Output() onSavedCollection = new EventEmitter();\n @Output() onDeletedCollection = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n accessGroups: boolean = false;\n title: string;\n name: string;\n externalId: string;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n private orgKey: SymmetricCryptoKey;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService, private userService: UserService) { }\n\n async ngOnInit() {\n const organization = await this.userService.getOrganization(this.organizationId);\n this.accessGroups = organization.useGroups;\n this.editMode = this.loading = this.collectionId != null;\n if (this.accessGroups) {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n this.groups = groupsResponse.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n this.orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editCollection');\n try {\n const collection = await this.apiService.getCollectionDetails(this.organizationId, this.collectionId);\n this.name = await this.cryptoService.decryptToUtf8(new EncString(collection.name), this.orgKey);\n this.externalId = collection.externalId;\n if (collection.groups != null && this.groups.length > 0) {\n collection.groups.forEach(s => {\n const group = this.groups.filter(g => !g.accessAll && g.id === s.id);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n (group[0] as any).readOnly = s.readOnly;\n (group[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addCollection');\n }\n\n this.groups.forEach(g => {\n if (g.accessAll) {\n (g as any).checked = true;\n }\n });\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n if (g.accessAll) {\n return;\n }\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n (g as any).hidePasswords = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n if (this.orgKey == null) {\n throw new Error('No encryption key for this organization.');\n }\n\n const request = new CollectionRequest();\n request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString;\n request.externalId = this.externalId;\n request.groups = this.groups.filter(g => (g as any).checked && !g.accessAll)\n .map(g => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly, !!(g as any).hidePasswords));\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putCollection(this.organizationId, this.collectionId, request);\n } else {\n this.formPromise = this.apiService.postCollection(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedCollectionId' : 'createdCollectionId', this.name));\n this.onSavedCollection.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', this.name));\n this.onDeletedCollection.emit();\n } catch { }\n }\n}\n","

{{title}}

{{'loading' | i18n}}
{{'externalIdDesc' | i18n}}

{{'groupAccess' | i18n}}

{{'noGroupsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{g.name}} {{'groupAccessAllItems' | i18n}}
","import { Collection } from '../domain/collection';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class CollectionRequest {\n name: string;\n externalId: string;\n groups: SelectionReadOnlyRequest[] = [];\n\n constructor(collection?: Collection) {\n if (collection == null) {\n return;\n }\n this.name = collection.name ? collection.name.encryptedString : null;\n this.externalId = collection.externalId;\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport {\n CollectionDetailsResponse,\n CollectionResponse,\n} from 'jslib-common/models/response/collectionResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { CollectionAddEditComponent } from './collection-add-edit.component';\nimport { EntityUsersComponent } from './entity-users.component';\n\n@Component({\n selector: 'app-org-manage-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n collections: CollectionView[];\n pagedCollections: CollectionView[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedCollectionsCount = 0;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private collectionService: CollectionService, private modalService: ModalService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private searchService: SearchService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const organization = await this.userService.getOrganization(this.organizationId);\n let response: ListResponse;\n if (organization.canManageAllCollections) {\n response = await this.apiService.getCollections(this.organizationId);\n } else {\n response = await this.apiService.getUserCollections();\n }\n const collections = response.data.filter(c => c.organizationId === this.organizationId).map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.collections || this.collections.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCollections.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) {\n pagedSize = this.pagedCollectionsCount;\n }\n if (this.collections.length > pagedLength) {\n this.pagedCollections =\n this.pagedCollections.concat(this.collections.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCollectionsCount = this.pagedCollections.length;\n this.didScroll = this.pagedCollections.length > this.pageSize;\n }\n\n async edit(collection: CollectionView) {\n const [modal] = await this.modalService.openViewRef(CollectionAddEditComponent, this.addEditModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.collectionId = collection != null ? collection.id : null;\n comp.onSavedCollection.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedCollection.subscribe(() => {\n modal.close();\n this.removeCollection(collection);\n });\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(collection: CollectionView) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), collection.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteCollection(this.organizationId, collection.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', collection.name));\n this.removeCollection(collection);\n } catch { }\n }\n\n async users(collection: CollectionView) {\n const [modal] = await this.modalService.openViewRef(EntityUsersComponent, this.usersModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.entity = 'collection';\n comp.entityId = collection.id;\n comp.entityName = collection.name;\n\n comp.onEditedUsers.subscribe(() => {\n this.load();\n modal.close();\n });\n });\n }\n\n async resetPaging() {\n this.pagedCollections = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.collections && this.collections.length > this.pageSize;\n }\n\n private removeCollection(collection: CollectionView) {\n const index = this.collections.indexOf(collection);\n if (index > -1) {\n this.collections.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","

{{'collections' | i18n}}

{{'loading' | i18n}}

{{'noCollectionsInList' | i18n}}

{{c.name}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\n\nimport { EventService } from '../../services/event.service';\n\nimport { BaseEventsComponent } from '../../common/base.events.component';\n\n@Component({\n selector: 'app-org-events',\n templateUrl: 'events.component.html',\n})\nexport class EventsComponent extends BaseEventsComponent implements OnInit {\n exportFileName: string = 'org-events';\n organizationId: string;\n organization: Organization;\n\n private orgUsersUserIdMap = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute, eventService: EventService,\n i18nService: I18nService, toasterService: ToasterService, private userService: UserService,\n exportService: ExportService, platformUtilsService: PlatformUtilsService, private router: Router,\n logService: LogService, private userNamePipe: UserNamePipe) {\n super(eventService, i18nService, toasterService, exportService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.organization = await this.userService.getOrganization(this.organizationId);\n if (this.organization == null || !this.organization.useEvents) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n\n if (this.organization.providerId != null) {\n try {\n const provider = await this.userService.getProvider(this.organization.providerId);\n if (provider != null && (await this.userService.getProvider(this.organization.providerId)).canManageUsers) {\n const providerUsersResponse = await this.apiService.getProviderUsers(this.organization.providerId);\n providerUsersResponse.data.forEach(u => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, { name: `${name} (${this.organization.providerName})`, email: u.email });\n });\n }\n } catch (e) {\n this.logService.warning(e);\n }\n }\n\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n protected requestEvents(startDate: string, endDate: string, continuationToken: string) {\n return this.apiService.getEventsOrganization(this.organizationId, startDate, endDate, continuationToken);\n }\n\n protected getUserName(r: EventResponse, userId: string) {\n if (userId == null) {\n return null;\n }\n\n if (this.orgUsersUserIdMap.has(userId)) {\n return this.orgUsersUserIdMap.get(userId);\n }\n\n if (r.providerId != null && r.providerId === this.organization.providerId) {\n return {\n 'name': this.organization.providerName,\n };\n }\n\n return null;\n }\n}\n","

{{'eventLogs' | i18n}}

-
{{'loading' | i18n}}

{{'noEventsInList' | i18n}}

{{'timestamp' | i18n}} {{'device' | i18n}} {{'user' | i18n}} {{'event' | i18n}}
{{e.date | date:'medium'}} {{e.appName}}, {{e.ip}} {{e.userName}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { GroupRequest } from 'jslib-common/models/request/groupRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\n@Component({\n selector: 'app-group-add-edit',\n templateUrl: 'group-add-edit.component.html',\n})\nexport class GroupAddEditComponent implements OnInit {\n @Input() groupId: string;\n @Input() organizationId: string;\n @Output() onSavedGroup = new EventEmitter();\n @Output() onDeletedGroup = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n name: string;\n externalId: string;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.groupId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editGroup');\n try {\n const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId);\n this.access = group.accessAll ? 'all' : 'selected';\n this.name = group.name;\n this.externalId = group.externalId;\n if (group.collections != null && this.collections != null) {\n group.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('addGroup');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n async submit() {\n const request = new GroupRequest();\n request.name = this.name;\n request.externalId = this.externalId;\n request.accessAll = this.access === 'all';\n if (!request.accessAll) {\n request.collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request);\n } else {\n this.formPromise = this.apiService.postGroup(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedGroupId' : 'createdGroupId', this.name));\n this.onSavedGroup.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', this.name));\n this.onDeletedGroup.emit();\n } catch { }\n }\n}\n","

{{title}}

{{'loading' | i18n}}
{{'externalIdDesc' | i18n}}

{{'accessControl' | i18n}}

{{'noCollectionsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{c.name}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { EntityUsersComponent } from './entity-users.component';\nimport { GroupAddEditComponent } from './group-add-edit.component';\n\n@Component({\n selector: 'app-org-groups',\n templateUrl: 'groups.component.html',\n})\nexport class GroupsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n groups: GroupResponse[];\n pagedGroups: GroupResponse[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedGroupsCount = 0;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private modalService: ModalService,\n private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService,\n private userService: UserService, private router: Router,\n private searchService: SearchService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useGroups) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n await this.load();\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getGroups(this.organizationId);\n const groups = response.data != null && response.data.length > 0 ? response.data : [];\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.groups || this.groups.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedGroups.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) {\n pagedSize = this.pagedGroupsCount;\n }\n if (this.groups.length > pagedLength) {\n this.pagedGroups = this.pagedGroups.concat(this.groups.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedGroupsCount = this.pagedGroups.length;\n this.didScroll = this.pagedGroups.length > this.pageSize;\n }\n\n async edit(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(GroupAddEditComponent, this.addEditModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.groupId = group != null ? group.id : null;\n comp.onSavedGroup.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedGroup.subscribe(() => {\n modal.close();\n this.removeGroup(group);\n });\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(group: GroupResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), group.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteGroup(this.organizationId, group.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', group.name));\n this.removeGroup(group);\n } catch { }\n }\n\n async users(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(EntityUsersComponent, this.usersModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.entity = 'group';\n comp.entityId = group.id;\n comp.entityName = group.name;\n\n comp.onEditedUsers.subscribe(() => {\n modal.close();\n });\n });\n }\n\n async resetPaging() {\n this.pagedGroups = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.groups && this.groups.length > this.pageSize;\n }\n\n private removeGroup(group: GroupResponse) {\n const index = this.groups.indexOf(group);\n if (index > -1) {\n this.groups.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","

{{'groups' | i18n}}

{{'loading' | i18n}}

{{'noGroupsInList' | i18n}}

{{g.name}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-org-manage',\n templateUrl: 'manage.component.html',\n})\nexport class ManageComponent implements OnInit {\n organization: Organization;\n accessPolicies = false;\n accessGroups = false;\n accessEvents = false;\n\n constructor(private route: ActivatedRoute, private userService: UserService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.accessPolicies = this.organization.usePolicies;\n this.accessEvents = this.organization.useEvents;\n this.accessGroups = this.organization.useGroups;\n });\n }\n}\n"," ","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from 'jslib-common/models/request/organizationUserConfirmRequest';\n\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { OrganizationUserBulkResponse } from 'jslib-common/models/response/organizationUserBulkResponse';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { BasePeopleComponent } from '../../common/base.people.component';\nimport { BulkConfirmComponent } from './bulk/bulk-confirm.component';\nimport { BulkRemoveComponent } from './bulk/bulk-remove.component';\nimport { BulkStatusComponent } from './bulk/bulk-status.component';\nimport { EntityEventsComponent } from './entity-events.component';\nimport { ResetPasswordComponent } from './reset-password.component';\nimport { UserAddEditComponent } from './user-add-edit.component';\nimport { UserGroupsComponent } from './user-groups.component';\n\n@Component({\n selector: 'app-org-people',\n templateUrl: 'people.component.html',\n})\nexport class PeopleComponent extends BasePeopleComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('groupsTemplate', { read: ViewContainerRef, static: true }) groupsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n @ViewChild('resetPasswordTemplate', { read: ViewContainerRef, static: true }) resetPasswordModalRef: ViewContainerRef;\n @ViewChild('bulkStatusTemplate', { read: ViewContainerRef, static: true }) bulkStatusModalRef: ViewContainerRef;\n @ViewChild('bulkConfirmTemplate', { read: ViewContainerRef, static: true }) bulkConfirmModalRef: ViewContainerRef;\n @ViewChild('bulkRemoveTemplate', { read: ViewContainerRef, static: true }) bulkRemoveModalRef: ViewContainerRef;\n\n userType = OrganizationUserType;\n userStatusType = OrganizationUserStatusType;\n\n organizationId: string;\n status: OrganizationUserStatusType = null;\n accessEvents = false;\n accessGroups = false;\n canResetPassword = false; // User permission (admin/custom)\n orgUseResetPassword = false; // Org plan ability\n orgHasKeys = false; // Org public/private keys\n orgResetPasswordPolicyEnabled = false;\n callingUserType: OrganizationUserType = null;\n\n constructor(apiService: ApiService, private route: ActivatedRoute,\n i18nService: I18nService, modalService: ModalService,\n platformUtilsService: PlatformUtilsService, toasterService: ToasterService,\n cryptoService: CryptoService, private userService: UserService, private router: Router,\n storageService: StorageService, searchService: SearchService,\n validationService: ValidationService, private policyService: PolicyService,\n logService: LogService, searchPipe: SearchPipe, userNamePipe: UserNamePipe, private syncService: SyncService) {\n super(apiService, searchService, i18nService, platformUtilsService, toasterService, cryptoService,\n storageService, validationService, modalService, logService, searchPipe, userNamePipe);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (!organization.canManageUsers) {\n this.router.navigate(['../collections'], { relativeTo: this.route });\n return;\n }\n this.accessEvents = organization.useEvents;\n this.accessGroups = organization.useGroups;\n this.canResetPassword = organization.canManageUsersPassword;\n this.orgUseResetPassword = organization.useResetPassword;\n this.callingUserType = organization.type;\n this.orgHasKeys = organization.hasPublicAndPrivateKeys;\n\n // Backfill pub/priv key if necessary\n if (this.canResetPassword && !this.orgHasKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n const response = await this.apiService.postOrganizationKeys(this.organizationId, request);\n if (response != null) {\n this.orgHasKeys = response.publicKey != null && response.privateKey != null;\n await this.syncService.fullSync(true); // Replace oganizations with new data\n } else {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n }\n\n await this.load();\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter(u => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n }\n\n async load() {\n const resetPasswordPolicy = await this.policyService.getPolicyForOrganization(PolicyType.ResetPassword,\n this.organizationId);\n this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled;\n super.load();\n }\n\n getUsers(): Promise> {\n return this.apiService.getOrganizationUsers(this.organizationId);\n }\n\n deleteUser(id: string): Promise {\n return this.apiService.deleteOrganizationUser(this.organizationId, id);\n }\n\n reinviteUser(id: string): Promise {\n return this.apiService.postOrganizationUserReinvite(this.organizationId, id);\n }\n\n async confirmUser(user: OrganizationUserUserDetailsResponse, publicKey: Uint8Array): Promise {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request);\n }\n\n allowResetPassword(orgUser: OrganizationUserUserDetailsResponse): boolean {\n // Hierarchy check\n let callingUserHasPermission = false;\n\n switch (this.callingUserType) {\n case OrganizationUserType.Owner:\n callingUserHasPermission = true;\n break;\n case OrganizationUserType.Admin:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner;\n break;\n case OrganizationUserType.Custom:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner\n && orgUser.type !== OrganizationUserType.Admin;\n break;\n }\n\n // Final\n return this.canResetPassword && callingUserHasPermission && this.orgUseResetPassword && this.orgHasKeys\n && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled\n && orgUser.status === OrganizationUserStatusType.Confirmed;\n }\n\n showEnrolledStatus(orgUser: OrganizationUserUserDetailsResponse): boolean {\n return this.orgUseResetPassword && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled;\n }\n\n async edit(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(UserAddEditComponent, this.addEditModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedUser.subscribe(() => {\n modal.close();\n this.removeUser(user);\n });\n });\n }\n\n async groups(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(UserGroupsComponent, this.groupsModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n });\n });\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkRemoveComponent, this.bulkRemoveModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n });\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter(u => u.status === OrganizationUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('noSelectedUsersApplicable'));\n return;\n }\n\n try {\n const request = new OrganizationUserBulkRequest(filteredUsers.map(user => user.id));\n const response = this.apiService.postManyOrganizationUserReinvite(this.organizationId, request);\n this.showBulkStatus(users, filteredUsers, response, this.i18nService.t('bulkReinviteMessage'));\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkConfirmComponent, this.bulkConfirmModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n });\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async events(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.entityId = user.id;\n comp.showUser = false;\n comp.entity = 'user';\n });\n }\n\n async resetPassword(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(ResetPasswordComponent, this.resetPasswordModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.email = user != null ? user.email : null;\n comp.organizationId = this.organizationId;\n comp.id = user != null ? user.id : null;\n\n comp.onPasswordReset.subscribe(() => {\n modal.close();\n this.load();\n });\n });\n }\n\n private async showBulkStatus(users: OrganizationUserUserDetailsResponse[], filteredUsers: OrganizationUserUserDetailsResponse[],\n request: Promise>, successfullMessage: string) {\n\n const [modal, childComponent] = await this.modalService.openViewRef(BulkStatusComponent, this.bulkStatusModalRef, comp => {\n comp.loading = true;\n });\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n modal.onShown.subscribe(() => {\n if (close) {\n modal.close();\n }\n });\n\n try {\n const response = await request;\n\n if (modal) {\n const keyedErrors: any = response.data.filter(r => r.error !== '').reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map(user => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t('bulkFilteredMessage');\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id),\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n modal.close();\n }\n }\n}\n","

{{'people' | i18n}}

{{'loading' | i18n}}

{{'noUsersInList' | i18n}}

{{'usersNeedConfirmed' | i18n}}
{{u.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{u.name}} {{'userUsingTwoStep' | i18n}} {{'enrolledPasswordReset' | i18n}} {{'owner' | i18n}} {{'admin' | i18n}} {{'manager' | i18n}} {{'user' | i18n}} {{'custom' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { OrganizationUserResetPasswordRequest } from 'jslib-common/models/request/organizationUserResetPasswordRequest';\n\n@Component({\n selector: 'app-reset-password',\n templateUrl: 'reset-password.component.html',\n})\nexport class ResetPasswordComponent implements OnInit {\n @Input() name: string;\n @Input() email: string;\n @Input() id: string;\n @Input() organizationId: string;\n @Output() onPasswordReset = new EventEmitter();\n\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n newPassword: string = null;\n showPassword: boolean = false;\n masterPasswordScore: number;\n formPromise: Promise;\n private newPasswordStrengthTimeout: any;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private passwordGenerationService: PasswordGenerationService,\n private policyService: PolicyService, private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n // Get Enforced Policy Options\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n get loggedOutWarningName() {\n return this.name != null ? this.name : this.i18nService.t('thisUser');\n }\n\n async generatePassword() {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.newPassword = await this.passwordGenerationService.generatePassword(options);\n this.updatePasswordStrength();\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('newPassword').focus();\n }\n\n copy(value: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n async submit() {\n // Validation\n if (this.newPassword == null || this.newPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n\n if (this.newPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return false;\n }\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.newPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n if (this.masterPasswordScore < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return false;\n }\n }\n\n // Get user Information (kdf type, kdf iterations, resetPasswordKey, private key) and change password\n try {\n this.formPromise = this.apiService.getOrganizationUserResetPasswordDetails(this.organizationId, this.id)\n .then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordDetailsError'));\n }\n\n const kdfType = response.kdf;\n const kdfIterations = response.kdfIterations;\n const resetPasswordKey = response.resetPasswordKey;\n const encryptedPrivateKey = response.encryptedPrivateKey;\n\n // Decrypt Organization's encrypted Private Key with org key\n const orgSymKey = await this.cryptoService.getOrgKey(this.organizationId);\n const decPrivateKey = await this.cryptoService.decryptToBytes(new EncString(encryptedPrivateKey), orgSymKey);\n\n // Decrypt User's Reset Password Key to get EncKey\n const decValue = await this.cryptoService.rsaDecrypt(resetPasswordKey, decPrivateKey);\n const userEncKey = new SymmetricCryptoKey(decValue);\n\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(this.newPassword, this.email.trim().toLowerCase(),\n kdfType, kdfIterations);\n const newPasswordHash = await this.cryptoService.hashPassword(this.newPassword, newKey);\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n // Create request\n const request = new OrganizationUserResetPasswordRequest();\n request.key = newEncKey[1].encryptedString;\n request.newMasterPasswordHash = newPasswordHash;\n\n // Change user's password\n return this.apiService.putOrganizationUserResetPassword(this.organizationId, this.id, request);\n });\n\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('resetPasswordSuccess'));\n this.onPasswordReset.emit();\n } catch { }\n }\n\n updatePasswordStrength() {\n if (this.newPasswordStrengthTimeout != null) {\n clearTimeout(this.newPasswordStrengthTimeout);\n }\n this.newPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.newPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","

{{'resetPassword' | i18n}} {{name}}

{{'resetPasswordLoggedOutWarning' | i18n: loggedOutWarningName}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { OrganizationUserInviteRequest } from 'jslib-common/models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateRequest } from 'jslib-common/models/request/organizationUserUpdateRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PermissionsApi } from 'jslib-common/models/api/permissionsApi';\n\n@Component({\n selector: 'app-user-add-edit',\n templateUrl: 'user-add-edit.component.html',\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n emails: string;\n type: OrganizationUserType = OrganizationUserType.User;\n permissions = new PermissionsApi();\n showCustom = false;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\n\n get customUserTypeSelected(): boolean {\n return this.type === OrganizationUserType.Custom;\n }\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.organizationUserId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editUser');\n try {\n const user = await this.apiService.getOrganizationUser(this.organizationId, this.organizationUserId);\n this.access = user.accessAll ? 'all' : 'selected';\n this.type = user.type;\n if (user.type === OrganizationUserType.Custom) {\n this.permissions = user.permissions;\n }\n if (user.collections != null && this.collections != null) {\n user.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteUser');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n setRequestPermissions(p: PermissionsApi, clearPermissions: boolean) {\n p.accessBusinessPortal = clearPermissions ?\n false :\n this.permissions.accessBusinessPortal;\n p.accessEventLogs = this.permissions.accessEventLogs = clearPermissions ?\n false :\n this.permissions.accessEventLogs;\n p.accessImportExport = clearPermissions ?\n false :\n this.permissions.accessImportExport;\n p.accessReports = clearPermissions ?\n false :\n this.permissions.accessReports;\n p.manageAllCollections = clearPermissions ?\n false :\n this.permissions.manageAllCollections;\n p.manageAssignedCollections = clearPermissions ?\n false :\n this.permissions.manageAssignedCollections;\n p.manageGroups = clearPermissions ?\n false :\n this.permissions.manageGroups;\n p.manageSso = clearPermissions ?\n false :\n this.permissions.manageSso;\n p.managePolicies = clearPermissions ?\n false :\n this.permissions.managePolicies;\n p.manageUsers = clearPermissions ?\n false :\n this.permissions.manageUsers;\n p.manageResetPassword = clearPermissions ?\n false :\n this.permissions.manageResetPassword;\n return p;\n }\n\n handleDependentPermissions() {\n // Manage Password Reset must have Manage Users enabled\n if (this.permissions.manageResetPassword && !this.permissions.manageUsers) {\n this.permissions.manageUsers = true;\n (document.getElementById('manageUsers') as HTMLInputElement).checked = true;\n this.platformUtilsService.showToast('info', null, this.i18nService.t('resetPasswordManageUsers'));\n }\n }\n\n async submit() {\n let collections: SelectionReadOnlyRequest[] = null;\n if (this.access !== 'all') {\n collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n const request = new OrganizationUserUpdateRequest();\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.collections = collections;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n this.formPromise = this.apiService.putOrganizationUser(this.organizationId, this.organizationUserId,\n request);\n } else {\n const request = new OrganizationUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n request.collections = collections;\n this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteOrganizationUser(this.organizationId, this.organizationUserId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.name));\n this.onDeletedUser.emit();\n } catch { }\n }\n\n}\n","

{{title}} {{name}}

{{'loading' | i18n}}

{{'inviteUserDesc' | i18n}}

{{'inviteMultipleEmailDesc' | i18n : '20'}}

{{'userType' | i18n}}

{{'permissions' | i18n}}



{{'accessControl' | i18n}}

{{'noCollectionsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{c.name}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { OrganizationUserUpdateGroupsRequest } from 'jslib-common/models/request/organizationUserUpdateGroupsRequest';\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-user-groups',\n templateUrl: 'user-groups.component.html',\n})\nexport class UserGroupsComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n\n loading = true;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n const groups = groupsResponse.data.map(r => r);\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n\n try {\n const userGroups = await this.apiService.getOrganizationUserGroups(\n this.organizationId, this.organizationUserId);\n if (userGroups != null && this.groups != null) {\n userGroups.forEach(ug => {\n const group = this.groups.filter(g => g.id === ug);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n }\n });\n }\n } catch { }\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n const request = new OrganizationUserUpdateGroupsRequest();\n request.groupIds = this.groups.filter(g => (g as any).checked).map(g => g.id);\n\n try {\n this.formPromise = this.apiService.putOrganizationUserGroups(this.organizationId, this.organizationUserId,\n request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('editedGroupsForUser', this.name));\n this.onSavedUser.emit();\n } catch { }\n }\n}\n","

{{'groupAccess' | i18n}} {{name}}

{{'loading' | i18n}}

{{'groupAccessUserDesc' | i18n}}

{{'noGroupsInList' | i18n}}
{{g.name}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { PolicyEditComponent } from './policy-edit.component';\n\nimport { PolicyListService } from 'src/app/services/policy-list.service';\nimport { BasePolicy } from '../policies/base-policy.component';\n\n@Component({\n selector: 'app-org-policies',\n templateUrl: 'policies.component.html',\n})\nexport class PoliciesComponent implements OnInit {\n @ViewChild('editTemplate', { read: ViewContainerRef, static: true }) editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: BasePolicy[];\n organization: Organization;\n\n // Remove when removing deprecation warning\n enterpriseTokenPromise: Promise;\n\n private enterpriseUrl: string;\n\n private orgPolicies: PolicyResponse[];\n private policiesEnabledMap: Map = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private modalService: ModalService,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private policyListService: PolicyListService, private router: Router,\n private environmentService: EnvironmentService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.organization = await this.userService.getOrganization(this.organizationId);\n if (this.organization == null || !this.organization.usePolicies) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n\n this.policies = this.policyListService.getPolicies();\n\n await this.load();\n\n // Handle policies component launch from Event message\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.policyId != null) {\n const policyIdFromEvents: string = qParams.policyId;\n for (const orgPolicy of this.orgPolicies) {\n if (orgPolicy.id === policyIdFromEvents) {\n for (let i = 0; i < this.policies.length; i++) {\n if (this.policies[i].type === orgPolicy.type) {\n this.edit(this.policies[i]);\n break;\n }\n }\n break;\n }\n }\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n });\n\n // Remove when removing deprecation warning\n this.enterpriseUrl = this.environmentService.getEnterpriseUrl();\n }\n\n async load() {\n const response = await this.apiService.getPolicies(this.organizationId);\n this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : [];\n this.orgPolicies.forEach(op => {\n this.policiesEnabledMap.set(op.type, op.enabled);\n });\n\n this.loading = false;\n }\n\n async edit(policy: BasePolicy) {\n const [modal] = await this.modalService.openViewRef(PolicyEditComponent, this.editModalRef, comp => {\n comp.policy = policy;\n comp.organizationId = this.organizationId;\n comp.policiesEnabledMap = this.policiesEnabledMap;\n comp.onSavedPolicy.subscribe(() => {\n modal.close();\n this.load();\n });\n });\n }\n\n // Remove when removing deprecation warning\n async goToEnterprisePortal() {\n if (this.enterpriseTokenPromise != null) {\n return;\n }\n try {\n this.enterpriseTokenPromise = this.apiService.getEnterprisePortalSignInToken();\n const token = await this.enterpriseTokenPromise;\n if (token != null) {\n const userId = await this.userService.getUserId();\n this.platformUtilsService.launchUri(this.enterpriseUrl + '/login?userId=' + userId +\n '&token=' + (window as any).encodeURIComponent(token) + '&organizationId=' + this.organizationId);\n }\n } catch { }\n this.enterpriseTokenPromise = null;\n }\n}\n","

{{'policies' | i18n}}

{{'loading' | i18n}}
{{p.name | i18n}} {{'enabled' | i18n}} {{p.description | i18n}}
","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { BasePolicy, BasePolicyComponent } from '../policies/base-policy.component';\n\n@Component({\n selector: 'app-policy-edit',\n templateUrl: 'policy-edit.component.html',\n})\nexport class PolicyEditComponent {\n @Input() policy: BasePolicy;\n @Input() organizationId: string;\n @Input() policiesEnabledMap: Map = new Map();\n @Output() onSavedPolicy = new EventEmitter();\n\n @ViewChild('policyForm', { read: ViewContainerRef, static: true }) policyFormRef: ViewContainerRef;\n\n policyType = PolicyType;\n loading = true;\n enabled = false;\n formPromise: Promise;\n defaultTypes: any[];\n policyComponent: BasePolicyComponent;\n\n private policyResponse: PolicyResponse;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef) {\n }\n\n async ngAfterViewInit() {\n await this.load();\n this.loading = false;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.policy.component);\n this.policyComponent = this.policyFormRef.createComponent(factory).instance as BasePolicyComponent;\n this.policyComponent.policy = this.policy;\n this.policyComponent.policyResponse = this.policyResponse;\n\n this.cdr.detectChanges();\n }\n\n async load() {\n try {\n this.policyResponse = await this.apiService.getPolicy(this.organizationId, this.policy.type);\n } catch (e) {\n if (e.statusCode === 404) {\n this.policyResponse = new PolicyResponse({Enabled: false});\n } else {\n throw e;\n }\n }\n }\n\n async submit() {\n let request: PolicyRequest;\n try {\n request = await this.policyComponent.buildRequest(this.policiesEnabledMap);\n } catch (e) {\n this.toasterService.pop('error', null, e);\n return;\n }\n\n try {\n this.formPromise = this.apiService.putPolicy(this.organizationId, this.policy.type, request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('editedPolicyId', this.i18nService.t(this.policy.name)));\n this.onSavedPolicy.emit();\n } catch {}\n }\n}\n","

{{'editPolicy' | i18n}} - {{policy.name | i18n}}

{{'loading' | i18n}}

{{policy.description | i18n}}

","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUpdateRequest } from 'jslib-common/models/request/organizationUpdateRequest';\n\nimport { OrganizationResponse } from 'jslib-common/models/response/organizationResponse';\n\nimport { ApiKeyComponent } from '../../settings/api-key.component';\nimport { PurgeVaultComponent } from '../../settings/purge-vault.component';\nimport { TaxInfoComponent } from '../../settings/tax-info.component';\n\nimport { DeleteOrganizationComponent } from './delete-organization.component';\n\n@Component({\n selector: 'app-org-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deleteOrganizationTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('purgeOrganizationTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('apiKeyTemplate', { read: ViewContainerRef, static: true }) apiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateApiKeyModalRef: ViewContainerRef;\n @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent;\n\n selfHosted = false;\n loading = true;\n canUseApi = false;\n org: OrganizationResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private organizationId: string;\n\n constructor(private modalService: ModalService,\n private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private route: ActivatedRoute,\n private syncService: SyncService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n try {\n this.org = await this.apiService.getOrganization(this.organizationId);\n this.canUseApi = this.org.useApi;\n } catch { }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new OrganizationUpdateRequest();\n request.name = this.org.name;\n request.businessName = this.org.businessName;\n request.billingEmail = this.org.billingEmail;\n request.identifier = this.org.identifier;\n\n // Backfill pub/priv key if necessary\n if (!this.org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpdated'));\n } catch { }\n }\n\n async submitTaxInfo() {\n this.taxFormPromise = this.taxInfo.submitTaxInfo();\n await this.taxFormPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('taxInfoUpdated'));\n }\n\n async deleteOrganization() {\n await this.modalService.openViewRef(DeleteOrganizationComponent, this.deleteModalRef, comp => {\n comp.organizationId = this.organizationId;\n });\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef, comp => {\n comp.organizationId = this.organizationId;\n });\n }\n\n async viewApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.apiKeyModalRef, comp => {\n comp.keyType = 'organization';\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationApiKey.bind(this.apiService);\n comp.scope = 'api.organization';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'apiKeyWarning';\n comp.apiKeyDescription = 'apiKeyDesc';\n });\n }\n\n async rotateApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateApiKeyModalRef, comp => {\n comp.keyType = 'organization';\n comp.isRotation = true;\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationRotateApiKey.bind(this.apiService);\n comp.scope = 'api.organization';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'apiKeyWarning';\n comp.apiKeyDescription = 'apiKeyRotateDesc';\n });\n }\n}\n","

{{'myOrganization' | i18n}}

{{'loading' | i18n}}

{{'apiKey' | i18n}}

{{'apiKeyDesc' | i18n}} {{'learnMore' | i18n}}

{{'taxInformation' | i18n}}

{{'taxInformationDesc' | i18n}}

{{'loading' | i18n}}

{{'dangerZone' | i18n}}

{{'dangerZoneDesc' | i18n}}

","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-organization',\n templateUrl: 'delete-organization.component.html',\n})\nexport class DeleteOrganizationComponent {\n organizationId: string;\n\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private router: Router) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteOrganization(this.organizationId, request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('organizationDeleted'),\n this.i18nService.t('organizationDeletedDesc'));\n this.router.navigate(['/']);\n } catch { }\n }\n}\n","

{{'deleteOrganization' | i18n}}

{{'deleteOrganizationDesc' | i18n}}

{{'deleteOrganizationWarning' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { SeatRequest } from 'jslib-common/models/request/seatRequest';\n\nimport { PaymentComponent } from '../../settings/payment.component';\n\n@Component({\n selector: 'app-adjust-seats',\n templateUrl: 'adjust-seats.component.html',\n})\nexport class AdjustSeatsComponent {\n @Input() seatPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n seatAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router,\n private activatedRoute: ActivatedRoute) { }\n\n async submit() {\n try {\n const request = new SeatRequest();\n request.seatAdjustment = this.seatAdjustment;\n if (!this.add) {\n request.seatAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n const result = await this.apiService.postOrganizationSeat(this.organizationId, request);\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.onAdjusted.emit(this.seatAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedSeats', request.seatAdjustment.toString()));\n }\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedSeatTotal(): number {\n return this.seatAdjustment * this.seatPrice;\n }\n}\n","

{{(add ? 'addSeats' : 'removeSeats') | i18n}}

{{'total' | i18n}}: {{seatAdjustment || 0}} × {{seatPrice | currency:'$'}} = {{adjustedSeatTotal | currency:'$'}} /{{interval | i18n}}
{{(add ? 'seatsAddNote' : 'seatsRemoveNote') | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\n@Component({\n selector: 'app-change-plan',\n templateUrl: 'change-plan.component.html',\n})\nexport class ChangePlanComponent {\n @Input() organizationId: string;\n @Output() onChanged = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n defaultUpgradePlan: PlanType = PlanType.FamiliesAnnually;\n defaultUpgradeProduct: ProductType = ProductType.Families;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n try {\n this.onChanged.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","

{{'changeBillingPlan' | i18n}}

{{'changeBillingPlanUpgrade' | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-download-license',\n templateUrl: 'download-license.component.html',\n})\nexport class DownloadLicenseComponent {\n @Input() organizationId: string;\n @Output() onDownloaded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n installationId: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.installationId == null || this.installationId === '') {\n return;\n }\n\n try {\n this.formPromise = this.apiService.getOrganizationLicense(this.organizationId, this.installationId);\n const license = await this.formPromise;\n const licenseString = JSON.stringify(license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_organization_license.json');\n this.onDownloaded.emit();\n } catch { }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","

{{'downloadLicense' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { UserBillingComponent } from '../../settings/user-billing.component';\n\n@Component({\n selector: 'app-org-billing',\n templateUrl: '../../settings/user-billing.component.html',\n})\nexport class OrganizationBillingComponent extends UserBillingComponent implements OnInit {\n constructor(apiService: ApiService, i18nService: I18nService, toasterService: ToasterService,\n private route: ActivatedRoute, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { OrganizationSubscriptionResponse } from 'jslib-common/models/response/organizationSubscriptionResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { UserService } from 'jslib-common/abstractions';\nimport { PlanType } from 'jslib-common/enums/planType';\n\n@Component({\n selector: 'app-org-subscription',\n templateUrl: 'organization-subscription.component.html',\n})\nexport class OrganizationSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n organizationId: string;\n adjustSeatsAdd = true;\n showAdjustSeats = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n showDownloadLicense = false;\n showChangePlan = false;\n sub: OrganizationSubscriptionResponse;\n selfHosted = false;\n\n userOrg: Organization;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private toasterService: ToasterService,\n private messagingService: MessagingService, private route: ActivatedRoute,\n private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n this.userOrg = await this.userService.getOrganization(this.organizationId);\n this.sub = await this.apiService.getOrganizationSubscription(this.organizationId);\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId);\n await this.reinstatePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId);\n await this.cancelPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n async changePlan() {\n if (this.subscription == null && this.sub.planType === PlanType.Free) {\n this.showChangePlan = !this.showChangePlan;\n return;\n }\n const contactSupport = await this.platformUtilsService.showDialog(this.i18nService.t('changeBillingPlanDesc'),\n this.i18nService.t('changeBillingPlan'), this.i18nService.t('contactSupport'), this.i18nService.t('close'));\n if (contactSupport) {\n this.platformUtilsService.launchUri('https://github.com/dani-garcia/vaultwarden');\n }\n }\n\n closeChangePlan(changed: boolean) {\n this.showChangePlan = false;\n }\n\n downloadLicense() {\n this.showDownloadLicense = !this.showDownloadLicense;\n }\n\n closeDownloadLicense() {\n this.showDownloadLicense = false;\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(updated: boolean) {\n this.showUpdateLicense = false;\n if (updated) {\n this.load();\n this.messagingService.send('updatedOrgLicense');\n }\n }\n\n adjustSeats(add: boolean) {\n this.adjustSeatsAdd = add;\n this.showAdjustSeats = true;\n }\n\n closeSeats(load: boolean) {\n this.showAdjustSeats = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get isExpired() {\n return this.sub != null && this.sub.expiration != null &&\n new Date(this.sub.expiration) < new Date();\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get billingInterval() {\n const monthly = !this.sub.plan.isAnnual;\n return monthly ? 'month' : 'year';\n }\n\n get storageGbPrice() {\n return this.sub.plan.additionalStoragePricePerGb;\n }\n\n get seatPrice() {\n return this.sub.plan.seatPrice;\n }\n\n get canAdjustSeats() {\n return this.sub.plan.hasAdditionalSeatsOption;\n }\n\n get canDownloadLicense() {\n return (this.sub.planType !== PlanType.Free && this.subscription == null) ||\n (this.subscription != null && !this.subscription.cancelled);\n }\n}\n","

{{'subscription' | i18n}} {{'loading' | i18n}}

{{'loading' | i18n}} {{'subscriptionCanceled' | i18n}}

{{'subscriptionPendingCanceled' | i18n}}

{{'billingPlan' | i18n}}
{{sub.plan.name}}
{{'expiration' | i18n}}
{{sub.expiration | date:'mediumDate'}} {{'licenseIsExpired' | i18n}}
{{'neverExpires' | i18n}}
{{'billingPlan' | i18n}}
{{sub.plan.name}}
{{'status' | i18n}}
{{subscription.status || '-'}} {{'pendingCancellation' | i18n}}
{{'nextCharge' | i18n}}
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) : '-'}}
{{'details' | i18n}}
{{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}} {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}
{{'manageSubscription' | i18n}}

{{'updateLicense' | i18n}}

{{'userSeats' | i18n}}

{{'subscriptionUserSeats' | i18n : sub.seats}}

{{'storage' | i18n}}

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

{{(storagePercentage / 100) | percent}}

{{'provider' | i18n}}

{{'yourProviderIs' | i18n : userOrg.providerName}}
","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-org-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent {\n access2fa = false;\n selfHosted: boolean;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n const organization = await this.userService.getOrganization(params.organizationId);\n this.access2fa = organization.use2fa;\n });\n }\n}\n"," ","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorDuoComponent } from '../../settings/two-factor-duo.component';\nimport { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from '../../settings/two-factor-setup.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: '../../settings/two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent {\n constructor(apiService: ApiService, userService: UserService,\n modalService: ModalService, messagingService: MessagingService,\n policyService: PolicyService, private route: ActivatedRoute) {\n super(apiService, userService, modalService, messagingService, policyService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await super.ngOnInit();\n });\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.OrganizationDuo:\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.type = TwoFactorProviderType.OrganizationDuo;\n duoComp.organizationId = this.organizationId;\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo);\n });\n break;\n default:\n break;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorOrganizationProviders(this.organizationId);\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type !== TwoFactorProviderType.OrganizationDuo;\n }\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UpdateTwoFactorAuthenticatorRequest } from 'jslib-common/models/request/updateTwoFactorAuthenticatorRequest';\nimport { TwoFactorAuthenticatorResponse } from 'jslib-common/models/response/twoFactorAuthenticatorResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-authenticator',\n templateUrl: 'two-factor-authenticator.component.html',\n})\nexport class TwoFactorAuthenticatorComponent extends TwoFactorBaseComponent implements OnInit, OnDestroy {\n type = TwoFactorProviderType.Authenticator;\n key: string;\n token: string;\n formPromise: Promise;\n\n private qrScript: HTMLScriptElement;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, private userService: UserService,\n platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n this.qrScript = window.document.createElement('script');\n this.qrScript.src = 'scripts/qrious.min.js';\n this.qrScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.qrScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.qrScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorAuthenticatorRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.token = this.token;\n request.key = this.key;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorAuthenticator(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorAuthenticatorResponse) {\n this.token = null;\n this.enabled = response.enabled;\n this.key = response.key;\n const email = await this.userService.getEmail();\n window.setTimeout(() => {\n const qr = new (window as any).QRious({\n element: document.getElementById('qr'),\n value: 'otpauth://totp/Bitwarden:' + encodeURIComponent(email) +\n '?secret=' + encodeURIComponent(this.key) + '&issuer=Bitwarden',\n size: 160,\n });\n }, 100);\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'authenticatorAppTitle' | i18n}}

\"\"

{{'twoStepAuthenticatorDesc' | i18n}}

1. {{'twoStepAuthenticatorDownloadApp' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoStepAuthenticatorReaddDesc' | i18n}}
\"\"

{{'twoStepAuthenticatorNeedApp' | i18n}}

{{'twoStepAuthenticatorAppsRecommended' | i18n}}

2. {{'twoStepAuthenticatorScanCode' | i18n}}



{{key}}

","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { TwoFactorEmailRequest } from 'jslib-common/models/request/twoFactorEmailRequest';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { UpdateTwoFactorEmailRequest } from 'jslib-common/models/request/updateTwoFactorEmailRequest';\nimport { TwoFactorEmailResponse } from 'jslib-common/models/response/twoFactorEmailResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-email',\n templateUrl: 'two-factor-email.component.html',\n})\nexport class TwoFactorEmailComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Email;\n email: string;\n token: string;\n sentEmail: string;\n formPromise: Promise;\n emailPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private userService: UserService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n async sendEmail() {\n try {\n const request = new TwoFactorEmailRequest(this.email, this.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmailSetup(request);\n await this.emailPromise;\n this.sentEmail = this.email;\n } catch { }\n }\n\n protected enable() {\n const request = new UpdateTwoFactorEmailRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.email = this.email;\n request.token = this.token;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorEmail(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorEmailResponse) {\n this.token = null;\n this.email = response.email;\n this.enabled = response.enabled;\n if (!this.enabled && (this.email == null || this.email === '')) {\n this.email = await this.userService.getEmail();\n }\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'emailTitle' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}} {{'email' | i18n}}: {{email}}

{{'twoFactorEmailDesc' | i18n}} \"\"

{{'verificationCodeEmailSent' | i18n : sentEmail}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { TwoFactorRecoverResponse } from 'jslib-common/models/response/twoFactorRescoverResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\n@Component({\n selector: 'app-two-factor-recovery',\n templateUrl: 'two-factor-recovery.component.html',\n})\nexport class TwoFactorRecoveryComponent {\n type = -1;\n code: string;\n authed: boolean;\n twoFactorProviderType = TwoFactorProviderType;\n\n constructor(private i18nService: I18nService) { }\n\n auth(authResponse: any) {\n this.authed = true;\n this.processResponse(authResponse.response);\n }\n\n print() {\n const w = window.open();\n w.document.write('
' +\n '

' + this.i18nService.t('twoFactorRecoveryYourCode') + ':

' +\n '' +\n this.code + '
' +\n '

' + new Date() + '

');\n w.onafterprint = () => w.close();\n w.print();\n }\n\n private formatString(s: string) {\n if (s == null) {\n return null;\n }\n return s.replace(/(.{4})/g, '$1 ').trim().toUpperCase();\n }\n\n private processResponse(response: TwoFactorRecoverResponse) {\n this.code = this.formatString(response.code);\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'recoveryCodeTitle' | i18n}}

{{'twoFactorRecoveryYourCode' | i18n}}:

{{code}}
{{'twoFactorRecoveryNoCode' | i18n}}
","import {\n Component,\n NgZone,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from 'jslib-common/models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from 'jslib-common/models/request/updateTwoFactorWebAuthnRequest';\nimport {\n ChallengeResponse,\n TwoFactorWebAuthnResponse,\n} from 'jslib-common/models/response/twoFactorWebAuthnResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-webauthn',\n templateUrl: 'two-factor-webauthn.component.html',\n})\nexport class TwoFactorWebAuthnComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.WebAuthn;\n name: string;\n keys: any[];\n keyIdAvailable: number = null;\n keysConfiguredCount = 0;\n webAuthnError: boolean;\n webAuthnListening: boolean;\n webAuthnResponse: PublicKeyCredential;\n challengePromise: Promise;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private ngZone: NgZone) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.webAuthnResponse == null || this.keyIdAvailable == null) {\n // Should never happen.\n return Promise.reject();\n }\n const request = new UpdateTwoFactorWebAuthnRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.deviceResponse = this.webAuthnResponse;\n request.id = this.keyIdAvailable;\n request.name = this.name;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorWebAuthn(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n disable() {\n return super.disable(this.formPromise);\n }\n\n async remove(key: any) {\n if (this.keysConfiguredCount <= 1 || key.removePromise != null) {\n return;\n }\n const name = key.name != null ? key.name : this.i18nService.t('webAuthnkeyX', key.id);\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeU2fConfirmation'), name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n const request = new UpdateTwoFactorWebAuthnDeleteRequest();\n request.id = key.id;\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n key.removePromise = this.apiService.deleteTwoFactorWebAuthn(request);\n const response = await key.removePromise;\n key.removePromise = null;\n await this.processResponse(response);\n } catch { }\n }\n\n async readKey() {\n if (this.keyIdAvailable == null) {\n return;\n }\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n try {\n this.challengePromise = this.apiService.getTwoFactorWebAuthnChallenge(request);\n const challenge = await this.challengePromise;\n this.readDevice(challenge);\n } catch { }\n }\n\n private readDevice(webAuthnChallenge: ChallengeResponse) {\n // tslint:disable-next-line\n console.log('listening for key...');\n this.resetWebAuthn(true);\n\n navigator.credentials.create({\n publicKey: webAuthnChallenge,\n }).then((data: PublicKeyCredential) => {\n this.ngZone.run(() => {\n this.webAuthnListening = false;\n this.webAuthnResponse = data;\n });\n }).catch(err => {\n // tslint:disable-next-line\n console.error(err);\n this.resetWebAuthn(false);\n // TODO: Should we display the actual error?\n this.webAuthnError = true;\n });\n }\n\n private resetWebAuthn(listening = false) {\n this.webAuthnResponse = null;\n this.webAuthnError = false;\n this.webAuthnListening = listening;\n }\n\n private processResponse(response: TwoFactorWebAuthnResponse) {\n this.resetWebAuthn();\n this.keys = [];\n this.keyIdAvailable = null;\n this.name = null;\n this.keysConfiguredCount = 0;\n for (let i = 1; i <= 5; i++) {\n if (response.keys != null) {\n const key = response.keys.filter(k => k.id === i);\n if (key.length > 0) {\n this.keysConfiguredCount++;\n this.keys.push({\n id: i, name: key[0].name,\n configured: true,\n migrated: key[0].migrated,\n removePromise: null,\n });\n continue;\n }\n }\n this.keys.push({ id: i, name: null, configured: false, removePromise: null });\n if (this.keyIdAvailable == null) {\n this.keyIdAvailable = i;\n }\n }\n this.enabled = response.enabled;\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'webAuthnTitle' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoFactorWebAuthnWarning' | i18n}}

  • {{'twoFactorWebAuthnSupportWeb' | i18n}}
\"\"
  • {{'webAuthnkeyX' | i18n : i + 1}} {{k.name}} {{'webAuthnMigrated' | i18n}} 1 && k.configured\"> - {{'remove' | i18n}}

{{'twoFactorWebAuthnAdd' | i18n}}:

  1. {{'twoFactorU2fGiveName' | i18n}}
  2. {{'twoFactorU2fPlugInReadKey' | i18n}}
  3. {{'twoFactorU2fTouchButton' | i18n}}
  4. {{'twoFactorU2fSaveForm' | i18n}}
{{'twoFactorU2fWaiting' | i18n}}... {{'twoFactorU2fClickSave' | i18n}} {{'twoFactorU2fProblemReadingTryAgain' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { UpdateTwoFactorYubioOtpRequest } from 'jslib-common/models/request/updateTwoFactorYubioOtpRequest';\nimport { TwoFactorYubiKeyResponse } from 'jslib-common/models/response/twoFactorYubiKeyResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-yubikey',\n templateUrl: 'two-factor-yubikey.component.html',\n})\nexport class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Yubikey;\n keys: any[];\n nfc = false;\n\n formPromise: Promise;\n disablePromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService) {\n super(apiService, i18nService, toasterService, platformUtilsService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n const request = new UpdateTwoFactorYubioOtpRequest();\n request.masterPasswordHash = this.masterPasswordHash;\n request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null;\n request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null;\n request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null;\n request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null;\n request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null;\n request.nfc = this.nfc;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorYubiKey(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n this.toasterService.popAsync('success', null, this.i18nService.t('yubikeysUpdated'));\n });\n }\n\n disable() {\n return super.disable(this.disablePromise);\n }\n\n remove(key: any) {\n key.existingKey = null;\n key.key = null;\n }\n\n private processResponse(response: TwoFactorYubiKeyResponse) {\n this.enabled = response.enabled;\n this.keys = [\n { key: response.key1, existingKey: this.padRight(response.key1) },\n { key: response.key2, existingKey: this.padRight(response.key2) },\n { key: response.key3, existingKey: this.padRight(response.key3) },\n { key: response.key4, existingKey: this.padRight(response.key4) },\n { key: response.key5, existingKey: this.padRight(response.key5) },\n ];\n this.nfc = response.nfc || !response.enabled;\n }\n\n private padRight(str: string, character = '•', size = 44) {\n if (str == null || character == null || str.length >= size) {\n return str;\n }\n const max = (size - str.length) / character.length;\n for (let i = 0; i < max; i++) {\n str += character;\n }\n return str;\n }\n}\n","

{{'twoStepLogin' | i18n}} YubiKey

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoFactorYubikeyWarning' | i18n}}

  • {{'twoFactorYubikeySupportUsb' | i18n}}
  • {{'twoFactorYubikeySupportMobile' | i18n}}
\"\"

{{'twoFactorYubikeyAdd' | i18n}}:

  1. {{'twoFactorYubikeyPlugIn' | i18n}}
  2. {{'twoFactorYubikeySelectKey' | i18n}}
  3. {{'twoFactorYubikeyTouchButton' | i18n}}
  4. {{'twoFactorYubikeySaveForm' | i18n}}

{{k.existingKey}}
{{'nfcSupport' | i18n}}
{{'twoFactorYubikeySupportsNfcDesc' | i18n}}
","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ExportComponent as BaseExportComponent } from '../../tools/export.component';\n\nimport { EventType } from 'jslib-common/enums/eventType';\n\n@Component({\n selector: 'app-org-export',\n templateUrl: '../../tools/export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService, private route: ActivatedRoute) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n });\n }\n\n getExportData() {\n return this.exportService.getOrganizationExport(this.organizationId, this.format);\n }\n\n getFileName() {\n return super.getFileName('org');\n }\n\n async collectEvent(): Promise {\n // TODO\n // await this.eventService.collect(EventType.Organization_ClientExportedVault);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport {\n ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent,\n} from '../../tools/exposed-passwords-report.component';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: '../../tools/exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, auditService: AuditService,\n modalService: ModalService, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, auditService, modalService, messagingService, userService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { PasswordHistoryResponse } from '../response/passwordHistoryResponse';\n\nexport class PasswordHistoryData {\n password: string;\n lastUsedDate: string;\n\n constructor(response?: PasswordHistoryResponse) {\n if (response == null) {\n return;\n }\n\n this.password = response.password;\n this.lastUsedDate = response.lastUsedDate;\n }\n}\n","import { View } from './view';\n\nimport { Attachment } from '../domain/attachment';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nexport class AttachmentView implements View {\n id: string = null;\n url: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n key: SymmetricCryptoKey = null;\n\n constructor(a?: Attachment) {\n if (!a) {\n return;\n }\n\n this.id = a.id;\n this.url = a.url;\n this.size = a.size;\n this.sizeName = a.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch { }\n return 0;\n }\n}\n","import { PasswordHistoryData } from '../data/passwordHistoryData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { PasswordHistoryView } from '../view/passwordHistoryView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Password extends Domain {\n password: EncString;\n lastUsedDate: Date;\n\n constructor(obj?: PasswordHistoryData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n password: null,\n }, alreadyEncrypted);\n this.lastUsedDate = new Date(obj.lastUsedDate);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new PasswordHistoryView(this), {\n password: null,\n }, orgId, encKey);\n }\n\n toPasswordHistoryData(): PasswordHistoryData {\n const ph = new PasswordHistoryData();\n ph.lastUsedDate = this.lastUsedDate.toISOString();\n this.buildDataModel(this, ph, {\n password: null,\n });\n return ph;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherCreateRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n} from '@angular/core';\n\n@Directive({\n selector: '[appFallbackSrc]',\n})\nexport class FallbackSrcDirective {\n @Input('appFallbackSrc') appFallbackSrc: string;\n\n constructor(private el: ElementRef) {\n }\n\n @HostListener('error') onError() {\n this.el.nativeElement.src = this.appFallbackSrc;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { ImportService } from 'jslib-common/abstractions/import.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ImportComponent as BaseImportComponent } from '../../tools/import.component';\n\n@Component({\n selector: 'app-org-import',\n templateUrl: '../../tools/import.component.html',\n})\nexport class ImportComponent extends BaseImportComponent {\n organizationName: string;\n\n constructor(i18nService: I18nService, toasterService: ToasterService,\n importService: ImportService, router: Router, private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private userService: UserService) {\n super(i18nService, toasterService, importService, router, platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.successNavigate = ['organizations', this.organizationId, 'vault'];\n await super.ngOnInit();\n this.importBlockedByPolicy = false;\n });\n const organization = await this.userService.getOrganization(this.organizationId);\n this.organizationName = organization.name;\n }\n\n async submit() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('importWarning', this.organizationName),\n this.i18nService.t('warning'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n super.submit();\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport {\n InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent,\n} from '../../tools/inactive-two-factor-report.component';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: '../../tools/inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent {\n constructor(cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, modalService, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport {\n ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent,\n} from '../../tools/reused-passwords-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: '../../tools/reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, modalService, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-org-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent {\n organization: Organization;\n accessReports = false;\n loading = true;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private messagingService: MessagingService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n this.accessReports = this.organization.useTotp;\n this.loading = false;\n });\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n }\n}\n"," ","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport {\n UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent,\n} from '../../tools/unsecured-websites-report.component';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: '../../tools/unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent {\n constructor(cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute) {\n super(cipherService, modalService, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport {\n WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent,\n} from '../../tools/weak-passwords-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: '../../tools/weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, passwordGenerationService: PasswordGenerationService,\n modalService: ModalService, messagingService: MessagingService,\n userService: UserService, private route: ActivatedRoute) {\n super(cipherService, passwordGenerationService, modalService, messagingService, userService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from '../../vault/attachments.component';\n\n@Component({\n selector: 'app-org-vault-attachments',\n templateUrl: '../../vault/attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n organization: Organization;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.organization.canManageAllCollections && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file, this.organization.canManageAllCollections);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.canManageAllCollections) {\n return super.deleteCipherAttachment(attachmentId);\n }\n return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId);\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.organization.canManageAllCollections;\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { ErrorResponse } from 'jslib-common/models/response';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Directive()\nexport class AttachmentsComponent implements OnInit {\n @Input() cipherId: string;\n @Output() onUploadedAttachment = new EventEmitter();\n @Output() onDeletedAttachment = new EventEmitter();\n @Output() onReuploadedAttachment = new EventEmitter();\n\n cipher: CipherView;\n cipherDomain: Cipher;\n hasUpdatedKey: boolean;\n canAccessAttachments: boolean;\n formPromise: Promise;\n deletePromises: { [id: string]: Promise; } = {};\n reuploadPromises: { [id: string]: Promise; } = {};\n emergencyAccessId?: string = null;\n\n constructor(protected cipherService: CipherService, protected i18nService: I18nService,\n protected cryptoService: CryptoService, protected userService: UserService,\n protected platformUtilsService: PlatformUtilsService, protected apiService: ApiService,\n protected win: Window) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit() {\n if (!this.hasUpdatedKey) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('updateKey'));\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n if (files[0].size > 524288000) { // 500 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n\n try {\n this.formPromise = this.saveCipherAttachment(files[0]);\n this.cipherDomain = await this.formPromise;\n this.cipher = await this.cipherDomain.decrypt();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onUploadedAttachment.emit();\n } catch { }\n\n // reset file input\n // ref: https://stackoverflow.com/a/20552042\n fileEl.type = '';\n fileEl.type = 'file';\n fileEl.value = '';\n }\n\n async delete(attachment: AttachmentView) {\n if (this.deletePromises[attachment.id] != null) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteAttachmentConfirmation'), this.i18nService.t('deleteAttachment'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedAttachment'));\n const i = this.cipher.attachments.indexOf(attachment);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n } catch { }\n\n this.deletePromises[attachment.id] = null;\n this.onDeletedAttachment.emit();\n }\n\n async download(attachment: AttachmentView) {\n const a = (attachment as any);\n if (a.downloading) {\n return;\n }\n\n if (!this.canAccessAttachments) {\n this.platformUtilsService.showToast('error', this.i18nService.t('premiumRequired'),\n this.i18nService.t('premiumRequiredDesc'));\n return;\n }\n\n let url: string;\n try {\n const attachmentDownloadResponse = await this.apiService.getAttachmentData(this.cipher.id, attachment.id,\n this.emergencyAccessId);\n url = attachmentDownloadResponse.url;\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n url = attachment.url;\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n a.downloading = true;\n const response = await fetch(new Request(url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.platformUtilsService.saveFile(this.win, decBuf, null, attachment.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n }\n\n protected async init() {\n this.cipherDomain = await this.loadCipher();\n this.cipher = await this.cipherDomain.decrypt();\n\n this.hasUpdatedKey = await this.cryptoService.hasEncKey();\n const canAccessPremium = await this.userService.canAccessPremium();\n this.canAccessAttachments = canAccessPremium || this.cipher.organizationId != null;\n\n if (!this.canAccessAttachments) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.platformUtilsService.launchUri('https://vault.bitwarden.com/#/?premium=purchase');\n }\n } else if (!this.hasUpdatedKey) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateKey'), this.i18nService.t('featureUnavailable'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'), 'warning');\n if (confirmed) {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/update-encryption-key/');\n }\n }\n }\n\n protected async reuploadCipherAttachment(attachment: AttachmentView, admin: boolean) {\n const a = (attachment as any);\n if (attachment.key != null || a.downloading || this.reuploadPromises[attachment.id] != null) {\n return;\n }\n\n try {\n this.reuploadPromises[attachment.id] = Promise.resolve().then(async () => {\n // 1. Download\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n // 2. Resave\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.cipherDomain = await this.cipherService.saveAttachmentRawWithServer(\n this.cipherDomain, attachment.fileName, decBuf, admin);\n this.cipher = await this.cipherDomain.decrypt();\n\n // 3. Delete old\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n const foundAttachment = this.cipher.attachments.filter(a2 => a2.id === attachment.id);\n if (foundAttachment.length > 0) {\n const i = this.cipher.attachments.indexOf(foundAttachment[0]);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n }\n\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onReuploadedAttachment.emit();\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n });\n await this.reuploadPromises[attachment.id];\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherCollectionsRequest } from 'jslib-common/models/request/cipherCollectionsRequest';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from '../../vault/collections.component';\n\n@Component({\n selector: 'app-org-vault-collections',\n templateUrl: '../../vault/collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService,\n private apiService: ApiService) {\n super(collectionService, platformUtilsService, i18nService, cipherService);\n this.allowSelectNone = true;\n }\n\n protected async loadCipher() {\n if (!this.organization.canManageAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected loadCipherCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.canManageAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.canManageAllCollections) {\n const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds);\n return this.apiService.putCipherCollectionsAdmin(this.cipherId, request);\n } else {\n return super.saveCollections();\n }\n }\n}\n","export class CipherCollectionsRequest {\n collectionIds: string[];\n\n constructor(collectionIds: string[]) {\n this.collectionIds = collectionIds == null ? [] : collectionIds;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { EntityEventsComponent } from '../manage/entity-events.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { GroupingsComponent } from './groupings.component';\n\nconst BroadcasterSubscriptionId = 'OrgVaultComponent';\n\n@Component({\n selector: 'app-org-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string = null;\n type: CipherType = null;\n deleted: boolean = false;\n trashCleanupWarning: string = null;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private syncService: SyncService, private i18nService: I18nService,\n private modalService: ModalService, private messagingService: MessagingService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.trashCleanupWarning = this.i18nService.t(\n this.platformUtilsService.isSelfHost() ? 'trashCleanupWarningSelfHosted' : 'trashCleanupWarning'\n );\n\n const queryParams = this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.groupingsComponent.organization = this.organization;\n this.ciphersComponent.organization = this.organization;\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n this.ciphersComponent.searchText = this.groupingsComponent.searchText = qParams.search;\n if (!this.organization.canManageAllCollections) {\n await this.syncService.fullSync(false);\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.ciphersComponent.refresh(),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n }\n await this.groupingsComponent.load();\n\n if (qParams == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (qParams.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted(true);\n } else if (qParams.type) {\n const t = parseInt(qParams.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t, true);\n } else if (qParams.collectionId) {\n this.groupingsComponent.selectedCollectionId = qParams.collectionId;\n await this.filterCollection(qParams.collectionId, true);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n if (qParams.viewEvents != null) {\n const cipher = this.ciphersComponent.ciphers.filter(c => c.id === qParams.viewEvents);\n if (cipher.length > 0) {\n this.viewEvents(cipher[0]);\n }\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n if (queryParams != null) {\n queryParams.unsubscribe();\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.applyFilter();\n this.clearFilters();\n this.go();\n }\n\n async filterCipherType(type: CipherType, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n const filter = (c: CipherView) => c.type === type;\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterCollection(collectionId: string, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n const filter = (c: CipherView) => {\n if (collectionId === 'unassigned') {\n return c.collectionIds == null || c.collectionIds.length === 0;\n } else {\n return c.collectionIds != null && c.collectionIds.indexOf(collectionId) > -1;\n }\n };\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n async filterDeleted(load: boolean = false) {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n if (load) {\n await this.ciphersComponent.reload(null, true);\n } else {\n await this.ciphersComponent.applyFilter(null);\n }\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n\n let madeAttachmentChanges = false;\n\n const [modal] = await this.modalService.openViewRef(AttachmentsComponent, this.attachmentsModalRef, comp => {\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n comp.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n });\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(CollectionsComponent, this.collectionsModalRef, comp => {\n if (this.organization.canManageAllCollections) {\n comp.collectionIds = cipher.collectionIds;\n comp.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.organizationId = this.organization.id;\n component.type = this.type;\n if (this.organization.canManageAllCollections) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n if (this.collectionId != null) {\n component.collectionIds = [this.collectionId];\n }\n }\n\n async editCipher(cipher: CipherView) {\n const [modal, childComponent] = await this.modalService.openViewRef(AddEditComponent, this.cipherAddEditModalRef, comp => {\n comp.organization = this.organization;\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n component.organizationId = this.organization.id;\n if (this.organization.canManageAllCollections) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value\n // in the add-edit componenet\n component.collectionIds = cipher.collectionIds;\n }\n\n async viewEvents(cipher: CipherView) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, comp => {\n comp.name = cipher.name;\n comp.organizationId = this.organization.id;\n comp.entityId = cipher.id;\n comp.showUser = true;\n comp.entity = 'cipher';\n });\n }\n\n private clearFilters() {\n this.collectionId = null;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n type: this.type,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","

{{'vault' | i18n}} {{'loading' | i18n}}

{{trashCleanupWarning}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherBulkDeleteRequest } from 'jslib-common/models/request/cipherBulkDeleteRequest';\n\n@Component({\n selector: 'app-vault-bulk-delete',\n templateUrl: 'bulk-delete.component.html',\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Input() permanent: boolean = false;\n @Input() organization: Organization;\n @Output() onDeleted = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private apiService: ApiService) { }\n\n async submit() {\n if (!this.organization || !this.organization.canManageAllCollections) {\n await this.deleteCiphers();\n } else {\n await this.deleteCiphersAdmin();\n }\n\n await this.formPromise;\n\n this.onDeleted.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t(this.permanent ? 'permanentlyDeletedItems'\n : 'deletedItems'));\n }\n\n private async deleteCiphers() {\n if (this.permanent) {\n this.formPromise = await this.cipherService.deleteManyWithServer(this.cipherIds);\n } else {\n this.formPromise = await this.cipherService.softDeleteManyWithServer(this.cipherIds);\n }\n }\n\n private async deleteCiphersAdmin() {\n const deleteRequest = new CipherBulkDeleteRequest(this.cipherIds, this.organization.id);\n if (this.permanent) {\n this.formPromise = await this.apiService.deleteManyCiphersAdmin(deleteRequest);\n } else {\n this.formPromise = await this.apiService.putDeleteManyCiphersAdmin(deleteRequest);\n }\n }\n}\n","

{{(permanent ? 'permanentlyDeleteSelected' : 'deleteSelected') | i18n}}

{{(permanent ? 'permanentlyDeleteSelectedItemsDesc' : 'deleteSelectedItemsDesc') | i18n: cipherIds.length}}
","export class CipherBulkDeleteRequest {\n ids: string[];\n organizationId: string;\n\n constructor(ids: string[], organizationId?: string) {\n this.ids = ids == null ? [] : ids;\n this.organizationId = organizationId;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\n@Component({\n selector: 'app-vault-bulk-move',\n templateUrl: 'bulk-move.component.html',\n})\nexport class BulkMoveComponent implements OnInit {\n @Input() cipherIds: string[] = [];\n @Output() onMoved = new EventEmitter();\n\n folderId: string = null;\n folders: FolderView[] = [];\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private folderService: FolderService) { }\n\n async ngOnInit() {\n this.folders = await this.folderService.getAllDecrypted();\n this.folderId = this.folders[0].id;\n }\n\n async submit() {\n this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId);\n await this.formPromise;\n this.onMoved.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t('movedItems'));\n }\n}\n","

{{'moveSelected' | i18n}}

{{'moveSelectedItemsDesc' | i18n: cipherIds.length}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-vault-bulk-restore',\n templateUrl: 'bulk-restore.component.html',\n})\nexport class BulkRestoreComponent {\n @Input() cipherIds: string[] = [];\n @Output() onRestored = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService) { }\n\n async submit() {\n this.formPromise = this.cipherService.restoreManyWithServer(this.cipherIds);\n await this.formPromise;\n this.onRestored.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItems'));\n }\n}\n","

{{'restoreSelected' | i18n}}

{{'restoreSelectedItemsDesc' | i18n: cipherIds.length}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherView } from 'jslib-common/models/view';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-vault-bulk-share',\n templateUrl: 'bulk-share.component.html',\n})\nexport class BulkShareComponent implements OnInit {\n @Input() ciphers: CipherView[] = [];\n @Input() organizationId: string;\n @Output() onShared = new EventEmitter();\n\n nonShareableCount = 0;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n shareableCiphers: CipherView[] = [];\n formPromise: Promise;\n\n private writeableCollections: CollectionView[] = [];\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private collectionService: CollectionService,\n private userService: UserService) { }\n\n async ngOnInit() {\n this.shareableCiphers = this.ciphers.filter(c => !c.hasOldAttachments && c.organizationId == null);\n this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length;\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.filter(c => !c.readOnly);\n this.organizations = await this.userService.getAllOrganizations();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n filterCollections() {\n this.selectAll(false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit() {\n const checkedCollectionIds = this.collections.filter(c => (c as any).checked).map(c => c.id);\n try {\n this.formPromise = this.cipherService.shareManyWithServer(this.shareableCiphers, this.organizationId,\n checkedCollectionIds);\n await this.formPromise;\n this.onShared.emit();\n const orgName = this.organizations.find(o => o.id === this.organizationId)?.name ?? this.i18nService.t('organization');\n this.toasterService.popAsync('success', null, this.i18nService.t('movedItemsToOrg', orgName));\n } catch { }\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n\n get canSave() {\n if (this.shareableCiphers != null && this.shareableCiphers.length > 0 && this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","

{{'moveSelectedToOrg' | i18n}}

{{'moveManyToOrgDesc' | i18n}}

{{'moveSelectedItemsCountDesc' | i18n: this.ciphers.length : shareableCiphers.length : nonShareableCount}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { SendAccess } from 'jslib-common/models/domain/sendAccess';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { SendAccessView } from 'jslib-common/models/view/sendAccessView';\n\nimport { SendType } from 'jslib-common/enums/sendType';\nimport { SendAccessRequest } from 'jslib-common/models/request/sendAccessRequest';\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\nimport { SendAccessResponse } from 'jslib-common/models/response/sendAccessResponse';\n\n@Component({\n selector: 'app-send-access',\n templateUrl: 'access.component.html',\n})\nexport class AccessComponent implements OnInit {\n send: SendAccessView;\n sendType = SendType;\n downloading = false;\n loading = true;\n passwordRequired = false;\n formPromise: Promise;\n password: string;\n showText = false;\n unavailable = false;\n error = false;\n hideEmail = false;\n\n private id: string;\n private key: string;\n private decKey: SymmetricCryptoKey;\n private accessRequest: SendAccessRequest;\n\n constructor(private i18nService: I18nService, private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private route: ActivatedRoute, private cryptoService: CryptoService) {\n }\n\n get sendText() {\n if (this.send == null || this.send.text == null) {\n return null;\n }\n return this.showText ? this.send.text.text : this.send.text.maskedText;\n }\n\n get expirationDate() {\n if (this.send == null || this.send.expirationDate == null) {\n return null;\n }\n return this.send.expirationDate;\n }\n\n get creatorIdentifier() {\n if (this.send == null || this.send.creatorIdentifier == null) {\n return null;\n }\n return this.send.creatorIdentifier;\n }\n\n ngOnInit() {\n this.route.params.subscribe(async params => {\n this.id = params.sendId;\n this.key = params.key;\n if (this.key == null || this.id == null) {\n return;\n }\n await this.load();\n });\n }\n\n async download() {\n if (this.send == null || this.decKey == null) {\n return;\n }\n\n if (this.downloading) {\n return;\n }\n\n\n const downloadData = await this.apiService.getSendFileDownloadData(this.send, this.accessRequest);\n\n if (Utils.isNullOrWhitespace(downloadData.url)) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('missingSendFile'));\n return;\n }\n\n this.downloading = true;\n const response = await fetch(new Request(downloadData.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n this.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, this.decKey);\n this.platformUtilsService.saveFile(window, decBuf, null, this.send.file.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n this.downloading = false;\n }\n\n copyText() {\n this.platformUtilsService.copyToClipboard(this.send.text.text);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendTypeText')));\n }\n\n toggleText() {\n this.showText = !this.showText;\n }\n\n async load() {\n this.unavailable = false;\n this.error = false;\n this.hideEmail = false;\n const keyArray = Utils.fromUrlB64ToArray(this.key);\n this.accessRequest = new SendAccessRequest();\n if (this.password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(this.password, keyArray, 'sha256', 100000);\n this.accessRequest.password = Utils.fromBufferToB64(passwordHash);\n }\n try {\n let sendResponse: SendAccessResponse = null;\n if (this.loading) {\n sendResponse = await this.apiService.postSendAccess(this.id, this.accessRequest);\n } else {\n this.formPromise = this.apiService.postSendAccess(this.id, this.accessRequest);\n sendResponse = await this.formPromise;\n }\n this.passwordRequired = false;\n const sendAccess = new SendAccess(sendResponse);\n this.decKey = await this.cryptoService.makeSendKey(keyArray);\n this.send = await sendAccess.decrypt(this.decKey);\n this.showText = this.send.text != null ? !this.send.text.hidden : true;\n } catch (e) {\n if (e instanceof ErrorResponse) {\n if (e.statusCode === 401) {\n this.passwordRequired = true;\n } else if (e.statusCode === 404) {\n this.unavailable = true;\n } else {\n this.error = true;\n }\n }\n }\n this.loading = false;\n this.hideEmail = this.creatorIdentifier == null && !this.passwordRequired && !this.loading && !this.unavailable;\n }\n}\n","

Bitwarden Send

{{'sendCreatorIdentifier' | i18n: creatorIdentifier }}

{{'viewSendHiddenEmailWarning' | i18n }} {{'learnMore' | i18n}}.
{{'loading' | i18n}}

{{'sendProtectedPassword' | i18n}}

{{'sendProtectedPasswordDontKnow' | i18n}}

{{'sendAccessUnavailable' | i18n}}
{{'unexpectedError' | i18n}}

{{send.name}}


{{'sendHiddenByDefault' | i18n}}

{{send.file.fileName}}

Expires: {{expirationDate | date: 'medium'}}

{{'sendAccessTaglineProductDesc' | i18n}}
{{'sendAccessTaglineLearnMore' | i18n}} Bitwarden Send.

","import { DatePipe } from '@angular/common';\n\nimport { Component } from '@angular/core';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib-angular/components/send/add-edit.component';\n\n@Component({\n selector: 'app-send-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService, datePipe: DatePipe,\n sendService: SendService, userService: UserService,\n messagingService: MessagingService, policyService: PolicyService) {\n super(i18nService, platformUtilsService, environmentService, datePipe, sendService, userService,\n messagingService, policyService);\n }\n\n async copyLinkToClipboard(link: string): Promise {\n // Copy function on web depends on the modal being open or not. Since this event occurs during a transition\n // of the modal closing we need to add a small delay to make sure state of the DOM is consistent.\n return new Promise(resolve => {\n window.setTimeout(() => resolve(super.copyLinkToClipboard(link)), 500);\n });\n }\n}\n","

{{title}}

{{'sendDisabledWarning' | i18n}} {{'sendOptionsPolicyInEffect' | i18n}}
  • {{'sendDisableHideEmailInEffect' | i18n}}
{{'sendNameDesc' | i18n}}
{{'sendTextDesc' | i18n}}
{{'file' | i18n}} {{send.file.fileName}} ({{send.file.sizeName}})
{{'sendFileDesc' | i18n}} {{'maxFileSize' | i18n}}

{{'share' | i18n}}

{{'options' | i18n}}

{{'maxAccessCountDesc' | i18n}}
{{'sendPasswordDesc' | i18n}}
{{'sendNotesDesc' | i18n}}
","import { SendType } from '../../enums/sendType';\nimport { Utils } from '../../misc/utils';\n\nimport { Send } from '../domain/send';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendView implements View {\n id: string = null;\n accessId: string = null;\n name: string = null;\n notes: string = null;\n key: ArrayBuffer;\n cryptoKey: SymmetricCryptoKey;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n maxAccessCount?: number = null;\n accessCount: number = 0;\n revisionDate: Date = null;\n deletionDate: Date = null;\n expirationDate: Date = null;\n password: string = null;\n disabled: boolean = false;\n hideEmail: boolean = false;\n\n constructor(s?: Send) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.accessId = s.accessId;\n this.type = s.type;\n this.maxAccessCount = s.maxAccessCount;\n this.accessCount = s.accessCount;\n this.revisionDate = s.revisionDate;\n this.deletionDate = s.deletionDate;\n this.expirationDate = s.expirationDate;\n this.disabled = s.disabled;\n this.password = s.password;\n this.hideEmail = s.hideEmail;\n }\n\n get urlB64Key(): string {\n return Utils.fromBufferToUrlB64(this.key);\n }\n\n get maxAccessCountReached(): boolean {\n if (this.maxAccessCount == null) {\n return false;\n }\n return this.accessCount >= this.maxAccessCount;\n }\n\n get expired(): boolean {\n if (this.expirationDate == null) {\n return false;\n }\n return this.expirationDate <= new Date();\n }\n\n get pendingDelete(): boolean {\n return this.deletionDate <= new Date();\n }\n}\n","import { DatePipe } from '@angular/common';\n\nimport { Component } from '@angular/core';\n\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { EffluxDatesComponent as BaseEffluxDatesComponent } from 'jslib-angular/components/send/efflux-dates.component';\n\n@Component({\n selector: 'app-send-efflux-dates',\n templateUrl: 'efflux-dates.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n})\nexport class EffluxDatesComponent extends BaseEffluxDatesComponent {\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe) {\n super(i18nService, platformUtilsService, datePipe);\n }\n}\n","
{{'deletionDateDesc' | i18n}}
{{'clear' | i18n}}
{{'expirationDateDesc' | i18n}}
","import {\n Component,\n NgZone,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { SendComponent as BaseSendComponent } from 'jslib-angular/components/send/send.component';\n\nimport { AddEditComponent } from './add-edit.component';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nconst BroadcasterSubscriptionId = 'SendComponent';\n\n@Component({\n selector: 'app-send',\n templateUrl: 'send.component.html',\n})\nexport class SendComponent extends BaseSendComponent {\n @ViewChild('sendAddEdit', { read: ViewContainerRef, static: true }) sendAddEditModalRef: ViewContainerRef;\n\n constructor(sendService: SendService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n ngZone: NgZone, searchService: SearchService, policyService: PolicyService, userService: UserService,\n private modalService: ModalService, private broadcasterService: BroadcasterService) {\n super(sendService, i18nService, platformUtilsService, environmentService, ngZone, searchService,\n policyService, userService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n\n // Broadcaster subscription - load if sync completes in the background\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await this.load();\n }\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async addSend() {\n if (this.disableSend) {\n return;\n }\n\n const component = await this.editSend(null);\n component.type = this.type;\n }\n\n async editSend(send: SendView) {\n const [modal, childComponent] = await this.modalService.openViewRef(AddEditComponent, this.sendAddEditModalRef, comp => {\n comp.sendId = send == null ? null : send.id;\n comp.onSavedSend.subscribe(async (s: SendView) => {\n modal.close();\n await this.load();\n });\n comp.onDeletedSend.subscribe(async (s: SendView) => {\n modal.close();\n await this.load();\n });\n });\n\n return childComponent;\n }\n}\n","
{{'sendDisabled' | i18n}}
{{'sendDisabledWarning' | i18n}}

{{'send' | i18n}} {{'loading' | i18n}}

{{s.name}} {{'disabled' | i18n}} {{'password' | i18n}} {{'maxAccessCountReached' | i18n}} {{'expired' | i18n}} {{'pendingDeletion' | i18n}}
{{s.deletionDate | date:'medium'}}
{{'loading' | i18n}}

{{'noSendsInList' | i18n}}

","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ApiKeyComponent } from './api-key.component';\nimport { DeauthorizeSessionsComponent } from './deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './delete-account.component';\nimport { PurgeVaultComponent } from './purge-vault.component';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\n@Component({\n selector: 'app-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deauthorizeSessionsTemplate', { read: ViewContainerRef, static: true }) deauthModalRef: ViewContainerRef;\n @ViewChild('purgeVaultTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('deleteAccountTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('viewUserApiKeyTemplate', { read: ViewContainerRef, static: true }) viewUserApiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateUserApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateUserApiKeyModalRef: ViewContainerRef;\n\n constructor(private modalService: ModalService, private apiService: ApiService,\n private userService: UserService) { }\n\n async deauthorizeSessions() {\n await this.modalService.openViewRef(DeauthorizeSessionsComponent, this.deauthModalRef);\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef);\n }\n\n async deleteAccount() {\n await this.modalService.openViewRef(DeleteAccountComponent, this.deleteModalRef);\n }\n\n async viewUserApiKey() {\n const entityId = await this.userService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.viewUserApiKeyModalRef, comp => {\n comp.keyType = 'user';\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserApiKey.bind(this.apiService);\n comp.scope = 'api';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'userApiKeyWarning';\n comp.apiKeyDescription = 'userApiKeyDesc';\n });\n }\n\n async rotateUserApiKey() {\n const entityId = await this.userService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateUserApiKeyModalRef, comp => {\n comp.keyType = 'user';\n comp.isRotation = true;\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserRotateApiKey.bind(this.apiService);\n comp.scope = 'api';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'userApiKeyWarning';\n comp.apiKeyDescription = 'apiKeyRotateDesc';\n });\n }\n}\n","

{{'myAccount' | i18n}}

{{'changeEmail' | i18n}}

{{'changeMasterPassword' | i18n}}

{{'encKeySettings' | i18n}}

{{'apiKey' | i18n}}

{{'userApiKeyDesc' | i18n}}

{{'dangerZone' | i18n}}

{{'dangerZoneDesc' | i18n}}

","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-deauthorize-sessions',\n templateUrl: 'deauthorize-sessions.component.html',\n})\nexport class DeauthorizeSessionsComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postSecurityStamp(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('sessionsDeauthorized'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","

{{'deauthorizeSessions' | i18n}}

{{'deauthorizeSessionsDesc' | i18n}}

{{'deauthorizeSessionsWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\n@Component({\n selector: 'app-delete-account',\n templateUrl: 'delete-account.component.html',\n})\nexport class DeleteAccountComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService) { }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const request = new PasswordVerificationRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.deleteAccount(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteAccountDesc' | i18n}}

{{'deleteAccountWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UpdateProfileRequest } from 'jslib-common/models/request/updateProfileRequest';\n\nimport { ProfileResponse } from 'jslib-common/models/response/profileResponse';\n\n@Component({\n selector: 'app-profile',\n templateUrl: 'profile.component.html',\n})\nexport class ProfileComponent implements OnInit {\n loading = true;\n profile: ProfileResponse;\n fingerprint: string;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private userService: UserService,\n private cryptoService: CryptoService) { }\n\n async ngOnInit() {\n this.profile = await this.apiService.getProfile();\n this.loading = false;\n const fingerprint = await this.cryptoService.getFingerprint(await this.userService.getUserId());\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n\n async submit() {\n try {\n const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint);\n this.formPromise = this.apiService.putProfile(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('accountUpdated'));\n } catch { }\n }\n}\n","
{{'loading' | i18n}}

{{'yourAccountsFingerprint' | i18n}}:
{{fingerprint}}

","import {\n Component,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EmailRequest } from 'jslib-common/models/request/emailRequest';\nimport { EmailTokenRequest } from 'jslib-common/models/request/emailTokenRequest';\n\n@Component({\n selector: 'app-change-email',\n templateUrl: 'change-email.component.html',\n})\nexport class ChangeEmailComponent {\n masterPassword: string;\n newEmail: string;\n token: string;\n tokenSent = false;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n this.newEmail = this.newEmail.trim().toLowerCase();\n if (!this.tokenSent) {\n const request = new EmailTokenRequest();\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postEmailToken(request);\n await this.formPromise;\n this.tokenSent = true;\n } catch { }\n } else {\n const request = new EmailRequest();\n request.token = this.token;\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, this.newEmail, kdf, kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postEmail(request);\n await this.formPromise;\n this.reset();\n this.toasterService.popAsync('success', this.i18nService.t('emailChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n }\n\n reset() {\n this.token = this.newEmail = this.masterPassword = null;\n this.tokenSent = false;\n }\n}\n","

{{'changeEmailDesc' | i18n : newEmail}}

{{'loggedOutWarning' | i18n}}
","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class EmailTokenRequest extends PasswordVerificationRequest {\n newEmail: string;\n masterPasswordHash: string;\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n ChangePasswordComponent as BaseChangePasswordComponent,\n} from 'jslib-angular/components/change-password.component';\n\nimport { EmergencyAccessStatusType } from 'jslib-common/enums/emergencyAccessStatusType';\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { CipherWithIdRequest } from 'jslib-common/models/request/cipherWithIdRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib-common/models/request/emergencyAccessUpdateRequest';\nimport { FolderWithIdRequest } from 'jslib-common/models/request/folderWithIdRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { PasswordRequest } from 'jslib-common/models/request/passwordRequest';\nimport { SendWithIdRequest } from 'jslib-common/models/request/sendWithIdRequest';\nimport { UpdateKeyRequest } from 'jslib-common/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-change-password',\n templateUrl: 'change-password.component.html',\n})\nexport class ChangePasswordComponent extends BaseChangePasswordComponent {\n rotateEncKey = false;\n currentMasterPassword: string;\n\n constructor(i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private folderService: FolderService, private cipherService: CipherService,\n private syncService: SyncService, private apiService: ApiService, private sendService: SendService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async rotateEncKeyClicked() {\n if (this.rotateEncKey) {\n const ciphers = await this.cipherService.getAllDecrypted();\n let hasOldAttachments = false;\n if (ciphers != null) {\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) {\n hasOldAttachments = true;\n break;\n }\n }\n }\n\n if (hasOldAttachments) {\n const learnMore = await this.platformUtilsService.showDialog(\n this.i18nService.t('oldAttachmentsNeedFixDesc'), null,\n this.i18nService.t('learnMore'), this.i18nService.t('close'), 'warning');\n if (learnMore) {\n this.platformUtilsService.launchUri(\n 'https://help.bitwarden.com/article/attachments/#fixing-old-attachments');\n }\n this.rotateEncKey = false;\n return;\n }\n\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateEncryptionKeyWarning') + ' ' +\n this.i18nService.t('updateEncryptionKeyExportWarning') + ' ' +\n this.i18nService.t('rotateEncKeyConfirmation'), this.i18nService.t('rotateEncKeyTitle'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!result) {\n this.rotateEncKey = false;\n }\n }\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n await super.submit();\n }\n\n async setupSubmitActions() {\n if (this.currentMasterPassword == null || this.currentMasterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n return super.setupSubmitActions();\n }\n\n async performSubmitActions(newMasterPasswordHash: string, newKey: SymmetricCryptoKey,\n newEncKey: [SymmetricCryptoKey, EncString]) {\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.currentMasterPassword, null);\n request.newMasterPasswordHash = newMasterPasswordHash;\n request.key = newEncKey[1].encryptedString;\n\n try {\n if (this.rotateEncKey) {\n this.formPromise = this.apiService.postPassword(request).then(() => {\n return this.updateKey(newKey, request.newMasterPasswordHash);\n });\n } else {\n this.formPromise = this.apiService.postPassword(request);\n }\n\n await this.formPromise;\n\n this.platformUtilsService.showToast('success', this.i18nService.t('masterPasswordChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) {\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = masterPasswordHash;\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n const sends = await this.sendService.getAll();\n await Promise.all(sends.map(async send => {\n const cryptoKey = await this.cryptoService.decryptToBytes(send.key, null);\n send.key = await this.cryptoService.encrypt(cryptoKey, encKey[0]) ?? send.key;\n request.sends.push(new SendWithIdRequest(send));\n }));\n\n await this.apiService.postAccountKey(request);\n\n await this.updateEmergencyAccesses(encKey[0]);\n\n await this.updateAllResetPasswordKeys(encKey[0]);\n }\n\n private async updateEmergencyAccesses(encKey: SymmetricCryptoKey) {\n const emergencyAccess = await this.apiService.getEmergencyAccessTrusted();\n const allowedStatuses = [\n EmergencyAccessStatusType.Confirmed,\n EmergencyAccessStatusType.RecoveryInitiated,\n EmergencyAccessStatusType.RecoveryApproved,\n ];\n\n const filteredAccesses = emergencyAccess.data.filter(d => allowedStatuses.includes(d.status));\n\n for (const details of filteredAccesses) {\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n const updateRequest = new EmergencyAccessUpdateRequest();\n updateRequest.type = details.type;\n updateRequest.waitTimeDays = details.waitTimeDays;\n updateRequest.keyEncrypted = encryptedKey.encryptedString;\n\n await this.apiService.putEmergencyAccess(details.id, updateRequest);\n }\n }\n\n private async updateAllResetPasswordKeys(encKey: SymmetricCryptoKey) {\n const orgs = await this.userService.getAllOrganizations();\n\n for (const org of orgs) {\n // If not already enrolled, skip\n if (!org.resetPasswordEnrolled) {\n continue;\n }\n\n // Retrieve public key\n const response = await this.apiService.getOrganizationKeys(org.id);\n const publicKey = Utils.fromB64ToArray(response?.publicKey);\n\n // Re-enroll - encrpyt user's encKey.key with organization public key\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create/Execute request\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = encryptedKey.encryptedString;\n\n await this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n }\n }\n}\n","{{'loggedOutWarning' | i18n}}
","export enum EmergencyAccessStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n RecoveryInitiated = 3,\n RecoveryApproved = 4,\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessUpdateRequest {\n type: EmergencyAccessType;\n waitTimeDays: number;\n keyEncrypted?: string;\n}\n","import { FolderRequest } from './folderRequest';\n\nimport { Folder } from '../domain/folder';\n\nexport class FolderWithIdRequest extends FolderRequest {\n id: string;\n\n constructor(folder: Folder) {\n super(folder);\n this.id = folder.id;\n }\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class PasswordRequest extends PasswordVerificationRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nimport { Send } from '../domain/send';\n\nexport class SendRequest {\n type: SendType;\n fileLength?: number;\n name: string;\n notes: string;\n key: string;\n maxAccessCount?: number;\n expirationDate: string;\n deletionDate: string;\n text: SendTextApi;\n file: SendFileApi;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(send: Send, fileLength?: number) {\n this.type = send.type;\n this.fileLength = fileLength;\n this.name = send.name ? send.name.encryptedString : null;\n this.notes = send.notes ? send.notes.encryptedString : null;\n this.maxAccessCount = send.maxAccessCount;\n this.expirationDate = send.expirationDate != null ? send.expirationDate.toISOString() : null;\n this.deletionDate = send.deletionDate != null ? send.deletionDate.toISOString() : null;\n this.key = send.key != null ? send.key.encryptedString : null;\n this.password = send.password;\n this.disabled = send.disabled;\n this.hideEmail = send.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextApi();\n this.text.text = send.text.text != null ? send.text.text.encryptedString : null;\n this.text.hidden = send.text.hidden;\n break;\n case SendType.File:\n this.file = new SendFileApi();\n this.file.fileName = send.file.fileName != null ? send.file.fileName.encryptedString : null;\n break;\n default:\n break;\n }\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\nimport { FolderWithIdRequest } from './folderWithIdRequest';\nimport { SendWithIdRequest } from './sendWithIdRequest';\n\nexport class UpdateKeyRequest {\n ciphers: CipherWithIdRequest[] = [];\n folders: FolderWithIdRequest[] = [];\n sends: SendWithIdRequest[] = [];\n masterPasswordHash: string;\n privateKey: string;\n key: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { KdfRequest } from 'jslib-common/models/request/kdfRequest';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\n@Component({\n selector: 'app-change-kdf',\n templateUrl: 'change-kdf.component.html',\n})\nexport class ChangeKdfComponent implements OnInit {\n masterPassword: string;\n kdfIterations: number;\n kdf = KdfType.PBKDF2_SHA256;\n kdfOptions: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService) {\n this.kdfOptions = [\n { name: 'PBKDF2 SHA-256', value: KdfType.PBKDF2_SHA256 },\n ];\n }\n\n async ngOnInit() {\n this.kdf = await this.userService.getKdf();\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n const request = new KdfRequest();\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const email = await this.userService.getEmail();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, email, this.kdf, this.kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postAccountKdf(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('encKeySettingsChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch { }\n }\n}\n","{{'loggedOutWarning' | i18n}}

{{'kdfIterationsDesc' | i18n : (100000 | number)}}

{{'warning' | i18n}}: {{'kdfIterationsWarning' | i18n : (50000 | number)}}
","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\nimport { OrganizationPlansComponent } from './organization-plans.component';\n\n@Component({\n selector: 'app-create-organization',\n templateUrl: 'create-organization.component.html',\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true }) orgPlansComponent: OrganizationPlansComponent;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit() {\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.plan === 'families') {\n this.orgPlansComponent.plan = PlanType.FamiliesAnnually;\n this.orgPlansComponent.product = ProductType.Families;\n } else if (qParams.plan === 'teams') {\n this.orgPlansComponent.plan = PlanType.TeamsAnnually;\n this.orgPlansComponent.product = ProductType.Teams;\n } else if (qParams.plan === 'enterprise') {\n this.orgPlansComponent.plan = PlanType.EnterpriseAnnually;\n this.orgPlansComponent.product = ProductType.Enterprise;\n }\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n}\n","

{{'newOrganization' | i18n}}

{{'newOrganizationDesc' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { UpdateDomainsRequest } from 'jslib-common/models/request/updateDomainsRequest';\n\n@Component({\n selector: 'app-domain-rules',\n templateUrl: 'domain-rules.component.html',\n})\nexport class DomainRulesComponent implements OnInit {\n loading = true;\n custom: string[] = [];\n global: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n const response = await this.apiService.getSettingsDomains();\n this.loading = false;\n if (response.equivalentDomains != null) {\n this.custom = response.equivalentDomains.map(d => d.join(', '));\n }\n if (response.globalEquivalentDomains != null) {\n this.global = response.globalEquivalentDomains.map(d => {\n return {\n domains: d.domains.join(', '),\n excluded: d.excluded,\n key: d.type,\n };\n });\n }\n }\n\n toggleExcluded(globalDomain: any) {\n globalDomain.excluded = !globalDomain.excluded;\n }\n\n customize(globalDomain: any) {\n globalDomain.excluded = true;\n this.custom.push(globalDomain.domains);\n }\n\n remove(index: number) {\n this.custom.splice(index, 1);\n }\n\n add() {\n this.custom.push('');\n }\n\n async submit() {\n const request = new UpdateDomainsRequest();\n request.excludedGlobalEquivalentDomains = this.global.filter(d => d.excluded)\n .map(d => d.key);\n if (request.excludedGlobalEquivalentDomains.length === 0) {\n request.excludedGlobalEquivalentDomains = null;\n }\n request.equivalentDomains = this.custom.filter(d => d != null && d.trim() !== '')\n .map(d => d.split(',').map(d2 => d2.trim()));\n if (request.equivalentDomains.length === 0) {\n request.equivalentDomains = null;\n }\n\n try {\n this.formPromise = this.apiService.putSettingsDomains(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('domainsUpdated'));\n } catch { }\n }\n\n indexTrackBy(index: number, obj: any): any {\n return index;\n }\n}\n","

{{'domainRules' | i18n}}

{{'domainRulesDesc' | i18n}}

{{'customEqDomains' | i18n}}

{{'loading' | i18n}}

{{'newCustomDomainDesc' | i18n}}

{{'globalEqDomains' | i18n}}

{{'loading' | i18n}}

0\">
{{d.domains}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { EmergencyAccessType } from 'jslib-common/enums/emergencyAccessType';\nimport { EmergencyAccessInviteRequest } from 'jslib-common/models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib-common/models/request/emergencyAccessUpdateRequest';\n\n@Component({\n selector: 'emergency-access-add-edit',\n templateUrl: 'emergency-access-add-edit.component.html',\n})\nexport class EmergencyAccessAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() emergencyAccessId: string;\n @Output() onSaved = new EventEmitter();\n @Output() onDeleted = new EventEmitter();\n\n loading = true;\n readOnly: boolean = false;\n editMode: boolean = false;\n title: string;\n email: string;\n type: EmergencyAccessType = EmergencyAccessType.View;\n\n formPromise: Promise;\n\n emergencyAccessType = EmergencyAccessType;\n waitTimes: { name: string; value: number; }[];\n waitTime: number;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.emergencyAccessId != null;\n\n this.waitTimes = [\n { name: this.i18nService.t('oneDay'), value: 1 },\n { name: this.i18nService.t('days', '2'), value: 2 },\n { name: this.i18nService.t('days', '7'), value: 7 },\n { name: this.i18nService.t('days', '14'), value: 14 },\n { name: this.i18nService.t('days', '30'), value: 30 },\n { name: this.i18nService.t('days', '90'), value: 90 },\n ];\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editEmergencyContact');\n try {\n const emergencyAccess = await this.apiService.getEmergencyAccess(this.emergencyAccessId);\n this.type = emergencyAccess.type;\n this.waitTime = emergencyAccess.waitTimeDays;\n } catch { }\n } else {\n this.title = this.i18nService.t('inviteEmergencyContact');\n this.waitTime = this.waitTimes[2].value;\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new EmergencyAccessUpdateRequest();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.putEmergencyAccess(this.emergencyAccessId, request);\n } else {\n const request = new EmergencyAccessInviteRequest();\n request.email = this.email.trim();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.postEmergencyAccessInvite(request);\n }\n\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSaved.emit();\n } catch { }\n }\n\n async delete() {\n this.onDeleted.emit();\n }\n}\n","

{{'premium' | i18n}} {{title}} {{name}}

{{'loading' | i18n}}

{{'inviteEmergencyContactDesc' | i18n}}

{{'userAccess' | i18n}}

{{'waitTimeDesc' | i18n}}
","export enum EmergencyAccessType\n{\n View = 0,\n Takeover = 1,\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib-angular/components/attachments.component';\n\n@Component({\n selector: 'emergency-access-attachments',\n templateUrl: '../vault/attachments.component.html',\n})\nexport class EmergencyAccessAttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = true;\n canAccessAttachments = true;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService, window);\n }\n\n protected async init() {\n // Do nothing since cipher is already decoded\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return false;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'emergency-access-confirm',\n templateUrl: 'emergency-access-confirm.component.html',\n})\nexport class EmergencyAccessConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() emergencyAccessId: string;\n @Input() formPromise: Promise;\n @Output() onConfirmed = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n constructor(private apiService: ApiService, private cryptoService: CryptoService,\n private storageService: StorageService) { }\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch { }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n try {\n this.onConfirmed.emit();\n } catch { }\n }\n}\n","

{{'confirmUser' | i18n}} {{name}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{fingerprint}}

","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\nimport { PolicyData } from 'jslib-common/models/data/policyData';\nimport { Policy } from 'jslib-common/models/domain/policy';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { EmergencyAccessPasswordRequest } from 'jslib-common/models/request/emergencyAccessPasswordRequest';\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { ChangePasswordComponent } from 'jslib-angular/components/change-password.component';\n\n@Component({\n selector: 'emergency-access-takeover',\n templateUrl: 'emergency-access-takeover.component.html',\n})\nexport class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit {\n @Output() onDone = new EventEmitter();\n @Input() emergencyAccessId: string;\n @Input() name: string;\n @Input() email: string;\n @Input() kdf: KdfType;\n @Input() kdfIterations: number;\n\n formPromise: Promise;\n\n constructor(i18nService: I18nService, cryptoService: CryptoService,\n messagingService: MessagingService, userService: UserService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private apiService: ApiService, private toasterService: ToasterService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n const response = await this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);\n if (response.data != null && response.data.length > 0) {\n const policies = response.data.map((policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse)));\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(policies);\n }\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n const takeoverResponse = await this.apiService.postEmergencyAccessTakeover(this.emergencyAccessId);\n\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(takeoverResponse.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n if (oldEncKey == null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'), this.i18nService.t('unexpectedError'));\n return;\n }\n\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, takeoverResponse.kdf, takeoverResponse.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n const encKey = await this.cryptoService.remakeEncKey(key, oldEncKey);\n\n const request = new EmergencyAccessPasswordRequest();\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n this.apiService.postEmergencyAccessPassword(this.emergencyAccessId, request);\n\n try {\n this.onDone.emit();\n } catch { }\n }\n}\n","

{{'takeover' | i18n}} {{name}}

{{'loggedOutWarning' | i18n}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherData } from 'jslib-common/models/data';\nimport { Cipher, SymmetricCryptoKey } from 'jslib-common/models/domain';\nimport { EmergencyAccessViewResponse } from 'jslib-common/models/response/emergencyAccessResponse';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { EmergencyAccessAttachmentsComponent } from './emergency-access-attachments.component';\nimport { EmergencyAddEditComponent } from './emergency-add-edit.component';\n\n@Component({\n selector: 'emergency-access-view',\n templateUrl: 'emergency-access-view.component.html',\n})\nexport class EmergencyAccessViewComponent implements OnInit {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n\n id: string;\n ciphers: CipherView[] = [];\n\n constructor(private cipherService: CipherService, private cryptoService: CryptoService,\n private modalService: ModalService, private router: Router,\n private route: ActivatedRoute, private apiService: ApiService) { }\n\n ngOnInit() {\n this.route.params.subscribe(qParams => {\n if (qParams.id == null) {\n return this.router.navigate(['settings/emergency-access']);\n }\n\n this.id = qParams.id;\n\n this.load();\n });\n }\n\n async selectCipher(cipher: CipherView) {\n const [_, childComponent] = await this.modalService.openViewRef(EmergencyAddEditComponent, this.cipherAddEditModalRef, comp => {\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.cipher = cipher;\n });\n\n return childComponent;\n }\n\n async load() {\n const response = await this.apiService.postEmergencyAccessView(this.id);\n this.ciphers = await this.getAllCiphers(response);\n }\n\n async viewAttachments(cipher: CipherView) {\n await this.modalService.openViewRef(EmergencyAccessAttachmentsComponent, this.attachmentsModalRef, comp => {\n comp.cipher = cipher;\n comp.emergencyAccessId = this.id;\n });\n }\n\n protected async getAllCiphers(response: EmergencyAccessViewResponse): Promise {\n const ciphers = response.ciphers;\n\n const decCiphers: CipherView[] = [];\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(response.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n const promises: any[] = [];\n ciphers.forEach(cipherResponse => {\n const cipherData = new CipherData(cipherResponse);\n const cipher = new Cipher(cipherData);\n promises.push(cipher.decrypt(oldEncKey).then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.cipherService.getLocaleSortingFunction());\n\n return decCiphers;\n }\n}\n","

{{'vault' | i18n}}

{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
","import { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncryptedObject {\n iv: ArrayBuffer;\n data: ArrayBuffer;\n mac: ArrayBuffer;\n key: SymmetricCryptoKey;\n}\n","export class EnvironmentUrls {\n base: string;\n api: string;\n identity: string;\n events: string;\n}\n","export class GeneratedPasswordHistory {\n password: string;\n date: number;\n\n constructor(password: string, date: number) {\n this.password = password;\n this.date = date;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../vault/add-edit.component.html',\n})\nexport class EmergencyAddEditComponent extends BaseAddEditComponent {\n originalCipher: Cipher = null;\n viewOnly = true;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n messagingService: MessagingService, eventService: EventService, policyService: PolicyService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService);\n }\n\n async load() {\n this.title = this.i18nService.t('viewItem');\n }\n\n protected async loadCipher() {\n return Promise.resolve(this.originalCipher);\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EmergencyAccessStatusType } from 'jslib-common/enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from 'jslib-common/enums/emergencyAccessType';\nimport { Utils } from 'jslib-common/misc/utils';\nimport { EmergencyAccessConfirmRequest } from 'jslib-common/models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessGranteeDetailsResponse, EmergencyAccessGrantorDetailsResponse } from 'jslib-common/models/response/emergencyAccessResponse';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { EmergencyAccessAddEditComponent } from './emergency-access-add-edit.component';\nimport { EmergencyAccessConfirmComponent } from './emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './emergency-access-takeover.component';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\n@Component({\n selector: 'emergency-access',\n templateUrl: 'emergency-access.component.html',\n})\nexport class EmergencyAccessComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('takeoverTemplate', { read: ViewContainerRef, static: true}) takeoverModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n\n canAccessPremium: boolean;\n trustedContacts: EmergencyAccessGranteeDetailsResponse[];\n grantedContacts: EmergencyAccessGrantorDetailsResponse[];\n emergencyAccessType = EmergencyAccessType;\n emergencyAccessStatusType = EmergencyAccessStatusType;\n actionPromise: Promise;\n isOrganizationOwner: boolean;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private modalService: ModalService, private platformUtilsService: PlatformUtilsService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private storageService: StorageService, private userService: UserService,\n private messagingService: MessagingService, private userNamePipe: UserNamePipe) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const orgs = await this.userService.getAllOrganizations();\n this.isOrganizationOwner = orgs.some(o => o.isOwner);\n this.load();\n }\n\n async load() {\n this.trustedContacts = (await this.apiService.getEmergencyAccessTrusted()).data;\n this.grantedContacts = (await this.apiService.getEmergencyAccessGranted()).data;\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n async edit(details: EmergencyAccessGranteeDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(EmergencyAccessAddEditComponent, this.addEditModalRef, comp => {\n comp.name = this.userNamePipe.transform(details);\n comp.emergencyAccessId = details?.id;\n comp.readOnly = !this.canAccessPremium;\n comp.onSaved.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeleted.subscribe(() => {\n modal.close();\n this.remove(details);\n });\n });\n }\n\n invite() {\n this.edit(null);\n }\n\n async reinvite(contact: EmergencyAccessGranteeDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postEmergencyAccessReinvite(contact.id);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', contact.email));\n this.actionPromise = null;\n }\n\n async confirm(contact: EmergencyAccessGranteeDetailsResponse) {\n function updateUser() {\n contact.status = EmergencyAccessStatusType.Confirmed;\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(EmergencyAccessConfirmComponent, this.confirmModalRef, comp => {\n comp.name = this.userNamePipe.transform(contact);\n comp.emergencyAccessId = contact.id;\n comp.userId = contact?.granteeId;\n comp.onConfirmed.subscribe(async () => {\n modal.close();\n\n comp.formPromise = this.doConfirmation(contact);\n await comp.formPromise;\n\n updateUser();\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.userNamePipe.transform(contact)));\n });\n });\n return;\n }\n\n this.actionPromise = this.doConfirmation(contact);\n await this.actionPromise;\n updateUser();\n\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.userNamePipe.transform(contact)));\n this.actionPromise = null;\n }\n\n async remove(details: EmergencyAccessGranteeDetailsResponse | EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.userNamePipe.transform(details),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteEmergencyAccess(details.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.userNamePipe.transform(details)));\n\n if (details instanceof EmergencyAccessGranteeDetailsResponse) {\n this.removeGrantee(details);\n } else {\n this.removeGrantor(details);\n }\n } catch { }\n }\n\n async requestAccess(details: EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('requestAccessConfirmation', details.waitTimeDays.toString()),\n this.userNamePipe.transform(details),\n this.i18nService.t('requestAccess'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessInitiate(details.id);\n\n details.status = EmergencyAccessStatusType.RecoveryInitiated;\n this.toasterService.popAsync('success', null, this.i18nService.t('requestSent', this.userNamePipe.transform(details)));\n }\n\n async approve(details: EmergencyAccessGranteeDetailsResponse) {\n const type = this.i18nService.t(details.type === EmergencyAccessType.View ? 'view' : 'takeover');\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('approveAccessConfirmation', this.userNamePipe.transform(details), type),\n this.userNamePipe.transform(details),\n this.i18nService.t('approve'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessApprove(details.id);\n details.status = EmergencyAccessStatusType.RecoveryApproved;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyApproved', this.userNamePipe.transform(details)));\n }\n\n async reject(details: EmergencyAccessGranteeDetailsResponse) {\n await this.apiService.postEmergencyAccessReject(details.id);\n details.status = EmergencyAccessStatusType.Confirmed;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyRejected', this.userNamePipe.transform(details)));\n }\n\n async takeover(details: EmergencyAccessGrantorDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(EmergencyAccessTakeoverComponent, this.takeoverModalRef, comp => {\n comp.name = this.userNamePipe.transform(details);\n comp.email = details.email;\n comp.emergencyAccessId = details != null ? details.id : null;\n\n comp.onDone.subscribe(() => {\n modal.close();\n this.toasterService.popAsync('success', null, this.i18nService.t('passwordResetFor', this.userNamePipe.transform(details)));\n });\n });\n }\n\n private removeGrantee(details: EmergencyAccessGranteeDetailsResponse) {\n const index = this.trustedContacts.indexOf(details);\n if (index > -1) {\n this.trustedContacts.splice(index, 1);\n }\n }\n\n private removeGrantor(details: EmergencyAccessGrantorDetailsResponse) {\n const index = this.grantedContacts.indexOf(details);\n if (index > -1) {\n this.grantedContacts.splice(index, 1);\n }\n }\n\n // Encrypt the master password hash using the grantees public key, and send it to bitwarden for escrow.\n private async doConfirmation(details: EmergencyAccessGranteeDetailsResponse) {\n const encKey = await this.cryptoService.getEncKey();\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n try {\n // tslint:disable-next-line\n console.log('User\\'s fingerprint: ' +\n (await this.cryptoService.getFingerprint(details.granteeId, publicKey.buffer)).join('-'));\n } catch { }\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n const request = new EmergencyAccessConfirmRequest();\n request.key = encryptedKey.encryptedString;\n await this.apiService.postEmergencyAccessConfirm(details.id, request);\n }\n}\n","

{{'emergencyAccess' | i18n}}

{{'emergencyAccessDesc' | i18n}} {{'learnMore' | i18n}}.

{{'warning' | i18n }}: {{'emergencyAccessOwnerWarning' | i18n}}

{{'trustedEmergencyContacts' | i18n}} {{'premium' | i18n}}

{{c.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{'emergencyAccessRecoveryInitiated' | i18n}} {{'emergencyAccessRecoveryApproved' | i18n}} {{'view' | i18n}} {{'takeover' | i18n}} {{c.name}}

{{'noTrustedContacts' | i18n}}

{{'designatedEmergencyContacts' | i18n}}

{{c.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{'emergencyAccessRecoveryInitiated' | i18n}} {{'emergencyAccessRecoveryApproved' | i18n}} {{'view' | i18n}} {{'takeover' | i18n}} {{c.name}}

{{'noGrantedAccess' | i18n}}

","import { EmergencyAccessStatusType } from '../../enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from '../../enums/emergencyAccessType';\nimport { KdfType } from '../../enums/kdfType';\nimport { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\n\nexport class EmergencyAccessGranteeDetailsResponse extends BaseResponse {\n id: string;\n granteeId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.granteeId = this.getResponseProperty('GranteeId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessGrantorDetailsResponse extends BaseResponse {\n id: string;\n grantorId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.grantorId = this.getResponseProperty('GrantorId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessTakeoverResponse extends BaseResponse {\n keyEncrypted: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n\nexport class EmergencyAccessViewResponse extends BaseResponse {\n keyEncrypted: string;\n ciphers: CipherResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n }\n}\n","import {\n AfterContentInit,\n Component,\n Input,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { SsoComponent } from 'jslib-angular/components/sso.component';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-link-sso',\n templateUrl: 'link-sso.component.html',\n})\nexport class LinkSsoComponent extends SsoComponent implements AfterContentInit {\n @Input() organization: Organization;\n returnUri: string = '/settings/organizations';\n\n constructor(platformUtilsService: PlatformUtilsService, i18nService: I18nService,\n apiService: ApiService, authService: AuthService,\n router: Router, route: ActivatedRoute,\n cryptoFunctionService: CryptoFunctionService, passwordGenerationService: PasswordGenerationService,\n storageService: StorageService, stateService: StateService, environmentService: EnvironmentService) {\n super(authService, router,\n i18nService, route,\n storageService, stateService,\n platformUtilsService, apiService,\n cryptoFunctionService, environmentService, passwordGenerationService);\n\n this.returnUri = '/settings/organizations';\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngAfterContentInit() {\n this.identifier = this.organization.identifier;\n }\n}\n"," {{'linkSso' | i18n}} ","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-options',\n templateUrl: 'options.component.html',\n})\nexport class OptionsComponent implements OnInit {\n vaultTimeout: number = null;\n vaultTimeoutAction: string = 'lock';\n disableIcons: boolean;\n enableGravatars: boolean;\n enableFullWidth: boolean;\n locale: string;\n vaultTimeouts: any[];\n localeOptions: any[];\n\n private startingLocale: string;\n\n constructor(private storageService: StorageService, private stateService: StateService,\n private i18nService: I18nService, private toasterService: ToasterService,\n private vaultTimeoutService: VaultTimeoutService, private platformUtilsService: PlatformUtilsService,\n private messagingService: MessagingService) {\n this.vaultTimeouts = [\n { name: i18nService.t('oneMinute'), value: 1 },\n { name: i18nService.t('fiveMinutes'), value: 5 },\n { name: i18nService.t('fifteenMinutes'), value: 15 },\n { name: i18nService.t('thirtyMinutes'), value: 30 },\n { name: i18nService.t('oneHour'), value: 60 },\n { name: i18nService.t('fourHours'), value: 240 },\n { name: i18nService.t('onRefresh'), value: -1 },\n ];\n if (this.platformUtilsService.isDev()) {\n this.vaultTimeouts.push({ name: i18nService.t('never'), value: null });\n }\n\n const localeOptions: any[] = [];\n i18nService.supportedTranslationLocales.forEach(locale => {\n let name = locale;\n if (i18nService.localeNames.has(locale)) {\n name += (' - ' + i18nService.localeNames.get(locale));\n }\n localeOptions.push({ name: name, value: locale });\n });\n localeOptions.sort(Utils.getSortFunction(i18nService, 'name'));\n localeOptions.splice(0, 0, { name: i18nService.t('default'), value: null });\n this.localeOptions = localeOptions;\n }\n\n async ngOnInit() {\n this.vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n this.vaultTimeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n this.disableIcons = await this.storageService.get(ConstantsService.disableFaviconKey);\n this.enableGravatars = await this.storageService.get('enableGravatars');\n this.enableFullWidth = await this.storageService.get('enableFullWidth');\n this.locale = this.startingLocale = await this.storageService.get(ConstantsService.localeKey);\n }\n\n async submit() {\n await this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout != null ? this.vaultTimeout : null,\n this.vaultTimeoutAction);\n await this.storageService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.stateService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.storageService.save('enableGravatars', this.enableGravatars);\n await this.stateService.save('enableGravatars', this.enableGravatars);\n await this.storageService.save('enableFullWidth', this.enableFullWidth);\n this.messagingService.send('setFullWidth');\n await this.storageService.save(ConstantsService.localeKey, this.locale);\n if (this.locale !== this.startingLocale) {\n window.location.reload();\n } else {\n this.toasterService.popAsync('success', null, this.i18nService.t('optionsUpdated'));\n }\n }\n\n async vaultTimeoutActionChanged(newValue: string) {\n if (newValue === 'logOut') {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('vaultTimeoutLogOutConfirmation'),\n this.i18nService.t('vaultTimeoutLogOutConfirmationTitle'),\n this.i18nService.t('yes'), this.i18nService.t('cancel'), 'warning');\n if (!confirmed) {\n this.vaultTimeoutAction = 'lock';\n return;\n }\n }\n this.vaultTimeoutAction = newValue;\n }\n}\n","

{{'options' | i18n}}

{{'optionsDesc' | i18n}}

{{'vaultTimeoutDesc' | i18n}}
{{'languageDesc' | i18n}}
{{'disableIconsDesc' | i18n}}
{{'enableGravatarsDesc' | i18n}}
{{'enableFullWidthDesc' | i18n}}
","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-premium',\n templateUrl: 'premium.component.html',\n})\nexport class PremiumComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxInfoComponent: TaxInfoComponent;\n\n canAccessPremium = false;\n selfHosted = false;\n premiumPrice = 10;\n storageGbPrice = 4;\n additionalStorage = 0;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService, private router: Router,\n private messagingService: MessagingService, private syncService: SyncService,\n private userService: UserService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const premium = await this.tokenService.getPremium();\n if (premium) {\n this.router.navigate(['/settings/subscription']);\n return;\n }\n }\n\n async submit() {\n let files: FileList = null;\n if (this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n if (this.selfHosted) {\n if (!this.tokenService.getEmailVerified()) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verifyEmailFirst'));\n return;\n }\n\n const fd = new FormData();\n fd.append('license', files[0]);\n this.formPromise = this.apiService.postAccountLicense(fd).then(() => {\n return this.finalizePremium();\n });\n } else {\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n const fd = new FormData();\n fd.append('paymentMethodType', result[1].toString());\n if (result[0] != null) {\n fd.append('paymentToken', result[0]);\n }\n fd.append('additionalStorageGb', (this.additionalStorage || 0).toString());\n fd.append('country', this.taxInfoComponent.taxInfo.country);\n fd.append('postalCode', this.taxInfoComponent.taxInfo.postalCode);\n return this.apiService.postPremium(fd);\n }).then(paymentResponse => {\n if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) {\n return this.paymentComponent.handleStripeCardPayment(paymentResponse.paymentIntentClientSecret,\n () => this.finalizePremium());\n } else {\n return this.finalizePremium();\n }\n });\n }\n await this.formPromise;\n } catch { }\n }\n\n async finalizePremium() {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.toasterService.popAsync('success', null, this.i18nService.t('premiumUpdated'));\n this.messagingService.send('purchasedPremium');\n this.router.navigate(['/settings/subscription']);\n }\n\n get additionalStorageTotal(): number {\n return this.storageGbPrice * Math.abs(this.additionalStorage || 0);\n }\n\n get subtotal(): number {\n return this.premiumPrice + this.additionalStorageTotal;\n }\n\n get taxCharges(): number {\n return this.taxInfoComponent != null && this.taxInfoComponent.taxRate != null ?\n (this.taxInfoComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total(): number {\n return (this.subtotal + this.taxCharges) || 0;\n }\n}\n","

{{'goPremium' | i18n}}

{{'alreadyPremiumFromOrg' | i18n}}

{{'premiumUpgradeUnlockFeatures' | i18n}}

  • {{'premiumSignUpStorage' | i18n}}
  • {{'premiumSignUpTwoStep' | i18n}}
  • {{'premiumSignUpEmergency' |i18n}}
  • {{'premiumSignUpReports' | i18n}}
  • {{'premiumSignUpTotp' | i18n}}
  • {{'premiumSignUpSupport' | i18n}}
  • {{'premiumSignUpFuture' | i18n}}

{{'premiumPrice' | i18n : (premiumPrice | currency:'$')}}

{{'purchasePremium' | i18n}}

{{'uploadLicenseFilePremium' | i18n}}

{{'licenseFileDesc' | i18n : 'bitwarden_premium_license.json'}}

{{'addons' | i18n}}

{{'additionalStorageIntervalDesc' | i18n : '1 GB' : (storageGbPrice | currency:'$') : ('year' | i18n)}}

{{'summary' | i18n}}

{{'premiumMembership' | i18n}}: {{premiumPrice | currency:'$'}}
{{'additionalStorageGb' | i18n}}: {{additionalStorage || 0}} GB × {{storageGbPrice | currency:'$'}} = {{additionalStorageTotal | currency:'$'}}

{{'paymentInformation' | i18n}}

{{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}
{{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}

{{'total' | i18n}}: {{total | currency:'USD $'}}/{{'year' | i18n}}

{{'paymentChargedAnnually' | i18n}}
","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'SettingsComponent';\n\n@Component({\n selector: 'app-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n premium: boolean;\n selfHosted: boolean;\n\n constructor(private tokenService: TokenService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone, private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'purchasedPremium':\n await this.load();\n break;\n default:\n }\n });\n });\n\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n await this.load();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.premium = await this.tokenService.getPremium();\n }\n}\n"," ","import { Component } from '@angular/core';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\n\nimport { CipherWithIdRequest } from 'jslib-common/models/request/cipherWithIdRequest';\nimport { FolderWithIdRequest } from 'jslib-common/models/request/folderWithIdRequest';\nimport { UpdateKeyRequest } from 'jslib-common/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-update-key',\n templateUrl: 'update-key.component.html',\n})\nexport class UpdateKeyComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private syncService: SyncService,\n private folderService: FolderService, private cipherService: CipherService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (hasEncKey) {\n return;\n }\n\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.makeRequest().then(request => {\n return this.apiService.postAccountKey(request);\n });\n await this.formPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('keyUpdated'),\n body: this.i18nService.t('logBackInOthersToo'),\n timeout: 15000,\n };\n this.toasterService.popAsync(toast);\n this.messagingService.send('logout');\n } catch { }\n }\n\n private async makeRequest(): Promise {\n const key = await this.cryptoService.getKey();\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n\n await this.syncService.fullSync(true);\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n return request;\n }\n}\n","

{{'updateEncryptionKey' | i18n}}

{{'updateEncryptionKeyShortDesc' | i18n}} {{'updateEncryptionKeyDesc' | i18n}} {{'learnMore' | i18n}}

{{'updateEncryptionKeyWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { SubscriptionResponse } from 'jslib-common/models/response/subscriptionResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\n\n@Component({\n selector: 'app-user-subscription',\n templateUrl: 'user-subscription.component.html',\n})\nexport class UserSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n sub: SubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private tokenService: TokenService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n if (this.tokenService.getPremium()) {\n this.loading = true;\n this.sub = await this.apiService.getUserSubscription();\n } else {\n this.router.navigate(['/settings/premium']);\n return;\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postReinstatePremium();\n await this.reinstatePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch { }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postCancelPremium();\n await this.cancelPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch { }\n }\n\n downloadLicense() {\n if (this.loading) {\n return;\n }\n\n const licenseString = JSON.stringify(this.sub.license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_premium_license.json');\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(load: boolean) {\n this.showUpdateLicense = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t(add ? 'addStorage' : 'removeStorage'), null, null, 'warning');\n return;\n }\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get usingInAppPurchase() {\n return this.sub != null ? this.sub.usingInAppPurchase : false;\n }\n}\n","

{{'premiumMembership' | i18n}} {{'loading' | i18n}}

{{'loading' | i18n}} {{'subscriptionCanceled' | i18n}}

{{'subscriptionPendingCanceled' | i18n}}

{{'expiration' | i18n}}
{{sub.expiration | date:'mediumDate'}}
{{'neverExpires' | i18n}}
{{'status' | i18n}}
{{(subscription && subscription.status) || '-'}} {{'pendingCancellation' | i18n}}
{{'nextCharge' | i18n}}
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) : '-'}}
{{'details' | i18n}}
{{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}} {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}
{{'manageSubscription' | i18n}}

{{'updateLicense' | i18n}}

{{'storage' | i18n}}

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

{{(storagePercentage / 100) | percent}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-verify-email',\n templateUrl: 'verify-email.component.html',\n})\nexport class VerifyEmailComponent {\n actionPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService) { }\n\n async send() {\n if (this.actionPromise != null) {\n return;\n }\n try {\n this.actionPromise = this.apiService.postAccountVerifyEmail();\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('checkInboxForVerification'));\n } catch { }\n this.actionPromise = null;\n }\n}\n","
{{'verifyEmail' | i18n}}

{{'verifyEmailDesc' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { BreachAccountResponse } from 'jslib-common/models/response/breachAccountResponse';\n\n@Component({\n selector: 'app-breach-report',\n templateUrl: 'breach-report.component.html',\n})\nexport class BreachReportComponent implements OnInit {\n error = false;\n username: string;\n checkedUsername: string;\n breachedAccounts: BreachAccountResponse[] = [];\n formPromise: Promise;\n\n constructor(private auditService: AuditService, private userService: UserService) { }\n\n async ngOnInit() {\n this.username = await this.userService.getEmail();\n }\n\n async submit() {\n this.error = false;\n this.username = this.username.toLowerCase();\n try {\n this.formPromise = this.auditService.breachedAccounts(this.username);\n this.breachedAccounts = await this.formPromise;\n } catch {\n this.error = true;\n }\n this.checkedUsername = this.username;\n }\n}\n","

{{'dataBreachReport' | i18n}}

{{'breachDesc' | i18n}}

{{'breachCheckUsernameEmail' | i18n}}

{{'reportError' | i18n}}...

{{'breachUsernameNotFound' | i18n : checkedUsername}} {{'breachUsernameFound' | i18n : checkedUsername : breachedAccounts.length}}
  • \"\"

    {{a.title}}

    {{'compromisedData' | i18n}}:

    • {{d}}
    {{'website' | i18n}}
    {{a.domain}}
    {{'affectedUsers' | i18n}}
    {{a.pwnCount | number}}
    {{'breachOccurred' | i18n}}
    {{a.breachDate | date: 'mediumDate'}}
    {{'breachReported' | i18n}}
    {{a.addedDate | date: 'mediumDate'}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent,\n} from 'jslib-angular/components/password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator-history',\n templateUrl: 'password-generator-history.component.html',\n})\nexport class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n}\n","

{{'passwordHistory' | i18n}}

  • {{h.date | date:'medium'}}
{{'noPasswordsInList' | i18n}}
","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorComponent as BasePasswordGeneratorComponent,\n} from 'jslib-angular/components/password-generator.component';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\nimport { PasswordGeneratorHistoryComponent } from './password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator',\n templateUrl: 'password-generator.component.html',\n})\nexport class PasswordGeneratorComponent extends BasePasswordGeneratorComponent {\n @ViewChild('historyTemplate', { read: ViewContainerRef, static: true }) historyModalRef: ViewContainerRef;\n\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, private modalService: ModalService) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n\n async history() {\n await this.modalService.openViewRef(PasswordGeneratorHistoryComponent, this.historyModalRef);\n }\n\n lengthChanged() {\n document.getElementById('length').focus();\n }\n\n minNumberChanged() {\n document.getElementById('min-number').focus();\n }\n\n minSpecialChanged() {\n document.getElementById('min-special').focus();\n }\n}\n","

{{'passwordGenerator' | i18n}}

{{'passwordGeneratorPolicyInEffect' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent implements OnInit {\n canAccessPremium = false;\n\n constructor(private userService: UserService, private messagingService: MessagingService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n}\n"," ","import { Component } from '@angular/core';\n\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n FolderAddEditComponent as BaseFolderAddEditComponent,\n} from 'jslib-angular/components/folder-add-edit.component';\n\n@Component({\n selector: 'app-folder-add-edit',\n templateUrl: 'folder-add-edit.component.html',\n})\nexport class FolderAddEditComponent extends BaseFolderAddEditComponent {\n constructor(folderService: FolderService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService) {\n super(folderService, i18nService, platformUtilsService);\n }\n}\n","

{{title}}

","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { ShareComponent as BaseShareComponent } from 'jslib-angular/components/share.component';\n\n@Component({\n selector: 'app-vault-share',\n templateUrl: 'share.component.html',\n})\nexport class ShareComponent extends BaseShareComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, userService: UserService,\n cipherService: CipherService) {\n super(collectionService, platformUtilsService, i18nService, userService, cipherService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n}\n","

{{'moveToOrganization' | i18n}} {{cipher.name}}

{{'noOrganizationsList' | i18n}}

{{'moveToOrgDesc' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
{{'newOrganization' | i18n}}
","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { OrganizationsComponent } from '../settings/organizations.component';\nimport { UpdateKeyComponent } from '../settings/update-key.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { FolderAddEditComponent } from './folder-add-edit.component';\nimport { GroupingsComponent } from './groupings.component';\nimport { ShareComponent } from './share.component';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nconst BroadcasterSubscriptionId = 'VaultComponent';\n\n@Component({\n selector: 'app-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(OrganizationsComponent, { static: true }) organizationsComponent: OrganizationsComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('folderAddEdit', { read: ViewContainerRef, static: true }) folderAddEditModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('share', { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('updateKeyTemplate', { read: ViewContainerRef, static: true }) updateKeyModalRef: ViewContainerRef;\n\n favorites: boolean = false;\n type: CipherType = null;\n folderId: string = null;\n collectionId: string = null;\n showVerifyEmail = false;\n showBrowserOutdated = false;\n showUpdateKey = false;\n showPremiumCallout = false;\n showProviders = false;\n deleted: boolean = false;\n trashCleanupWarning: string = null;\n\n constructor(private syncService: SyncService, private route: ActivatedRoute,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService, private modalService: ModalService,\n private tokenService: TokenService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService,\n private platformUtilsService: PlatformUtilsService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone) { }\n\n async ngOnInit() {\n this.showVerifyEmail = !(await this.tokenService.getEmailVerified());\n this.showBrowserOutdated = window.navigator.userAgent.indexOf('MSIE') !== -1;\n this.trashCleanupWarning = this.i18nService.t('trashCleanupWarningSelfHosted');\n\n const queryParamsSub = this.route.queryParams.subscribe(async params => {\n await this.syncService.fullSync(false);\n\n if (await this.userService.getForcePasswordReset()) {\n this.router.navigate(['update-temp-password']);\n }\n\n this.showUpdateKey = !(await this.cryptoService.hasEncKey());\n const canAccessPremium = await this.userService.canAccessPremium();\n this.showPremiumCallout = !this.showVerifyEmail && !canAccessPremium &&\n !this.platformUtilsService.isSelfHost();\n\n this.showProviders = (await this.userService.getAllProviders()).length > 0;\n\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n ]);\n\n if (params == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (params.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted();\n } else if (params.favorites) {\n this.groupingsComponent.selectedFavorites = true;\n await this.filterFavorites();\n } else if (params.type) {\n const t = parseInt(params.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t);\n } else if (params.folderId) {\n this.groupingsComponent.selectedFolder = true;\n this.groupingsComponent.selectedFolderId = params.folderId;\n await this.filterFolder(params.folderId);\n } else if (params.collectionId) {\n this.groupingsComponent.selectedCollectionId = params.collectionId;\n await this.filterCollection(params.collectionId);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n this.ciphersComponent.load(this.ciphersComponent.filter),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.reload();\n this.clearFilters();\n this.go();\n }\n\n async filterFavorites() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFavorites');\n await this.ciphersComponent.reload(c => c.favorite);\n this.clearFilters();\n this.favorites = true;\n this.go();\n }\n\n async filterDeleted() {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n await this.ciphersComponent.reload(null, true);\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n async filterCipherType(type: CipherType) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n await this.ciphersComponent.reload(c => c.type === type);\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterFolder(folderId: string) {\n this.ciphersComponent.showAddNew = true;\n folderId = folderId === 'none' ? null : folderId;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFolder');\n await this.ciphersComponent.reload(c => c.folderId === folderId);\n this.clearFilters();\n this.folderId = folderId == null ? 'none' : folderId;\n this.go();\n }\n\n async filterCollection(collectionId: string) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n await this.ciphersComponent.reload(c => c.collectionIds != null &&\n c.collectionIds.indexOf(collectionId) > -1);\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n const canAccessPremium = await this.userService.canAccessPremium();\n if (cipher.organizationId == null && !canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n } else if (cipher.organizationId != null) {\n const org = await this.userService.getOrganization(cipher.organizationId);\n if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n }\n\n let madeAttachmentChanges = false;\n const [modal] = await this.modalService.openViewRef(AttachmentsComponent, this.attachmentsModalRef, comp => {\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n comp.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n comp.onReuploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n });\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async shareCipher(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(ShareComponent, this.shareModalRef, comp => {\n comp.cipherId = cipher.id;\n comp.onSharedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(CollectionsComponent, this.collectionsModalRef, comp => {\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async addFolder() {\n const [modal] = await this.modalService.openViewRef(FolderAddEditComponent, this.folderAddEditModalRef, comp => {\n comp.folderId = null;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.groupingsComponent.loadFolders();\n });\n });\n }\n\n async editFolder(folderId: string) {\n const [modal] = await this.modalService.openViewRef(FolderAddEditComponent, this.folderAddEditModalRef, comp => {\n comp.folderId = folderId;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.groupingsComponent.loadFolders();\n });\n comp.onDeletedFolder.subscribe(async () => {\n modal.close();\n await this.groupingsComponent.loadFolders();\n await this.filterFolder('none');\n this.groupingsComponent.selectedFolderId = null;\n });\n });\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.type = this.type;\n component.folderId = this.folderId === 'none' ? null : this.folderId;\n if (this.collectionId != null) {\n const collection = this.groupingsComponent.collections.filter(c => c.id === this.collectionId);\n if (collection.length > 0) {\n component.organizationId = collection[0].organizationId;\n component.collectionIds = [this.collectionId];\n }\n }\n }\n\n async editCipher(cipher: CipherView) {\n const [modal, childComponent] = await this.modalService.openViewRef(AddEditComponent, this.cipherAddEditModalRef, comp => {\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n }\n\n async updateKey() {\n await this.modalService.openViewRef(UpdateKeyComponent, this.updateKeyModalRef);\n }\n\n private clearFilters() {\n this.folderId = null;\n this.collectionId = null;\n this.favorites = false;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n favorites: this.favorites ? true : null,\n type: this.type,\n folderId: this.folderId,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","

{{'myVault' | i18n}} {{'loading' | i18n}}

{{trashCleanupWarning}}
{{'updateKeyTitle' | i18n}}

{{'updateEncryptionKeyShortDesc' | i18n}}

{{'updateBrowser' | i18n}}

{{'updateBrowserDesc' | i18n}}

{{'updateBrowser' | i18n}}
{{'goPremium' | i18n}}

{{'premiumUpgradeUnlockFeatures' | i18n}}

{{'goPremium' | i18n}}
{{'organizations' | i18n}}
{{'providers' | i18n}}
","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Injectable()\nexport class OrganizationGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n if (org == null) {\n this.router.navigate(['/']);\n return false;\n }\n if (!org.isOwner && !org.enabled) {\n this.toasterService.popAsync('error', null, this.i18nService.t('organizationIsDisabled'));\n this.router.navigate(['/']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Permissions } from 'jslib-common/enums/permissions';\n\n@Injectable()\nexport class OrganizationTypeGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n const permissions = route.data == null ? null : route.data.permissions as Permissions[];\n\n if (\n (permissions.indexOf(Permissions.AccessBusinessPortal) !== -1 && org.canAccessBusinessPortal) ||\n (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && org.canAccessEventLogs) ||\n (permissions.indexOf(Permissions.AccessImportExport) !== -1 && org.canAccessImportExport) ||\n (permissions.indexOf(Permissions.AccessReports) !== -1 && org.canAccessReports) ||\n (permissions.indexOf(Permissions.ManageAllCollections) !== -1 && org.canManageAllCollections) ||\n (permissions.indexOf(Permissions.ManageAssignedCollections) !== -1 && org.canManageAssignedCollections) ||\n (permissions.indexOf(Permissions.ManageGroups) !== -1 && org.canManageGroups) ||\n (permissions.indexOf(Permissions.ManageOrganization) !== -1 && org.isOwner) ||\n (permissions.indexOf(Permissions.ManagePolicies) !== -1 && org.canManagePolicies) ||\n (permissions.indexOf(Permissions.ManageUsers) !== -1 && org.canManageUsers) ||\n (permissions.indexOf(Permissions.ManageUsersPassword) !== -1 && org.canManageUsersPassword)\n ) {\n return true;\n }\n\n this.router.navigate(['/organizations', org.id]);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class LockGuardService implements CanActivate {\n\n protected homepage = 'vault';\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n return true;\n } else {\n this.router.navigate([this.homepage]);\n return false;\n }\n }\n\n this.router.navigate(['']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class UnauthGuardService implements CanActivate {\n\n protected homepage = 'vault';\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n this.router.navigate(['lock']);\n } else {\n this.router.navigate([this.homepage]);\n }\n return false;\n }\n\n return true;\n }\n}\n","import { DeviceType } from '../enums/deviceType';\nimport { PolicyType } from '../enums/policyType';\n\nimport { ApiService as ApiServiceAbstraction } from '../abstractions/api.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\n\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationImportRequest } from '../models/request/organizationImportRequest';\nimport { OrganizationKeysRequest } from '../models/request/organizationKeysRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserBulkConfirmRequest } from '../models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from '../models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from '../models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { OrganizationUserResetPasswordRequest } from '../models/request/organizationUserResetPasswordRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PasswordVerificationRequest } from '../models/request/passwordVerificationRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { ProviderAddOrganizationRequest } from '../models/request/provider/providerAddOrganizationRequest';\nimport { ProviderOrganizationCreateRequest } from '../models/request/provider/providerOrganizationCreateRequest';\nimport { ProviderSetupRequest } from '../models/request/provider/providerSetupRequest';\nimport { ProviderUpdateRequest } from '../models/request/provider/providerUpdateRequest';\nimport { ProviderUserAcceptRequest } from '../models/request/provider/providerUserAcceptRequest';\nimport { ProviderUserBulkConfirmRequest } from '../models/request/provider/providerUserBulkConfirmRequest';\nimport { ProviderUserBulkRequest } from '../models/request/provider/providerUserBulkRequest';\nimport { ProviderUserConfirmRequest } from '../models/request/provider/providerUserConfirmRequest';\nimport { ProviderUserInviteRequest } from '../models/request/provider/providerUserInviteRequest';\nimport { ProviderUserUpdateRequest } from '../models/request/provider/providerUserUpdateRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTempPasswordRequest } from '../models/request/updateTempPasswordRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from '../models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from '../models/request/updateTwoFactorWebAuthnRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { Utils } from '../misc/utils';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { AttachmentResponse } from '../models/response/attachmentResponse';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationAutoEnrollStatusResponse } from '../models/response/organizationAutoEnrollStatusResponse';\nimport { OrganizationKeysResponse } from '../models/response/organizationKeysResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport { OrganizationUserBulkPublicKeyResponse } from '../models/response/organizationUserBulkPublicKeyResponse';\nimport { OrganizationUserBulkResponse } from '../models/response/organizationUserBulkResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { ProviderOrganizationOrganizationDetailsResponse, ProviderOrganizationResponse } from '../models/response/provider/providerOrganizationResponse';\nimport { ProviderResponse } from '../models/response/provider/providerResponse';\nimport { ProviderUserBulkPublicKeyResponse } from '../models/response/provider/providerUserBulkPublicKeyResponse';\nimport { ProviderUserBulkResponse } from '../models/response/provider/providerUserBulkResponse';\nimport {\n ProviderUserResponse,\n ProviderUserUserDetailsResponse\n} from '../models/response/provider/providerUserResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport { TwoFactorWebAuthnResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { ChallengeResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { EnvironmentService } from '../abstractions';\nimport { IdentityCaptchaResponse } from '../models/response/identityCaptchaResponse';\nimport { SendAccessView } from '../models/view/sendAccessView';\n\nexport class ApiService implements ApiServiceAbstraction {\n protected apiKeyRefresh: (clientId: string, clientSecret: string) => Promise;\n private device: DeviceType;\n private deviceType: string;\n private isWebClient = false;\n private isDesktopClient = false;\n\n constructor(private tokenService: TokenService, private platformUtilsService: PlatformUtilsService,\n private environmentService: EnvironmentService, private logoutCallback: (expired: boolean) => Promise,\n private customUserAgent: string = null) {\n this.device = platformUtilsService.getDevice();\n this.deviceType = this.device.toString();\n this.isWebClient = this.device === DeviceType.IEBrowser || this.device === DeviceType.ChromeBrowser ||\n this.device === DeviceType.EdgeBrowser || this.device === DeviceType.FirefoxBrowser ||\n this.device === DeviceType.OperaBrowser || this.device === DeviceType.SafariBrowser ||\n this.device === DeviceType.UnknownBrowser || this.device === DeviceType.VivaldiBrowser;\n this.isDesktopClient = this.device === DeviceType.WindowsDesktop || this.device === DeviceType.MacOsDesktop ||\n this.device === DeviceType.LinuxDesktop;\n }\n\n // Auth APIs\n\n async postIdentityToken(request: TokenRequest): Promise {\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n request.alterIdentityTokenHeaders(headers);\n const response = await this.fetch(new Request(this.environmentService.getIdentityUrl() + '/connect/token', {\n body: this.qsStringify(request.toIdentityToken(request.clientId ?? this.platformUtilsService.identityClientId)),\n credentials: this.getCredentials(),\n cache: 'no-store',\n headers: headers,\n method: 'POST',\n }));\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n if (responseJson != null) {\n if (response.status === 200) {\n return new IdentityTokenResponse(responseJson);\n } else if (response.status === 400 && responseJson.TwoFactorProviders2 &&\n Object.keys(responseJson.TwoFactorProviders2).length) {\n await this.tokenService.clearTwoFactorToken(request.email);\n return new IdentityTwoFactorResponse(responseJson);\n } else if (response.status === 400 && responseJson.HCaptcha_SiteKey &&\n Object.keys(responseJson.HCaptcha_SiteKey).length) {\n return new IdentityCaptchaResponse(responseJson);\n }\n }\n\n return Promise.reject(new ErrorResponse(responseJson, response.status, true));\n }\n\n async refreshIdentityToken(): Promise {\n try {\n await this.doAuthRefresh();\n } catch (e) {\n return Promise.reject(null);\n }\n }\n\n // Account APIs\n\n async getProfile(): Promise {\n const r = await this.send('GET', '/accounts/profile', null, true, true);\n return new ProfileResponse(r);\n }\n\n async getUserBilling(): Promise {\n const r = await this.send('GET', '/accounts/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getUserSubscription(): Promise {\n const r = await this.send('GET', '/accounts/subscription', null, true, true);\n return new SubscriptionResponse(r);\n }\n\n async getTaxInfo(): Promise {\n const r = await this.send('GET', '/accounts/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async putProfile(request: UpdateProfileRequest): Promise {\n const r = await this.send('PUT', '/accounts/profile', request, true, true);\n return new ProfileResponse(r);\n }\n\n putTaxInfo(request: TaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/accounts/tax', request, true, false);\n }\n\n async postPrelogin(request: PreloginRequest): Promise {\n const r = await this.send('POST', '/accounts/prelogin', request, false, true);\n return new PreloginResponse(r);\n }\n\n postEmailToken(request: EmailTokenRequest): Promise {\n return this.send('POST', '/accounts/email-token', request, true, false);\n }\n\n postEmail(request: EmailRequest): Promise {\n return this.send('POST', '/accounts/email', request, true, false);\n }\n\n postPassword(request: PasswordRequest): Promise {\n return this.send('POST', '/accounts/password', request, true, false);\n }\n\n setPassword(request: SetPasswordRequest): Promise {\n return this.send('POST', '/accounts/set-password', request, true, false);\n }\n\n postSecurityStamp(request: PasswordVerificationRequest): Promise {\n return this.send('POST', '/accounts/security-stamp', request, true, false);\n }\n\n deleteAccount(request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/accounts', request, true, false);\n }\n\n async getAccountRevisionDate(): Promise {\n const r = await this.send('GET', '/accounts/revision-date', null, true, true);\n return r as number;\n }\n\n postPasswordHint(request: PasswordHintRequest): Promise {\n return this.send('POST', '/accounts/password-hint', request, false, false);\n }\n\n postRegister(request: RegisterRequest): Promise {\n return this.send('POST', '/accounts/register', request, false, false);\n }\n\n async postPremium(data: FormData): Promise {\n const r = await this.send('POST', '/accounts/premium', data, true, true);\n return new PaymentResponse(r);\n }\n\n async postIapCheck(request: IapCheckRequest): Promise {\n return this.send('POST', '/accounts/iap-check', request, true, false);\n }\n\n postReinstatePremium(): Promise {\n return this.send('POST', '/accounts/reinstate-premium', null, true, false);\n }\n\n postCancelPremium(): Promise {\n return this.send('POST', '/accounts/cancel-premium', null, true, false);\n }\n\n async postAccountStorage(request: StorageRequest): Promise {\n const r = await this.send('POST', '/accounts/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postAccountPayment(request: PaymentRequest): Promise {\n return this.send('POST', '/accounts/payment', request, true, false);\n }\n\n postAccountLicense(data: FormData): Promise {\n return this.send('POST', '/accounts/license', data, true, false);\n }\n\n postAccountKeys(request: KeysRequest): Promise {\n return this.send('POST', '/accounts/keys', request, true, false);\n }\n\n postAccountKey(request: UpdateKeyRequest): Promise {\n return this.send('POST', '/accounts/key', request, true, false);\n }\n\n postAccountVerifyEmail(): Promise {\n return this.send('POST', '/accounts/verify-email', null, true, false);\n }\n\n postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise {\n return this.send('POST', '/accounts/verify-email-token', request, false, false);\n }\n\n postAccountVerifyPassword(request: PasswordVerificationRequest): Promise {\n return this.send('POST', '/accounts/verify-password', request, true, false);\n }\n\n postAccountRecoverDelete(request: DeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover', request, false, false);\n }\n\n postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover-token', request, false, false);\n }\n\n postAccountKdf(request: KdfRequest): Promise {\n return this.send('POST', '/accounts/kdf', request, true, false);\n }\n\n async getEnterprisePortalSignInToken(): Promise {\n const r = await this.send('GET', '/accounts/enterprise-portal-signin-token', null, true, true);\n return r as string;\n }\n\n async deleteSsoUser(organizationId: string): Promise {\n return this.send('DELETE', '/accounts/sso/' + organizationId, null, true, false);\n }\n\n async getSsoUserIdentifier(): Promise {\n return this.send('GET', '/accounts/sso/user-identifier', null, true, true);\n }\n\n async postUserApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postUserRotateApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n putUpdateTempPassword(request: UpdateTempPasswordRequest): Promise {\n return this.send('PUT', '/accounts/update-temp-password', request, true, false);\n }\n\n // Folder APIs\n\n async getFolder(id: string): Promise {\n const r = await this.send('GET', '/folders/' + id, null, true, true);\n return new FolderResponse(r);\n }\n\n async postFolder(request: FolderRequest): Promise {\n const r = await this.send('POST', '/folders', request, true, true);\n return new FolderResponse(r);\n }\n\n async putFolder(id: string, request: FolderRequest): Promise {\n const r = await this.send('PUT', '/folders/' + id, request, true, true);\n return new FolderResponse(r);\n }\n\n deleteFolder(id: string): Promise {\n return this.send('DELETE', '/folders/' + id, null, true, false);\n }\n\n // Send APIs\n\n async getSend(id: string): Promise {\n const r = await this.send('GET', '/sends/' + id, null, true, true);\n return new SendResponse(r);\n }\n\n async postSendAccess(id: string, request: SendAccessRequest, apiUrl?: string): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set('Send-Id', id);\n };\n const r = await this.send('POST', '/sends/access/' + id, request, false, true, apiUrl, addSendIdHeader);\n return new SendAccessResponse(r);\n }\n\n async getSendFileDownloadData(send: SendAccessView, request: SendAccessRequest, apiUrl?: string): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set('Send-Id', send.id);\n };\n const r = await this.send('POST', '/sends/' + send.id + '/access/file/' + send.file.id, request, false, true,\n apiUrl, addSendIdHeader);\n return new SendFileDownloadDataResponse(r);\n }\n\n async getSends(): Promise> {\n const r = await this.send('GET', '/sends', null, true, true);\n return new ListResponse(r, SendResponse);\n }\n\n async postSend(request: SendRequest): Promise {\n const r = await this.send('POST', '/sends', request, true, true);\n return new SendResponse(r);\n }\n\n async postFileTypeSend(request: SendRequest): Promise {\n const r = await this.send('POST', '/sends/file/v2', request, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n async renewSendFileUploadUrl(sendId: string, fileId: string): Promise {\n const r = await this.send('GET', '/sends/' + sendId + '/file/' + fileId, null, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n postSendFile(sendId: string, fileId: string, data: FormData): Promise {\n return this.send('POST', '/sends/' + sendId + '/file/' + fileId, data, true, false);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postSendFileLegacy(data: FormData): Promise {\n const r = await this.send('POST', '/sends/file', data, true, true);\n return new SendResponse(r);\n }\n\n async putSend(id: string, request: SendRequest): Promise {\n const r = await this.send('PUT', '/sends/' + id, request, true, true);\n return new SendResponse(r);\n }\n\n async putSendRemovePassword(id: string): Promise {\n const r = await this.send('PUT', '/sends/' + id + '/remove-password', null, true, true);\n return new SendResponse(r);\n }\n\n deleteSend(id: string): Promise {\n return this.send('DELETE', '/sends/' + id, null, true, false);\n }\n\n // Cipher APIs\n\n async getCipher(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id, null, true, true);\n return new CipherResponse(r);\n }\n\n async getCipherAdmin(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async getCiphersOrganization(organizationId: string): Promise> {\n const r = await this.send('GET', '/ciphers/organization-details?organizationId=' + organizationId,\n null, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n async postCipher(request: CipherRequest): Promise {\n const r = await this.send('POST', '/ciphers', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherCreate(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/create', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAdmin(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipher(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id, request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipherAdmin(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipher(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id, null, true, false);\n }\n\n deleteCipherAdmin(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/admin', null, true, false);\n }\n\n deleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers', request, true, false);\n }\n\n deleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers/admin', request, true, false);\n }\n\n putMoveCiphers(request: CipherBulkMoveRequest): Promise {\n return this.send('PUT', '/ciphers/move', request, true, false);\n }\n\n async putShareCipher(id: string, request: CipherShareRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/share', request, true, true);\n return new CipherResponse(r);\n }\n\n putShareCiphers(request: CipherBulkShareRequest): Promise {\n return this.send('PUT', '/ciphers/share', request, true, false);\n }\n\n putCipherCollections(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections', request, true, false);\n }\n\n putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections-admin', request, true, false);\n }\n\n postPurgeCiphers(request: PasswordVerificationRequest, organizationId: string = null): Promise {\n let path = '/ciphers/purge';\n if (organizationId != null) {\n path += '?organizationId=' + organizationId;\n }\n return this.send('POST', path, request, true, false);\n }\n\n postImportCiphers(request: ImportCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import', request, true, false);\n }\n\n postImportOrganizationCiphers(organizationId: string, request: ImportOrganizationCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import-organization?organizationId=' + organizationId, request, true, false);\n }\n\n putDeleteCipher(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete', null, true, false);\n }\n\n putDeleteCipherAdmin(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete-admin', null, true, false);\n }\n\n putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete', request, true, false);\n }\n\n putDeleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete-admin', request, true, false);\n }\n\n async putRestoreCipher(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreCipherAdmin(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore-admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreManyCiphers(request: CipherBulkDeleteRequest): Promise> {\n const r = await this.send('PUT', '/ciphers/restore', request, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n // Attachments APIs\n\n async getAttachmentData(cipherId: string, attachmentId: string, emergencyAccessId?: string): Promise {\n const path = (emergencyAccessId != null ?\n '/emergency-access/' + emergencyAccessId + '/' :\n '/ciphers/') + cipherId + '/attachment/' + attachmentId;\n const r = await this.send('GET', path, null, true, true);\n return new AttachmentResponse(r);\n }\n\n async postCipherAttachment(id: string, request: AttachmentRequest): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment/v2', request, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentLegacy(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment', data, true, true);\n return new CipherResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentAdminLegacy(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment-admin', data, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipherAttachment(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId, null, true, false);\n }\n\n deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId + '/admin', null, true, false);\n }\n\n postShareCipherAttachment(id: string, attachmentId: string, data: FormData,\n organizationId: string): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' +\n attachmentId + '/share?organizationId=' + organizationId, data, true, false);\n }\n\n async renewAttachmentUploadUrl(id: string, attachmentId: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/attachment/' + attachmentId + '/renew', null, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n postAttachmentFile(id: string, attachmentId: string, data: FormData): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' + attachmentId, data, true, false);\n }\n\n // Collections APIs\n\n async getCollectionDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/details',\n null, true, true);\n return new CollectionGroupDetailsResponse(r);\n }\n\n async getUserCollections(): Promise> {\n const r = await this.send('GET', '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollections(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollectionUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/users',\n null, true, true);\n return r.map((dr: any) => new SelectionReadOnlyResponse(dr));\n }\n\n async postCollection(organizationId: string, request: CollectionRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/collections', request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollection(organizationId: string, id: string, request: CollectionRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id,\n request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollectionUsers(organizationId: string, id: string, request: SelectionReadOnlyRequest[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id + '/users',\n request, true, false);\n }\n\n deleteCollection(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/collections/' + id, null, true, false);\n }\n\n deleteCollectionUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/collections/' + id + '/user/' + organizationUserId,\n null, true, false);\n }\n\n // Groups APIs\n\n async getGroupDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/details',\n null, true, true);\n return new GroupDetailsResponse(r);\n }\n\n async getGroups(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups', null, true, true);\n return new ListResponse(r, GroupResponse);\n }\n\n async getGroupUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/users',\n null, true, true);\n return r;\n }\n\n async postGroup(organizationId: string, request: GroupRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/groups', request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroup(organizationId: string, id: string, request: GroupRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id, request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroupUsers(organizationId: string, id: string, request: string[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id + '/users', request, true, false);\n }\n\n deleteGroup(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/groups/' + id, null, true, false);\n }\n\n deleteGroupUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/groups/' + id + '/user/' + organizationUserId, null, true, false);\n }\n\n // Policy APIs\n\n async getPolicy(organizationId: string, type: PolicyType): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/' + type, null, true, true);\n return new PolicyResponse(r);\n }\n\n async getPolicies(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByToken(organizationId: string, token: string, email: string, organizationUserId: string):\n Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/token?' +\n 'token=' + encodeURIComponent(token) + '&email=' + encodeURIComponent(email) +\n '&organizationUserId=' + organizationUserId, null, false, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async putPolicy(organizationId: string, type: PolicyType, request: PolicyRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/policies/' + type, request, true, true);\n return new PolicyResponse(r);\n }\n\n // Organization User APIs\n\n async getOrganizationUser(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id, null, true, true);\n return new OrganizationUserDetailsResponse(r);\n }\n\n async getOrganizationUserGroups(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id + '/groups',\n null, true, true);\n return r;\n }\n\n async getOrganizationUsers(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users', null, true, true);\n return new ListResponse(r, OrganizationUserUserDetailsResponse);\n }\n\n async getOrganizationUserResetPasswordDetails(organizationId: string, id: string):\n Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id +\n '/reset-password-details', null, true, true);\n return new OrganizationUserResetPasswordDetailsReponse(r);\n }\n\n async getOrganizationAutoEnrollStatus(identifier: string): Promise {\n const r = await this.send('GET', '/organizations/' + identifier + '/auto-enroll-status', null, true, true);\n return new OrganizationAutoEnrollStatusResponse(r);\n }\n\n postOrganizationUserInvite(organizationId: string, request: OrganizationUserInviteRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/invite', request, true, false);\n }\n\n postOrganizationUserReinvite(organizationId: string, id: string): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/reinvite', null, true, false);\n }\n\n async postManyOrganizationUserReinvite(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/reinvite', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n postOrganizationUserAccept(organizationId: string, id: string,\n request: OrganizationUserAcceptRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/accept', request, true, false);\n }\n\n postOrganizationUserConfirm(organizationId: string, id: string,\n request: OrganizationUserConfirmRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/confirm',\n request, true, false);\n }\n\n async postOrganizationUsersPublicKey(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/public-keys', request, true, true);\n return new ListResponse(r, OrganizationUserBulkPublicKeyResponse);\n }\n\n async postOrganizationUserBulkConfirm(organizationId: string, request: OrganizationUserBulkConfirmRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/confirm', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n putOrganizationUser(organizationId: string, id: string, request: OrganizationUserUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id, request, true, false);\n }\n\n putOrganizationUserGroups(organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/groups', request, true, false);\n }\n\n putOrganizationUserResetPasswordEnrollment(organizationId: string, userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + userId + '/reset-password-enrollment',\n request, true, false);\n }\n\n putOrganizationUserResetPassword(organizationId: string, id: string,\n request: OrganizationUserResetPasswordRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/reset-password',\n request, true, false);\n }\n\n deleteOrganizationUser(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/users/' + id, null, true, false);\n }\n\n async deleteManyOrganizationUsers(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('DELETE', '/organizations/' + organizationId + '/users', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n // Plan APIs\n\n async getPlans(): Promise> {\n const r = await this.send('GET', '/plans/', null, true, true);\n return new ListResponse(r, PlanResponse);\n }\n\n async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/import', request, true, false);\n }\n\n async postPublicImportDirectory(request: OrganizationImportRequest): Promise {\n return this.send('POST', '/public/organization/import', request, true, false);\n }\n\n async getTaxRates(): Promise> {\n const r = await this.send('GET', '/plans/sales-tax-rates/', null, true, true);\n return new ListResponse(r, TaxRateResponse);\n }\n\n // Settings APIs\n\n async getSettingsDomains(): Promise {\n const r = await this.send('GET', '/settings/domains', null, true, true);\n return new DomainsResponse(r);\n }\n\n async putSettingsDomains(request: UpdateDomainsRequest): Promise {\n const r = await this.send('PUT', '/settings/domains', request, true, true);\n return new DomainsResponse(r);\n }\n\n // Sync APIs\n\n async getSync(): Promise {\n const path = this.isDesktopClient || this.isWebClient ? '/sync?excludeDomains=true' : '/sync';\n const r = await this.send('GET', path, null, true, true);\n return new SyncResponse(r);\n }\n\n // Two-factor APIs\n\n async getTwoFactorProviders(): Promise> {\n const r = await this.send('GET', '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorOrganizationProviders(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorAuthenticator(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async getTwoFactorEmail(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async getTwoFactorDuo(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorOrganizationDuo(organizationId: string,\n request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/two-factor/get-duo',\n request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorYubiKey(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async getTwoFactorWebAuthn(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-webauthn', request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async getTwoFactorWebAuthnChallenge(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-webauthn-challenge', request, true, true);\n return new ChallengeResponse(r);\n }\n\n async getTwoFactorRecover(request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-recover', request, true, true);\n return new TwoFactorRecoverResponse(r);\n }\n\n async putTwoFactorAuthenticator(\n request: UpdateTwoFactorAuthenticatorRequest): Promise {\n const r = await this.send('PUT', '/two-factor/authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise {\n const r = await this.send('PUT', '/two-factor/email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorOrganizationDuo(organizationId: string,\n request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorYubiKey(request: UpdateTwoFactorYubioOtpRequest): Promise {\n const r = await this.send('PUT', '/two-factor/yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async putTwoFactorWebAuthn(request: UpdateTwoFactorWebAuthnRequest): Promise {\n const response = request.deviceResponse.response as AuthenticatorAttestationResponse;\n const data: any = Object.assign({}, request);\n\n data.deviceResponse = {\n id: request.deviceResponse.id,\n rawId: btoa(request.deviceResponse.id),\n type: request.deviceResponse.type,\n extensions: request.deviceResponse.getClientExtensionResults(),\n response: {\n AttestationObject: Utils.fromBufferToB64(response.attestationObject),\n clientDataJson: Utils.fromBufferToB64(response.clientDataJSON),\n },\n };\n\n const r = await this.send('PUT', '/two-factor/webauthn', data, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async deleteTwoFactorWebAuthn(request: UpdateTwoFactorWebAuthnDeleteRequest): Promise {\n const r = await this.send('DELETE', '/two-factor/webauthn', request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async putTwoFactorDisable(request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/two-factor/disable', request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n async putTwoFactorOrganizationDisable(organizationId: string,\n request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/disable',\n request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n postTwoFactorRecover(request: TwoFactorRecoveryRequest): Promise {\n return this.send('POST', '/two-factor/recover', request, false, false);\n }\n\n postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email', request, true, false);\n }\n\n postTwoFactorEmail(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email-login', request, false, false);\n }\n\n // Emergency Access APIs\n\n async getEmergencyAccessTrusted(): Promise> {\n const r = await this.send('GET', '/emergency-access/trusted', null, true, true);\n return new ListResponse(r, EmergencyAccessGranteeDetailsResponse);\n }\n\n async getEmergencyAccessGranted(): Promise> {\n const r = await this.send('GET', '/emergency-access/granted', null, true, true);\n return new ListResponse(r, EmergencyAccessGrantorDetailsResponse);\n }\n\n async getEmergencyAccess(id: string): Promise {\n const r = await this.send('GET', '/emergency-access/' + id, null, true, true);\n return new EmergencyAccessGranteeDetailsResponse(r);\n }\n\n async getEmergencyGrantorPolicies(id: string): Promise> {\n const r = await this.send('GET', '/emergency-access/' + id + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n putEmergencyAccess(id: string, request: EmergencyAccessUpdateRequest): Promise {\n return this.send('PUT', '/emergency-access/' + id, request, true, false);\n }\n\n deleteEmergencyAccess(id: string): Promise {\n return this.send('DELETE', '/emergency-access/' + id, null, true, false);\n }\n\n postEmergencyAccessInvite(request: EmergencyAccessInviteRequest): Promise {\n return this.send('POST', '/emergency-access/invite', request, true, false);\n }\n\n postEmergencyAccessReinvite(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reinvite', null, true, false);\n }\n\n postEmergencyAccessAccept(id: string, request: EmergencyAccessAcceptRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/accept', request, true, false);\n }\n\n postEmergencyAccessConfirm(id: string, request: EmergencyAccessConfirmRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/confirm', request, true, false);\n }\n\n postEmergencyAccessInitiate(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/initiate', null, true, false);\n }\n\n postEmergencyAccessApprove(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/approve', null, true, false);\n }\n\n postEmergencyAccessReject(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reject', null, true, false);\n }\n\n async postEmergencyAccessTakeover(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/takeover', null, true, true);\n return new EmergencyAccessTakeoverResponse(r);\n }\n\n async postEmergencyAccessPassword(id: string, request: EmergencyAccessPasswordRequest): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/password', request, true, true);\n }\n\n async postEmergencyAccessView(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/view', null, true, true);\n return new EmergencyAccessViewResponse(r);\n }\n\n // Organization APIs\n\n async getOrganization(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id, null, true, true);\n return new OrganizationResponse(r);\n }\n\n async getOrganizationBilling(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getOrganizationSubscription(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/subscription', null, true, true);\n return new OrganizationSubscriptionResponse(r);\n }\n\n async getOrganizationLicense(id: string, installationId: string): Promise {\n return this.send('GET', '/organizations/' + id + '/license?installationId=' + installationId,\n null, true, true);\n }\n\n async getOrganizationTaxInfo(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async postOrganization(request: OrganizationCreateRequest): Promise {\n const r = await this.send('POST', '/organizations', request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganization(id: string, request: OrganizationUpdateRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + id, request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganizationTaxInfo(id: string, request: OrganizationTaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + id + '/tax', request, true, false);\n }\n\n postLeaveOrganization(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/leave', null, true, false);\n }\n\n async postOrganizationLicense(data: FormData): Promise {\n const r = await this.send('POST', '/organizations/license', data, true, true);\n return new OrganizationResponse(r);\n }\n\n async postOrganizationLicenseUpdate(id: string, data: FormData): Promise {\n return this.send('POST', '/organizations/' + id + '/license', data, true, false);\n }\n\n async postOrganizationApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationRotateApiKey(id: string, request: PasswordVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationUpgrade(id: string, request: OrganizationUpgradeRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/upgrade', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationSeat(id: string, request: SeatRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/seat', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationStorage(id: string, request: StorageRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postOrganizationPayment(id: string, request: PaymentRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/payment', request, true, false);\n }\n\n postOrganizationVerifyBank(id: string, request: VerifyBankRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/verify-bank', request, true, false);\n }\n\n postOrganizationCancel(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/cancel', null, true, false);\n }\n\n postOrganizationReinstate(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/reinstate', null, true, false);\n }\n\n deleteOrganization(id: string, request: PasswordVerificationRequest): Promise {\n return this.send('DELETE', '/organizations/' + id, request, true, false);\n }\n\n async getOrganizationKeys(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/keys', null, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n async postOrganizationKeys(id: string, request: OrganizationKeysRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/keys', request, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n // Provider APIs\n\n async postProviderSetup(id: string, request: ProviderSetupRequest) {\n const r = await this.send('POST', '/providers/' + id + '/setup', request, true, true);\n return new ProviderResponse(r);\n }\n\n async getProvider(id: string) {\n const r = await this.send('GET', '/providers/' + id, null, true, true);\n return new ProviderResponse(r);\n }\n\n async putProvider(id: string, request: ProviderUpdateRequest) {\n const r = await this.send('PUT', '/providers/' + id, request, true, true);\n return new ProviderResponse(r);\n }\n\n // Provider User APIs\n\n async getProviderUsers(providerId: string): Promise> {\n const r = await this.send('GET', '/providers/' + providerId + '/users', null, true, true);\n return new ListResponse(r, ProviderUserUserDetailsResponse);\n }\n\n async getProviderUser(providerId: string, id: string): Promise {\n const r = await this.send('GET', '/providers/' + providerId + '/users/' + id, null, true, true);\n return new ProviderUserResponse(r);\n }\n\n postProviderUserInvite(providerId: string, request: ProviderUserInviteRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/invite', request, true, false);\n }\n\n postProviderUserReinvite(providerId: string, id: string): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/' + id + '/reinvite', null, true, false);\n }\n\n async postManyProviderUserReinvite(providerId: string, request: ProviderUserBulkRequest): Promise> {\n const r = await this.send('POST', '/providers/' + providerId + '/users/reinvite', request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async postProviderUserBulkConfirm(providerId: string, request: ProviderUserBulkConfirmRequest): Promise> {\n const r = await this.send('POST', '/providers/' + providerId + '/users/confirm', request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async deleteManyProviderUsers(providerId: string, request: ProviderUserBulkRequest): Promise> {\n const r = await this.send('DELETE', '/providers/' + providerId + '/users', request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n postProviderUserAccept(providerId: string, id: string, request: ProviderUserAcceptRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/' + id + '/accept', request, true, false);\n }\n\n postProviderUserConfirm(providerId: string, id: string, request: ProviderUserConfirmRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/' + id + '/confirm',\n request, true, false);\n }\n\n async postProviderUsersPublicKey(providerId: string, request: ProviderUserBulkRequest): Promise> {\n const r = await this.send('POST', '/providers/' + providerId + '/users/public-keys', request, true, true);\n return new ListResponse(r, ProviderUserBulkPublicKeyResponse);\n }\n\n\n putProviderUser(providerId: string, id: string, request: ProviderUserUpdateRequest): Promise {\n return this.send('PUT', '/providers/' + providerId + '/users/' + id, request, true, false);\n }\n\n deleteProviderUser(providerId: string, id: string): Promise {\n return this.send('DELETE', '/providers/' + providerId + '/users/' + id, null, true, false);\n }\n\n // Provider Organization APIs\n\n async getProviderClients(providerId: string): Promise> {\n const r = await this.send('GET', '/providers/' + providerId + '/organizations', null, true, true);\n return new ListResponse(r, ProviderOrganizationOrganizationDetailsResponse);\n }\n\n postProviderAddOrganization(providerId: string, request: ProviderAddOrganizationRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/organizations/add', request, true, false);\n }\n\n async postProviderCreateOrganization(providerId: string, request: ProviderOrganizationCreateRequest): Promise {\n const r = await this.send('POST', '/providers/' + providerId + '/organizations', request, true, true);\n return new ProviderOrganizationResponse(r);\n }\n\n deleteProviderOrganization(providerId: string, id: string): Promise {\n return this.send('DELETE', '/providers/' + providerId + '/organizations/' + id, null, true, false);\n }\n\n // Event APIs\n\n async getEvents(start: string, end: string, token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/events', start, end, token), null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsCipher(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/ciphers/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganization(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/organizations/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganizationUser(organizationId: string, id: string,\n start: string, end: string, token: string): Promise> {\n const r = await this.send('GET',\n this.addEventParameters('/organizations/' + organizationId + '/users/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProvider(id: string, start: string, end: string, token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/providers/' + id + '/events', start, end, token), null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProviderUser(providerId: string, id: string,\n start: string, end: string, token: string): Promise> {\n const r = await this.send('GET',\n this.addEventParameters('/providers/' + providerId + '/users/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async postEventsCollect(request: EventRequest[]): Promise {\n const authHeader = await this.getActiveBearerToken();\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n 'Authorization': 'Bearer ' + authHeader,\n 'Content-Type': 'application/json; charset=utf-8',\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n const response = await this.fetch(new Request(this.environmentService.getEventsUrl() + '/collect', {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: 'POST',\n body: JSON.stringify(request),\n headers: headers,\n }));\n if (response.status !== 200) {\n return Promise.reject('Event post failed.');\n }\n }\n\n // User APIs\n\n async getUserPublicKey(id: string): Promise {\n const r = await this.send('GET', '/users/' + id + '/public-key', null, true, true);\n return new UserKeyResponse(r);\n }\n\n // HIBP APIs\n\n async getHibpBreach(username: string): Promise {\n const r = await this.send('GET', '/hibp/breach?username=' + username, null, true, true);\n return r.map((a: any) => new BreachAccountResponse(a));\n }\n\n // Misc\n\n async postBitPayInvoice(request: BitPayInvoiceRequest): Promise {\n const r = await this.send('POST', '/bitpay-invoice', request, true, true);\n return r as string;\n }\n\n async postSetupPayment(): Promise {\n const r = await this.send('POST', '/setup-payment', null, true, true);\n return r as string;\n }\n\n // Helpers\n\n async getActiveBearerToken(): Promise {\n let accessToken = await this.tokenService.getToken();\n if (this.tokenService.tokenNeedsRefresh()) {\n await this.doAuthRefresh();\n accessToken = await this.tokenService.getToken();\n }\n return accessToken;\n }\n\n fetch(request: Request): Promise {\n if (request.method === 'GET') {\n request.headers.set('Cache-Control', 'no-store');\n request.headers.set('Pragma', 'no-cache');\n }\n return this.nativeFetch(request);\n }\n\n nativeFetch(request: Request): Promise {\n return fetch(request);\n }\n\n async preValidateSso(identifier: string): Promise {\n if (identifier == null || identifier === '') {\n throw new Error('Organization Identifier was not provided.');\n }\n const headers = new Headers({\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const path = `/account/prevalidate?domainHint=${encodeURIComponent(identifier)}`;\n const response = await this.fetch(new Request(this.environmentService.getIdentityUrl() + path, {\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'GET',\n }));\n\n if (response.status === 200) {\n return true;\n } else {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n protected async doAuthRefresh(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken != null && refreshToken !== '') {\n return this.doRefreshToken();\n }\n\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n if (!Utils.isNullOrWhitespace(clientId) && !Utils.isNullOrWhitespace(clientSecret)) {\n return this.doApiTokenRefresh();\n }\n\n throw new Error('Cannot refresh token, no refresh token or api keys are stored');\n }\n\n protected async doApiTokenRefresh(): Promise {\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n if (Utils.isNullOrWhitespace(clientId) || Utils.isNullOrWhitespace(clientSecret) || this.apiKeyRefresh == null) {\n throw new Error();\n }\n\n await this.apiKeyRefresh(clientId, clientSecret);\n }\n\n protected async doRefreshToken(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken == null || refreshToken === '') {\n throw new Error();\n }\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const decodedToken = this.tokenService.decodeToken();\n const response = await this.fetch(new Request(this.environmentService.getIdentityUrl() + '/connect/token', {\n body: this.qsStringify({\n grant_type: 'refresh_token',\n client_id: decodedToken.client_id,\n refresh_token: refreshToken,\n }),\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'POST',\n }));\n\n if (response.status === 200) {\n const responseJson = await response.json();\n const tokenResponse = new IdentityTokenResponse(responseJson);\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken, null);\n } else {\n const error = await this.handleError(response, true, true);\n return Promise.reject(error);\n }\n }\n\n private async send(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body: any,\n authed: boolean, hasResponse: boolean, apiUrl?: string,\n alterHeaders?: (headers: Headers) => void): Promise {\n apiUrl = Utils.isNullOrWhitespace(apiUrl) ? this.environmentService.getApiUrl() : apiUrl;\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const requestInit: RequestInit = {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: method,\n };\n\n if (authed) {\n const authHeader = await this.getActiveBearerToken();\n headers.set('Authorization', 'Bearer ' + authHeader);\n }\n if (body != null) {\n if (typeof body === 'string') {\n requestInit.body = body;\n headers.set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n } else if (typeof body === 'object') {\n if (body instanceof FormData) {\n requestInit.body = body;\n } else {\n headers.set('Content-Type', 'application/json; charset=utf-8');\n requestInit.body = JSON.stringify(body);\n }\n }\n }\n if (hasResponse) {\n headers.set('Accept', 'application/json');\n }\n if (alterHeaders != null) {\n alterHeaders(headers);\n }\n\n requestInit.headers = headers;\n const response = await this.fetch(new Request(apiUrl + path, requestInit));\n\n if (hasResponse && response.status === 200) {\n const responseJson = await response.json();\n return responseJson;\n } else if (response.status !== 200) {\n const error = await this.handleError(response, false, authed);\n return Promise.reject(error);\n }\n }\n\n private async handleError(response: Response, tokenError: boolean, authed: boolean): Promise {\n if (authed && ((tokenError && response.status === 400) || response.status === 401 || response.status === 403)) {\n await this.logoutCallback(true);\n return null;\n }\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n } else if (this.isTextResponse(response)) {\n responseJson = { Message: await response.text() };\n }\n\n return new ErrorResponse(responseJson, response.status, tokenError);\n }\n\n private qsStringify(params: any): string {\n return Object.keys(params).map(key => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);\n }).join('&');\n }\n\n private getCredentials(): RequestCredentials {\n if (!this.isWebClient || this.environmentService.hasBaseUrl()) {\n return 'include';\n }\n return undefined;\n }\n\n private addEventParameters(base: string, start: string, end: string, token: string) {\n if (start != null) {\n base += ('?start=' + start);\n }\n if (end != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('end=' + end);\n }\n if (token != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('continuationToken=' + token);\n }\n return base;\n }\n\n private isJsonResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('application/json') > -1;\n }\n\n private isTextResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('text') > -1;\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { PlanResponse } from './planResponse';\n\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationResponse extends BaseResponse {\n id: string;\n identifier: string;\n name: string;\n businessName: string;\n businessAddress1: string;\n businessAddress2: string;\n businessAddress3: string;\n businessCountry: string;\n businessTaxNumber: string;\n billingEmail: string;\n plan: PlanResponse;\n planType: PlanType;\n seats: number;\n maxCollections: number;\n maxStorageGb: number;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useResetPassword: boolean;\n hasPublicAndPrivateKeys: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.identifier = this.getResponseProperty('Identifier');\n this.name = this.getResponseProperty('Name');\n this.businessName = this.getResponseProperty('BusinessName');\n this.businessAddress1 = this.getResponseProperty('BusinessAddress1');\n this.businessAddress2 = this.getResponseProperty('BusinessAddress2');\n this.businessAddress3 = this.getResponseProperty('BusinessAddress3');\n this.businessCountry = this.getResponseProperty('BusinessCountry');\n this.businessTaxNumber = this.getResponseProperty('BusinessTaxNumber');\n this.billingEmail = this.getResponseProperty('BillingEmail');\n const plan = this.getResponseProperty('Plan');\n this.plan = plan == null ? null : new PlanResponse(plan);\n this.planType = this.getResponseProperty('PlanType');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useResetPassword = this.getResponseProperty('UseResetPassword');\n this.hasPublicAndPrivateKeys = this.getResponseProperty('HasPublicAndPrivateKeys');\n }\n}\n","import { PlanType } from '../../enums/planType';\nimport { ProductType } from '../../enums/productType';\n\nimport { BaseResponse } from './baseResponse';\n\nexport class PlanResponse extends BaseResponse {\n type: PlanType;\n product: ProductType;\n name: string;\n isAnnual: boolean;\n nameLocalizationKey: string;\n descriptionLocalizationKey: string;\n canBeUsedByBusiness: boolean;\n baseSeats: number;\n baseStorageGb: number;\n maxCollections: number;\n maxUsers: number;\n\n hasAdditionalSeatsOption: boolean;\n maxAdditionalSeats: number;\n hasAdditionalStorageOption: boolean;\n maxAdditionalStorage: number;\n hasPremiumAccessOption: boolean;\n trialPeriodDays: number;\n\n hasSelfHost: boolean;\n hasPolicies: boolean;\n hasGroups: boolean;\n hasDirectory: boolean;\n hasEvents: boolean;\n hasTotp: boolean;\n has2fa: boolean;\n hasApi: boolean;\n hasSso: boolean;\n hasResetPassword: boolean;\n usersGetPremium: boolean;\n\n upgradeSortOrder: number;\n displaySortOrder: number;\n legacyYear: number;\n disabled: boolean;\n\n stripePlanId: string;\n stripeSeatPlanId: string;\n stripeStoragePlanId: string;\n stripePremiumAccessPlanId: string;\n basePrice: number;\n seatPrice: number;\n additionalStoragePricePerGb: number;\n premiumAccessOptionPrice: number;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.product = this.getResponseProperty('Product');\n this.name = this.getResponseProperty('Name');\n this.isAnnual = this.getResponseProperty('IsAnnual');\n this.nameLocalizationKey = this.getResponseProperty('NameLocalizationKey');\n this.descriptionLocalizationKey = this.getResponseProperty('DescriptionLocalizationKey');\n this.canBeUsedByBusiness = this.getResponseProperty('CanBeUsedByBusiness');\n this.baseSeats = this.getResponseProperty('BaseSeats');\n this.baseStorageGb = this.getResponseProperty('BaseStorageGb');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxUsers = this.getResponseProperty('MaxUsers');\n this.hasAdditionalSeatsOption = this.getResponseProperty('HasAdditionalSeatsOption');\n this.maxAdditionalSeats = this.getResponseProperty('MaxAdditionalSeats');\n this.hasAdditionalStorageOption = this.getResponseProperty('HasAdditionalStorageOption');\n this.maxAdditionalStorage = this.getResponseProperty('MaxAdditionalStorage');\n this.hasPremiumAccessOption = this.getResponseProperty('HasPremiumAccessOption');\n this.trialPeriodDays = this.getResponseProperty('TrialPeriodDays');\n this.hasSelfHost = this.getResponseProperty('HasSelfHost');\n this.hasPolicies = this.getResponseProperty('HasPolicies');\n this.hasGroups = this.getResponseProperty('HasGroups');\n this.hasDirectory = this.getResponseProperty('HasDirectory');\n this.hasEvents = this.getResponseProperty('HasEvents');\n this.hasTotp = this.getResponseProperty('HasTotp');\n this.has2fa = this.getResponseProperty('Has2fa');\n this.hasApi = this.getResponseProperty('HasApi');\n this.hasSso = this.getResponseProperty('HasSso');\n this.hasResetPassword = this.getResponseProperty('HasResetPassword');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.upgradeSortOrder = this.getResponseProperty('UpgradeSortOrder');\n this.displaySortOrder = this.getResponseProperty('SortOrder');\n this.legacyYear = this.getResponseProperty('LegacyYear');\n this.disabled = this.getResponseProperty('Disabled');\n this.stripePlanId = this.getResponseProperty('StripePlanId');\n this.stripeSeatPlanId = this.getResponseProperty('StripeSeatPlanId');\n this.stripeStoragePlanId = this.getResponseProperty('StripeStoragePlanId');\n this.stripePremiumAccessPlanId = this.getResponseProperty('StripePremiumAccessPlanId');\n this.basePrice = this.getResponseProperty('BasePrice');\n this.seatPrice = this.getResponseProperty('SeatPrice');\n this.additionalStoragePricePerGb = this.getResponseProperty('AdditionalStoragePricePerGb');\n this.premiumAccessOptionPrice = this.getResponseProperty('PremiumAccessOptionPrice');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SubscriptionResponse extends BaseResponse {\n storageName: string;\n storageGb: number;\n maxStorageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n license: any;\n expiration: string;\n usingInAppPurchase: boolean;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.license = this.getResponseProperty('License');\n this.expiration = this.getResponseProperty('Expiration');\n this.usingInAppPurchase = this.getResponseProperty('UsingInAppPurchase');\n const subscription = this.getResponseProperty('Subscription');\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n }\n}\n\nexport class BillingSubscriptionResponse extends BaseResponse {\n trialStartDate: string;\n trialEndDate: string;\n periodStartDate: string;\n periodEndDate: string;\n cancelledDate: string;\n cancelAtEndDate: boolean;\n status: string;\n cancelled: boolean;\n items: BillingSubscriptionItemResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.trialEndDate = this.getResponseProperty('TrialStartDate');\n this.trialEndDate = this.getResponseProperty('TrialEndDate');\n this.periodStartDate = this.getResponseProperty('PeriodStartDate');\n this.periodEndDate = this.getResponseProperty('PeriodEndDate');\n this.cancelledDate = this.getResponseProperty('CancelledDate');\n this.cancelAtEndDate = this.getResponseProperty('CancelAtEndDate');\n this.status = this.getResponseProperty('Status');\n this.cancelled = this.getResponseProperty('Cancelled');\n const items = this.getResponseProperty('Items');\n if (items != null) {\n this.items = items.map((i: any) => new BillingSubscriptionItemResponse(i));\n }\n }\n}\n\nexport class BillingSubscriptionItemResponse extends BaseResponse {\n name: string;\n amount: number;\n quantity: number;\n interval: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.amount = this.getResponseProperty('Amount');\n this.quantity = this.getResponseProperty('Quantity');\n this.interval = this.getResponseProperty('Interval');\n }\n}\n\nexport class BillingSubscriptionUpcomingInvoiceResponse extends BaseResponse {\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationUserBulkPublicKeyResponse extends BaseResponse {\n id: string;\n userId: string;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { Utils } from '../../misc/utils';\nimport { BaseResponse } from './baseResponse';\n\nexport class TwoFactorWebAuthnResponse extends BaseResponse {\n enabled: boolean;\n keys: KeyResponse[];\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n const keys = this.getResponseProperty('Keys');\n this.keys = keys == null ? null : keys.map((k: any) => new KeyResponse(k));\n }\n}\n\nexport class KeyResponse extends BaseResponse {\n name: string;\n id: number;\n migrated: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.id = this.getResponseProperty('Id');\n this.migrated = this.getResponseProperty('Migrated');\n }\n}\n\nexport class ChallengeResponse extends BaseResponse implements PublicKeyCredentialCreationOptions {\n attestation?: AttestationConveyancePreference;\n authenticatorSelection?: AuthenticatorSelectionCriteria;\n challenge: BufferSource;\n excludeCredentials?: PublicKeyCredentialDescriptor[];\n extensions?: AuthenticationExtensionsClientInputs;\n pubKeyCredParams: PublicKeyCredentialParameters[];\n rp: PublicKeyCredentialRpEntity;\n timeout?: number;\n user: PublicKeyCredentialUserEntity;\n\n constructor(response: any) {\n super(response);\n this.attestation = this.getResponseProperty('attestation');\n this.authenticatorSelection = this.getResponseProperty('authenticatorSelection');\n this.challenge = Utils.fromUrlB64ToArray(this.getResponseProperty('challenge'));\n this.excludeCredentials = this.getResponseProperty('excludeCredentials').map((c: any) => {\n c.id = Utils.fromUrlB64ToArray(c.id).buffer;\n return c;\n });\n this.extensions = this.getResponseProperty('extensions');\n this.pubKeyCredParams = this.getResponseProperty('pubKeyCredParams');\n this.rp = this.getResponseProperty('rp');\n this.timeout = this.getResponseProperty('timeout');\n\n const user = this.getResponseProperty('user');\n user.id = Utils.fromUrlB64ToArray(user.id);\n\n this.user = user;\n }\n}\n","import { Utils } from '../misc/utils';\n\nimport { AppIdService as AppIdServiceAbstraction } from '../abstractions/appId.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class AppIdService implements AppIdServiceAbstraction {\n constructor(private storageService: StorageService) {\n }\n\n getAppId(): Promise {\n return this.makeAndGetAppId('appId');\n }\n\n getAnonymousAppId(): Promise {\n return this.makeAndGetAppId('anonymousAppId');\n }\n\n private async makeAndGetAppId(key: string) {\n const existingId = await this.storageService.get(key);\n if (existingId != null) {\n return existingId;\n }\n\n const guid = Utils.newGuid();\n await this.storageService.save(key, guid);\n return guid;\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from '../abstractions/audit.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\n\nimport { throttle } from '../misc/throttle';\nimport { Utils } from '../misc/utils';\n\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nconst PwnedPasswordsApi = 'https://api.pwnedpasswords.com/range/';\n\nexport class AuditService implements AuditServiceAbstraction {\n constructor(private cryptoFunctionService: CryptoFunctionService, private apiService: ApiService) { }\n\n @throttle(100, () => 'passwordLeaked')\n async passwordLeaked(password: string): Promise {\n const hashBytes = await this.cryptoFunctionService.hash(password, 'sha1');\n const hash = Utils.fromBufferToHex(hashBytes).toUpperCase();\n const hashStart = hash.substr(0, 5);\n const hashEnding = hash.substr(5);\n\n const response = await this.apiService.nativeFetch(new Request(PwnedPasswordsApi + hashStart));\n const leakedHashes = await response.text();\n const match = leakedHashes.split(/\\r?\\n/).find(v => {\n return v.split(':')[0] === hashEnding;\n });\n\n return match != null ? parseInt(match.split(':')[1], 10) : 0;\n }\n\n async breachedAccounts(username: string): Promise {\n try {\n return await this.apiService.getHibpBreach(username);\n } catch (e) {\n const error = e as ErrorResponse;\n if (error.statusCode === 404) {\n return [];\n }\n throw new Error();\n }\n }\n}\n","import { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Attachment } from '../models/domain/attachment';\nimport { Card } from '../models/domain/card';\nimport { Cipher } from '../models/domain/cipher';\nimport Domain from '../models/domain/domainBase';\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { Field } from '../models/domain/field';\nimport { Identity } from '../models/domain/identity';\nimport { Login } from '../models/domain/login';\nimport { LoginUri } from '../models/domain/loginUri';\nimport { Password } from '../models/domain/password';\nimport { SecureNote } from '../models/domain/secureNote';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nimport { AttachmentView } from '../models/view/attachmentView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\nimport { PasswordHistoryView } from '../models/view/passwordHistoryView';\nimport { View } from '../models/view/view';\n\nimport { SortedCiphersCache } from '../models/domain/sortedCiphersCache';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService as CipherServiceAbstraction } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FileUploadService } from '../abstractions/fileUpload.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n ciphersPrefix: 'ciphers_',\n localData: 'sitesLocalData',\n neverDomains: 'neverDomains',\n};\n\nconst DomainMatchBlacklist = new Map>([\n ['google.com', new Set(['script.google.com'])],\n]);\n\nexport class CipherService implements CipherServiceAbstraction {\n // tslint:disable-next-line\n _decryptedCipherCache: CipherView[];\n\n private sortedCiphersCache: SortedCiphersCache = new SortedCiphersCache(this.sortCiphersByLastUsed);\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private settingsService: SettingsService, private apiService: ApiService,\n private fileUploadService: FileUploadService, private storageService: StorageService,\n private i18nService: I18nService, private searchService: () => SearchService) {\n }\n\n get decryptedCipherCache() {\n return this._decryptedCipherCache;\n }\n set decryptedCipherCache(value: CipherView[]) {\n this._decryptedCipherCache = value;\n if (this.searchService != null) {\n if (value == null) {\n this.searchService().clearIndex();\n } else {\n this.searchService().indexCiphers();\n }\n }\n }\n\n clearCache(): void {\n this.decryptedCipherCache = null;\n this.sortedCiphersCache.clear();\n }\n\n async encrypt(model: CipherView, key?: SymmetricCryptoKey, originalCipher: Cipher = null): Promise {\n // Adjust password history\n if (model.id != null) {\n if (originalCipher == null) {\n originalCipher = await this.get(model.id);\n }\n if (originalCipher != null) {\n const existingCipher = await originalCipher.decrypt();\n model.passwordHistory = existingCipher.passwordHistory || [];\n if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {\n if (existingCipher.login.password != null && existingCipher.login.password !== '' &&\n existingCipher.login.password !== model.login.password) {\n const ph = new PasswordHistoryView();\n ph.password = existingCipher.login.password;\n ph.lastUsedDate = model.login.passwordRevisionDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n } else {\n model.login.passwordRevisionDate = existingCipher.login.passwordRevisionDate;\n }\n }\n if (existingCipher.hasFields) {\n const existingHiddenFields = existingCipher.fields.filter(f => f.type === FieldType.Hidden &&\n f.name != null && f.name !== '' && f.value != null && f.value !== '');\n const hiddenFields = model.fields == null ? [] :\n model.fields.filter(f => f.type === FieldType.Hidden && f.name != null && f.name !== '');\n existingHiddenFields.forEach(ef => {\n const matchedField = hiddenFields.find(f => f.name === ef.name);\n if (matchedField == null || matchedField.value !== ef.value) {\n const ph = new PasswordHistoryView();\n ph.password = ef.name + ': ' + ef.value;\n ph.lastUsedDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n }\n });\n }\n }\n if (model.passwordHistory != null && model.passwordHistory.length === 0) {\n model.passwordHistory = null;\n } else if (model.passwordHistory != null && model.passwordHistory.length > 5) {\n // only save last 5 history\n model.passwordHistory = model.passwordHistory.slice(0, 5);\n }\n }\n\n const cipher = new Cipher();\n cipher.id = model.id;\n cipher.folderId = model.folderId;\n cipher.favorite = model.favorite;\n cipher.organizationId = model.organizationId;\n cipher.type = model.type;\n cipher.collectionIds = model.collectionIds;\n cipher.revisionDate = model.revisionDate;\n cipher.reprompt = model.reprompt;\n\n if (key == null && cipher.organizationId != null) {\n key = await this.cryptoService.getOrgKey(cipher.organizationId);\n if (key == null) {\n throw new Error('Cannot encrypt cipher for organization. No key.');\n }\n }\n await Promise.all([\n this.encryptObjProperty(model, cipher, {\n name: null,\n notes: null,\n }, key),\n this.encryptCipherData(cipher, model, key),\n this.encryptFields(model.fields, key).then(fields => {\n cipher.fields = fields;\n }),\n this.encryptPasswordHistories(model.passwordHistory, key).then(ph => {\n cipher.passwordHistory = ph;\n }),\n this.encryptAttachments(model.attachments, key).then(attachments => {\n cipher.attachments = attachments;\n }),\n ]);\n\n return cipher;\n }\n\n async encryptAttachments(attachmentsModel: AttachmentView[], key: SymmetricCryptoKey): Promise {\n if (attachmentsModel == null || attachmentsModel.length === 0) {\n return null;\n }\n\n const promises: Promise[] = [];\n const encAttachments: Attachment[] = [];\n attachmentsModel.forEach(async model => {\n const attachment = new Attachment();\n attachment.id = model.id;\n attachment.size = model.size;\n attachment.sizeName = model.sizeName;\n attachment.url = model.url;\n const promise = this.encryptObjProperty(model, attachment, {\n fileName: null,\n }, key).then(async () => {\n if (model.key != null) {\n attachment.key = await this.cryptoService.encrypt(model.key.key, key);\n }\n encAttachments.push(attachment);\n });\n promises.push(promise);\n });\n\n await Promise.all(promises);\n return encAttachments;\n }\n\n async encryptFields(fieldsModel: FieldView[], key: SymmetricCryptoKey): Promise {\n if (!fieldsModel || !fieldsModel.length) {\n return null;\n }\n\n const self = this;\n const encFields: Field[] = [];\n await fieldsModel.reduce((promise, field) => {\n return promise.then(() => {\n return self.encryptField(field, key);\n }).then((encField: Field) => {\n encFields.push(encField);\n });\n }, Promise.resolve());\n\n return encFields;\n }\n\n async encryptField(fieldModel: FieldView, key: SymmetricCryptoKey): Promise {\n const field = new Field();\n field.type = fieldModel.type;\n // normalize boolean type field values\n if (fieldModel.type === FieldType.Boolean && fieldModel.value !== 'true') {\n fieldModel.value = 'false';\n }\n\n await this.encryptObjProperty(fieldModel, field, {\n name: null,\n value: null,\n }, key);\n\n return field;\n }\n\n async encryptPasswordHistories(phModels: PasswordHistoryView[], key: SymmetricCryptoKey): Promise {\n if (!phModels || !phModels.length) {\n return null;\n }\n\n const self = this;\n const encPhs: Password[] = [];\n await phModels.reduce((promise, ph) => {\n return promise.then(() => {\n return self.encryptPasswordHistory(ph, key);\n }).then((encPh: Password) => {\n encPhs.push(encPh);\n });\n }, Promise.resolve());\n\n return encPhs;\n }\n\n async encryptPasswordHistory(phModel: PasswordHistoryView, key: SymmetricCryptoKey): Promise {\n const ph = new Password();\n ph.lastUsedDate = phModel.lastUsedDate;\n\n await this.encryptObjProperty(phModel, ph, {\n password: null,\n }, key);\n\n return ph;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null || !ciphers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Cipher(ciphers[id], false, localData ? localData[id] : null);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n const response: Cipher[] = [];\n for (const id in ciphers) {\n if (ciphers.hasOwnProperty(id)) {\n response.push(new Cipher(ciphers[id], false, localData ? localData[id] : null));\n }\n }\n return response;\n }\n\n @sequentialize(() => 'getAllDecrypted')\n async getAllDecrypted(): Promise {\n if (this.decryptedCipherCache != null) {\n const userId = await this.userService.getUserId();\n if (this.searchService != null && (this.searchService().indexedEntityId ?? userId) !== userId)\n {\n await this.searchService().indexCiphers(userId, this.decryptedCipherCache);\n }\n return this.decryptedCipherCache;\n }\n\n const decCiphers: CipherView[] = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const promises: any[] = [];\n const ciphers = await this.getAll();\n ciphers.forEach(cipher => {\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n this.decryptedCipherCache = decCiphers;\n return this.decryptedCipherCache;\n }\n\n async getAllDecryptedForGrouping(groupingId: string, folder: boolean = true): Promise {\n const ciphers = await this.getAllDecrypted();\n\n return ciphers.filter(cipher => {\n if (cipher.isDeleted) {\n return false;\n }\n if (folder && cipher.folderId === groupingId) {\n return true;\n } else if (!folder && cipher.collectionIds != null && cipher.collectionIds.indexOf(groupingId) > -1) {\n return true;\n }\n\n return false;\n });\n }\n\n async getAllDecryptedForUrl(url: string, includeOtherTypes?: CipherType[],\n defaultMatch: UriMatchType = null): Promise {\n if (url == null && includeOtherTypes == null) {\n return Promise.resolve([]);\n }\n\n const domain = Utils.getDomain(url);\n const eqDomainsPromise = domain == null ? Promise.resolve([]) :\n this.settingsService.getEquivalentDomains().then((eqDomains: any[][]) => {\n let matches: any[] = [];\n eqDomains.forEach(eqDomain => {\n if (eqDomain.length && eqDomain.indexOf(domain) >= 0) {\n matches = matches.concat(eqDomain);\n }\n });\n\n if (!matches.length) {\n matches.push(domain);\n }\n\n return matches;\n });\n\n const result = await Promise.all([eqDomainsPromise, this.getAllDecrypted()]);\n const matchingDomains = result[0];\n const ciphers = result[1];\n\n if (defaultMatch == null) {\n defaultMatch = await this.storageService.get(ConstantsService.defaultUriMatch);\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\n }\n }\n\n return ciphers.filter(cipher => {\n if (cipher.deletedDate != null) {\n return false;\n }\n if (includeOtherTypes != null && includeOtherTypes.indexOf(cipher.type) > -1) {\n return true;\n }\n\n if (url != null && cipher.type === CipherType.Login && cipher.login.uris != null) {\n for (let i = 0; i < cipher.login.uris.length; i++) {\n const u = cipher.login.uris[i];\n if (u.uri == null) {\n continue;\n }\n\n const match = u.match == null ? defaultMatch : u.match;\n switch (match) {\n case UriMatchType.Domain:\n if (domain != null && u.domain != null && matchingDomains.indexOf(u.domain) > -1) {\n if (DomainMatchBlacklist.has(u.domain)) {\n const domainUrlHost = Utils.getHost(url);\n if (!DomainMatchBlacklist.get(u.domain).has(domainUrlHost)) {\n return true;\n }\n } else {\n return true;\n }\n }\n break;\n case UriMatchType.Host:\n const urlHost = Utils.getHost(url);\n if (urlHost != null && urlHost === Utils.getHost(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.Exact:\n if (url === u.uri) {\n return true;\n }\n break;\n case UriMatchType.StartsWith:\n if (url.startsWith(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.RegularExpression:\n try {\n const regex = new RegExp(u.uri, 'i');\n if (regex.test(url)) {\n return true;\n }\n } catch { }\n break;\n case UriMatchType.Never:\n default:\n break;\n }\n }\n }\n\n return false;\n });\n }\n\n async getAllFromApiForOrganization(organizationId: string): Promise {\n const ciphers = await this.apiService.getCiphersOrganization(organizationId);\n if (ciphers != null && ciphers.data != null && ciphers.data.length) {\n const decCiphers: CipherView[] = [];\n const promises: any[] = [];\n ciphers.data.forEach(r => {\n const data = new CipherData(r);\n const cipher = new Cipher(data);\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n return decCiphers;\n } else {\n return [];\n }\n }\n\n async getLastUsedForUrl(url: string, autofillOnPageLoad: boolean = false): Promise {\n return this.getCipherForUrl(url, true, false, autofillOnPageLoad);\n }\n\n async getLastLaunchedForUrl(url: string, autofillOnPageLoad: boolean = false): Promise {\n return this.getCipherForUrl(url, false, true, autofillOnPageLoad);\n }\n\n async getNextCipherForUrl(url: string): Promise {\n return this.getCipherForUrl(url, false, false, false);\n }\n\n updateLastUsedIndexForUrl(url: string) {\n this.sortedCiphersCache.updateLastUsedIndex(url);\n }\n\n async updateLastUsedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastUsedDate = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async updateLastLaunchedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastLaunched = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async saveNeverDomain(domain: string): Promise {\n if (domain == null) {\n return;\n }\n\n let domains = await this.storageService.get<{ [id: string]: any; }>(Keys.neverDomains);\n if (!domains) {\n domains = {};\n }\n domains[domain] = null;\n await this.storageService.save(Keys.neverDomains, domains);\n }\n\n async saveWithServer(cipher: Cipher): Promise {\n let response: CipherResponse;\n if (cipher.id == null) {\n if (cipher.collectionIds != null) {\n const request = new CipherCreateRequest(cipher);\n response = await this.apiService.postCipherCreate(request);\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.postCipher(request);\n }\n cipher.id = response.id;\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.putCipher(cipher.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, cipher.collectionIds);\n await this.upsert(data);\n }\n\n async shareWithServer(cipher: CipherView, organizationId: string, collectionIds: string[]): Promise {\n const attachmentPromises: Promise[] = [];\n if (cipher.attachments != null) {\n cipher.attachments.forEach(attachment => {\n if (attachment.key == null) {\n attachmentPromises.push(this.shareAttachmentWithServer(attachment, cipher.id, organizationId));\n }\n });\n }\n await Promise.all(attachmentPromises);\n\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n const encCipher = await this.encrypt(cipher);\n const request = new CipherShareRequest(encCipher);\n const response = await this.apiService.putShareCipher(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, collectionIds);\n await this.upsert(data);\n }\n\n async shareManyWithServer(ciphers: CipherView[], organizationId: string, collectionIds: string[]): Promise {\n const promises: Promise[] = [];\n const encCiphers: Cipher[] = [];\n for (const cipher of ciphers) {\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n promises.push(this.encrypt(cipher).then(c => {\n encCiphers.push(c);\n }));\n }\n await Promise.all(promises);\n const request = new CipherBulkShareRequest(encCiphers, collectionIds);\n await this.apiService.putShareCiphers(request);\n const userId = await this.userService.getUserId();\n await this.upsert(encCiphers.map(c => c.toCipherData(userId)));\n }\n\n saveAttachmentWithServer(cipher: Cipher, unencryptedFile: any, admin = false): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(unencryptedFile);\n reader.onload = async (evt: any) => {\n try {\n const cData = await this.saveAttachmentRawWithServer(cipher,\n unencryptedFile.name, evt.target.result, admin);\n resolve(cData);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n async saveAttachmentRawWithServer(cipher: Cipher, filename: string,\n data: ArrayBuffer, admin = false): Promise {\n const key = await this.cryptoService.getOrgKey(cipher.organizationId);\n const encFileName = await this.cryptoService.encrypt(filename, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(data, dataEncKey[0]);\n\n const request: AttachmentRequest = {\n key: dataEncKey[1].encryptedString,\n fileName: encFileName.encryptedString,\n fileSize: encData.buffer.byteLength,\n adminRequest: admin,\n };\n\n let response: CipherResponse;\n try {\n const uploadDataResponse = await this.apiService.postCipherAttachment(cipher.id, request);\n response = admin ? uploadDataResponse.cipherMiniResponse : uploadDataResponse.cipherResponse;\n await this.fileUploadService.uploadCipherAttachment(admin, uploadDataResponse, encFileName, encData);\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404 || (e as ErrorResponse).statusCode === 405) {\n response = await this.legacyServerAttachmentFileUpload(admin, cipher.id, encFileName, encData, dataEncKey[1]);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n const userId = await this.userService.getUserId();\n const cData = new CipherData(response, userId, cipher.collectionIds);\n if (!admin) {\n await this.upsert(cData);\n }\n return new Cipher(cData);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerAttachmentFileUpload(admin: boolean, cipherId: string, encFileName: EncString,\n encData: EncArrayBuffer, key: EncString) {\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: 'application/octet-stream' });\n fd.append('key', key.encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', key.encryptedString);\n fd.append('data', Buffer.from(encData.buffer) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n let response: CipherResponse;\n try {\n if (admin) {\n response = await this.apiService.postCipherAttachmentAdminLegacy(cipherId, fd);\n } else {\n response = await this.apiService.postCipherAttachmentLegacy(cipherId, fd);\n }\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n\n return response;\n }\n\n async saveCollectionsWithServer(cipher: Cipher): Promise {\n const request = new CipherCollectionsRequest(cipher.collectionIds);\n await this.apiService.putCipherCollections(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = cipher.toCipherData(userId);\n await this.upsert(data);\n }\n\n async upsert(cipher: CipherData | CipherData[]): Promise {\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n if (cipher instanceof CipherData) {\n const c = cipher as CipherData;\n ciphers[c.id] = c;\n } else {\n (cipher as CipherData[]).forEach(c => {\n ciphers[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async replace(ciphers: { [id: string]: CipherData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.ciphersPrefix + userId);\n this.clearCache();\n }\n\n async moveManyWithServer(ids: string[], folderId: string): Promise {\n await this.apiService.putMoveCiphers(new CipherBulkMoveRequest(ids, folderId));\n\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n ids.forEach(id => {\n if (ciphers.hasOwnProperty(id)) {\n ciphers[id].folderId = folderId;\n }\n });\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (ciphers[id] == null) {\n return;\n }\n delete ciphers[id];\n } else {\n (id as string[]).forEach(i => {\n delete ciphers[i];\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteCipher(id);\n await this.delete(id);\n }\n\n async deleteManyWithServer(ids: string[]): Promise {\n await this.apiService.deleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.delete(ids);\n }\n\n async deleteAttachment(id: string, attachmentId: string): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n\n if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {\n return;\n }\n\n for (let i = 0; i < ciphers[id].attachments.length; i++) {\n if (ciphers[id].attachments[i].id === attachmentId) {\n ciphers[id].attachments.splice(i, 1);\n }\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteAttachmentWithServer(id: string, attachmentId: string): Promise {\n try {\n await this.apiService.deleteCipherAttachment(id, attachmentId);\n } catch (e) {\n return Promise.reject((e as ErrorResponse).getSingleMessage());\n }\n await this.deleteAttachment(id, attachmentId);\n }\n\n sortCiphersByLastUsed(a: CipherView, b: CipherView): number {\n const aLastUsed = a.localData && a.localData.lastUsedDate ? a.localData.lastUsedDate as number : null;\n const bLastUsed = b.localData && b.localData.lastUsedDate ? b.localData.lastUsedDate as number : null;\n\n const bothNotNull = aLastUsed != null && bLastUsed != null;\n if (bothNotNull && aLastUsed < bLastUsed) {\n return 1;\n }\n if (aLastUsed != null && bLastUsed == null) {\n return -1;\n }\n\n if (bothNotNull && aLastUsed > bLastUsed) {\n return -1;\n }\n if (bLastUsed != null && aLastUsed == null) {\n return 1;\n }\n\n return 0;\n }\n\n sortCiphersByLastUsedThenName(a: CipherView, b: CipherView): number {\n const result = this.sortCiphersByLastUsed(a, b);\n if (result !== 0) {\n return result;\n }\n\n return this.getLocaleSortingFunction()(a, b);\n }\n\n getLocaleSortingFunction(): (a: CipherView, b: CipherView) => number {\n return (a, b) => {\n let aName = a.name;\n let bName = b.name;\n\n if (aName == null && bName != null) {\n return -1;\n }\n if (aName != null && bName == null) {\n return 1;\n }\n if (aName == null && bName == null) {\n return 0;\n }\n\n const result = this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n\n if (result !== 0 || a.type !== CipherType.Login || b.type !== CipherType.Login) {\n return result;\n }\n\n if (a.login.username != null) {\n aName += a.login.username;\n }\n\n if (b.login.username != null) {\n bName += b.login.username;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n };\n }\n\n async softDelete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const setDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = new Date().toISOString();\n };\n\n if (typeof id === 'string') {\n setDeletedDate(id);\n } else {\n (id as string[]).forEach(setDeletedDate);\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async softDeleteWithServer(id: string): Promise {\n await this.apiService.putDeleteCipher(id);\n await this.softDelete(id);\n }\n\n async softDeleteManyWithServer(ids: string[]): Promise {\n await this.apiService.putDeleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.softDelete(ids);\n }\n\n async restore(cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const clearDeletedDate = (c: { id: string, revisionDate: string; }) => {\n if (ciphers[c.id] == null) {\n return;\n }\n ciphers[c.id].deletedDate = null;\n ciphers[c.id].revisionDate = c.revisionDate;\n };\n\n\n if (cipher.constructor.name === 'Array') {\n (cipher as { id: string, revisionDate: string; }[]).forEach(clearDeletedDate);\n } else {\n clearDeletedDate(cipher as { id: string, revisionDate: string; });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async restoreWithServer(id: string): Promise {\n const response = await this.apiService.putRestoreCipher(id);\n await this.restore({ id: id, revisionDate: response.revisionDate });\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n const response = await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n const restores: { id: string, revisionDate: string; }[] = [];\n for (const cipher of response.data) {\n restores.push({ id: cipher.id, revisionDate: cipher.revisionDate });\n }\n await this.restore(restores);\n }\n\n // Helpers\n\n private async shareAttachmentWithServer(attachmentView: AttachmentView, cipherId: string,\n organizationId: string): Promise {\n const attachmentResponse = await this.apiService.nativeFetch(\n new Request(attachmentView.url, { cache: 'no-store' }));\n if (attachmentResponse.status !== 200) {\n throw Error('Failed to download attachment: ' + attachmentResponse.status.toString());\n }\n\n const buf = await attachmentResponse.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, null);\n const key = await this.cryptoService.getOrgKey(organizationId);\n const encFileName = await this.cryptoService.encrypt(attachmentView.fileName, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(decBuf, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: 'application/octet-stream' });\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', Buffer.from(encData.buffer) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n try {\n await this.apiService.postShareCipherAttachment(cipherId, attachmentView.id, fd, organizationId);\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n }\n\n private async encryptObjProperty(model: V, obj: D,\n map: any, key: SymmetricCryptoKey): Promise {\n const promises = [];\n const self = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp, theObj) {\n const p = Promise.resolve().then(() => {\n const modelProp = (model as any)[(map[theProp] || theProp)];\n if (modelProp && modelProp !== '') {\n return self.cryptoService.encrypt(modelProp, key);\n }\n return null;\n }).then((val: EncString) => {\n (theObj as any)[theProp] = val;\n });\n promises.push(p);\n })(prop, obj);\n }\n\n await Promise.all(promises);\n }\n\n private async encryptCipherData(cipher: Cipher, model: CipherView, key: SymmetricCryptoKey) {\n switch (cipher.type) {\n case CipherType.Login:\n cipher.login = new Login();\n cipher.login.passwordRevisionDate = model.login.passwordRevisionDate;\n cipher.login.autofillOnPageLoad = model.login.autofillOnPageLoad;\n await this.encryptObjProperty(model.login, cipher.login, {\n username: null,\n password: null,\n totp: null,\n }, key);\n\n if (model.login.uris != null) {\n cipher.login.uris = [];\n for (let i = 0; i < model.login.uris.length; i++) {\n const loginUri = new LoginUri();\n loginUri.match = model.login.uris[i].match;\n await this.encryptObjProperty(model.login.uris[i], loginUri, {\n uri: null,\n }, key);\n cipher.login.uris.push(loginUri);\n }\n }\n return;\n case CipherType.SecureNote:\n cipher.secureNote = new SecureNote();\n cipher.secureNote.type = model.secureNote.type;\n return;\n case CipherType.Card:\n cipher.card = new Card();\n await this.encryptObjProperty(model.card, cipher.card, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, key);\n return;\n case CipherType.Identity:\n cipher.identity = new Identity();\n await this.encryptObjProperty(model.identity, cipher.identity, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, key);\n return;\n default:\n throw new Error('Unknown cipher type.');\n }\n }\n\n private async getCipherForUrl(url: string, lastUsed: boolean, lastLaunched: boolean, autofillOnPageLoad: boolean): Promise {\n const cacheKey = autofillOnPageLoad ? 'autofillOnPageLoad-' + url : url;\n\n if (!this.sortedCiphersCache.isCached(cacheKey)) {\n let ciphers = await this.getAllDecryptedForUrl(url);\n if (!ciphers) {\n return null;\n }\n\n if (autofillOnPageLoad) {\n const autofillOnPageLoadDefault = await this.storageService.get(ConstantsService.autoFillOnPageLoadDefaultKey);\n ciphers = ciphers.filter(cipher => cipher.login.autofillOnPageLoad ||\n (cipher.login.autofillOnPageLoad == null && autofillOnPageLoadDefault !== false));\n if (ciphers.length === 0) {\n return null;\n }\n }\n\n this.sortedCiphersCache.addCiphers(cacheKey, ciphers);\n }\n\n if (lastLaunched) {\n return this.sortedCiphersCache.getLastLaunched(cacheKey);\n } else if (lastUsed) {\n return this.sortedCiphersCache.getLastUsed(cacheKey);\n } else {\n return this.sortedCiphersCache.getNext(cacheKey);\n }\n }\n}\n","/**\n * Use as a Decorator on async functions, it will prevent multiple 'active' calls as the same time\n *\n * If a promise was returned from a previous call to this function, that hasn't yet resolved it will\n * be returned, instead of calling the original function again\n *\n * Results are not cached, once the promise has returned, the next call will result in a fresh call\n *\n * Read more at https://github.com/bitwarden/jslib/pull/7\n */\nexport function sequentialize(cacheKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod: () => Promise = descriptor.value;\n const caches = new Map>>();\n\n const getCache = (obj: any) => {\n let cache = caches.get(obj);\n if (cache != null) {\n return cache;\n }\n cache = new Map>();\n caches.set(obj, cache);\n return cache;\n };\n\n return {\n value: function(...args: any[]) {\n const cache = getCache(this);\n const argsCacheKey = cacheKey(args);\n let response = cache.get(argsCacheKey);\n if (response != null) {\n return response;\n }\n\n const onFinally = () => {\n cache.delete(argsCacheKey);\n if (cache.size === 0) {\n caches.delete(this);\n }\n };\n response = originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n });\n\n cache.set(argsCacheKey, response);\n return response;\n },\n };\n };\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nimport { CollectionService as CollectionServiceAbstraction } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n collectionsPrefix: 'collections_',\n};\nconst NestingDelimiter = '/';\n\nexport class CollectionService implements CollectionServiceAbstraction {\n decryptedCollectionCache: CollectionView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private storageService: StorageService, private i18nService: I18nService) {\n }\n\n clearCache(): void {\n this.decryptedCollectionCache = null;\n }\n\n async encrypt(model: CollectionView): Promise {\n if (model.organizationId == null) {\n throw new Error('Collection has no organization id.');\n }\n const key = await this.cryptoService.getOrgKey(model.organizationId);\n if (key == null) {\n throw new Error('No key for this collection\\'s organization.');\n }\n const collection = new Collection();\n collection.id = model.id;\n collection.organizationId = model.organizationId;\n collection.readOnly = model.readOnly;\n collection.name = await this.cryptoService.encrypt(model.name, key);\n return collection;\n }\n\n async decryptMany(collections: Collection[]): Promise {\n if (collections == null) {\n return [];\n }\n const decCollections: CollectionView[] = [];\n const promises: Promise[] = [];\n collections.forEach(collection => {\n promises.push(collection.decrypt().then(c => decCollections.push(c)));\n });\n await Promise.all(promises);\n return decCollections.sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null || !collections.hasOwnProperty(id)) {\n return null;\n }\n\n return new Collection(collections[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n const response: Collection[] = [];\n for (const id in collections) {\n if (collections.hasOwnProperty(id)) {\n response.push(new Collection(collections[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedCollectionCache != null) {\n return this.decryptedCollectionCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const collections = await this.getAll();\n this.decryptedCollectionCache = await this.decryptMany(collections);\n return this.decryptedCollectionCache;\n }\n\n async getAllNested(collections: CollectionView[] = null): Promise[]> {\n if (collections == null) {\n collections = await this.getAllDecrypted();\n }\n const nodes: TreeNode[] = [];\n collections.forEach(c => {\n const collectionCopy = new CollectionView();\n collectionCopy.id = c.id;\n collectionCopy.organizationId = c.organizationId;\n const parts = c.name != null ? c.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const collections = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(collections, id) as TreeNode;\n }\n\n async upsert(collection: CollectionData | CollectionData[]): Promise {\n const userId = await this.userService.getUserId();\n let collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n collections = {};\n }\n\n if (collection instanceof CollectionData) {\n const c = collection as CollectionData;\n collections[c.id] = c;\n } else {\n (collection as CollectionData[]).forEach(c => {\n collections[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async replace(collections: { [id: string]: CollectionData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.collectionsPrefix + userId);\n this.decryptedCollectionCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n return;\n }\n\n if (typeof id === 'string') {\n const i = id as string;\n delete collections[id];\n } else {\n (id as string[]).forEach(i => {\n delete collections[i];\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n}\n","import {\n ITreeNodeObject,\n TreeNode,\n} from '../models/domain/treeNode';\n\nexport class ServiceUtils {\n static nestedTraverse(nodeTree: TreeNode[], partIndex: number, parts: string[],\n obj: ITreeNodeObject, parent: ITreeNodeObject, delimiter: string) {\n if (parts.length <= partIndex) {\n return;\n }\n\n const end = partIndex === parts.length - 1;\n const partName = parts[partIndex];\n\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.name !== parts[partIndex]) {\n continue;\n }\n if (end && nodeTree[i].node.id !== obj.id) {\n // Another node with the same name.\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n ServiceUtils.nestedTraverse(nodeTree[i].children, partIndex + 1, parts,\n obj, nodeTree[i].node, delimiter);\n return;\n }\n\n if (nodeTree.filter(n => n.node.name === partName).length === 0) {\n if (end) {\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];\n ServiceUtils.nestedTraverse(nodeTree, 0, [newPartName, ...parts.slice(partIndex + 2)],\n obj, parent, delimiter);\n }\n }\n\n static getTreeNodeObject(nodeTree: TreeNode[], id: string): TreeNode {\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.id === id) {\n return nodeTree[i];\n } else if (nodeTree[i].children != null) {\n const node = ServiceUtils.getTreeNodeObject(nodeTree[i].children, id);\n if (node !== null) {\n return node;\n }\n }\n }\n return null;\n }\n}\n","import { CryptoService } from '../abstractions/crypto.service';\n\nexport class ContainerService {\n constructor(private cryptoService: CryptoService) {\n }\n\n // deprecated, use attachToGlobal instead\n attachToWindow(win: any) {\n this.attachToGlobal(win);\n }\n\n attachToGlobal(global: any) {\n if (!global.bitwardenContainerService) {\n global.bitwardenContainerService = this;\n }\n }\n\n getCryptoService(): CryptoService {\n return this.cryptoService;\n }\n}\n","import * as bigInt from 'big-integer';\n\nimport { EncryptionType } from '../enums/encryptionType';\nimport { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncryptedObject } from '../models/domain/encryptedObject';\nimport { EncString } from '../models/domain/encString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { CryptoService as CryptoServiceAbstraction } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { LogService } from '../abstractions/log.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport {\n KeySuffixOptions,\n StorageService,\n} from '../abstractions/storage.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\nimport { EEFLongWordList } from '../misc/wordlist';\nimport { ProfileProviderOrganizationResponse } from '../models/response/profileProviderOrganizationResponse';\nimport { ProfileProviderResponse } from '../models/response/profileProviderResponse';\n\nexport const Keys = {\n key: 'key', // Master Key\n encOrgKeys: 'encOrgKeys',\n encProviderKeys: 'encProviderKeys',\n encPrivateKey: 'encPrivateKey',\n encKey: 'encKey', // Generated Symmetric Key\n keyHash: 'keyHash',\n};\n\nexport class CryptoService implements CryptoServiceAbstraction {\n private key: SymmetricCryptoKey;\n private encKey: SymmetricCryptoKey;\n private legacyEtmKey: SymmetricCryptoKey;\n private keyHash: string;\n private publicKey: ArrayBuffer;\n private privateKey: ArrayBuffer;\n private orgKeys: Map;\n private providerKeys: Map;\n\n constructor(private storageService: StorageService, protected secureStorageService: StorageService,\n private cryptoFunctionService: CryptoFunctionService, protected platformUtilService: PlatformUtilsService,\n protected logService: LogService) {\n }\n\n async setKey(key: SymmetricCryptoKey): Promise {\n this.key = key;\n\n await this.storeKey(key);\n }\n\n setKeyHash(keyHash: string): Promise<{}> {\n this.keyHash = keyHash;\n return this.storageService.save(Keys.keyHash, keyHash);\n }\n\n async setEncKey(encKey: string): Promise<{}> {\n if (encKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encKey, encKey);\n this.encKey = null;\n }\n\n async setEncPrivateKey(encPrivateKey: string): Promise<{}> {\n if (encPrivateKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encPrivateKey, encPrivateKey);\n this.privateKey = null;\n }\n\n async setOrgKeys(orgs: ProfileOrganizationResponse[], providerOrgs: ProfileProviderOrganizationResponse[]): Promise<{}> {\n const orgKeys: any = {};\n orgs.forEach(org => {\n orgKeys[org.id] = org.key;\n });\n\n for (const providerOrg of providerOrgs) {\n // Convert provider encrypted keys to user encrypted.\n const providerKey = await this.getProviderKey(providerOrg.providerId);\n const decValue = await this.decryptToBytes(new EncString(providerOrg.key), providerKey);\n orgKeys[providerOrg.id] = await (await this.rsaEncrypt(decValue)).encryptedString;\n }\n\n this.orgKeys = null;\n return this.storageService.save(Keys.encOrgKeys, orgKeys);\n }\n\n setProviderKeys(providers: ProfileProviderResponse[]): Promise<{}> {\n const providerKeys: any = {};\n providers.forEach(provider => {\n providerKeys[provider.id] = provider.key;\n });\n\n this.providerKeys = null;\n return this.storageService.save(Keys.encProviderKeys, providerKeys);\n }\n\n async getKey(keySuffix?: KeySuffixOptions): Promise {\n if (this.key != null) {\n return this.key;\n }\n\n keySuffix ||= 'auto';\n const symmetricKey = await this.getKeyFromStorage(keySuffix);\n\n if (symmetricKey != null) {\n this.setKey(symmetricKey);\n }\n\n return symmetricKey;\n }\n\n async getKeyFromStorage(keySuffix: KeySuffixOptions): Promise {\n const key = await this.retrieveKeyFromStorage(keySuffix);\n if (key != null) {\n\n const symmetricKey = new SymmetricCryptoKey(Utils.fromB64ToArray(key).buffer);\n\n if (!await this.validateKey(symmetricKey)) {\n this.logService.warning('Wrong key, throwing away stored key');\n this.secureStorageService.remove(Keys.key, { keySuffix: keySuffix });\n return null;\n }\n\n return symmetricKey;\n }\n return null;\n }\n\n async getKeyHash(): Promise {\n if (this.keyHash != null) {\n return this.keyHash;\n }\n\n const keyHash = await this.storageService.get(Keys.keyHash);\n if (keyHash != null) {\n this.keyHash = keyHash;\n }\n\n return keyHash == null ? null : this.keyHash;\n }\n\n async compareAndUpdateKeyHash(masterPassword: string, key: SymmetricCryptoKey): Promise {\n const storedKeyHash = await this.getKeyHash();\n if (masterPassword != null && storedKeyHash != null) {\n const localKeyHash = await this.hashPassword(masterPassword, key, HashPurpose.LocalAuthorization);\n if (localKeyHash != null && storedKeyHash === localKeyHash) {\n return true;\n }\n\n // TODO: remove serverKeyHash check in 1-2 releases after everyone's keyHash has been updated\n const serverKeyHash = await this.hashPassword(masterPassword, key, HashPurpose.ServerAuthorization);\n if (serverKeyHash != null && storedKeyHash === serverKeyHash) {\n await this.setKeyHash(localKeyHash);\n return true;\n }\n }\n\n return false;\n }\n\n @sequentialize(() => 'getEncKey')\n async getEncKey(key: SymmetricCryptoKey = null): Promise {\n if (this.encKey != null) {\n return this.encKey;\n }\n\n const encKey = await this.storageService.get(Keys.encKey);\n if (encKey == null) {\n return null;\n }\n\n if (key == null) {\n key = await this.getKey();\n }\n if (key == null) {\n return null;\n }\n\n let decEncKey: ArrayBuffer;\n const encKeyCipher = new EncString(encKey);\n if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_B64) {\n decEncKey = await this.decryptToBytes(encKeyCipher, key);\n } else if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_HmacSha256_B64) {\n const newKey = await this.stretchKey(key);\n decEncKey = await this.decryptToBytes(encKeyCipher, newKey);\n } else {\n throw new Error('Unsupported encKey type.');\n }\n\n if (decEncKey == null) {\n return null;\n }\n this.encKey = new SymmetricCryptoKey(decEncKey);\n return this.encKey;\n }\n\n async getPublicKey(): Promise {\n if (this.publicKey != null) {\n return this.publicKey;\n }\n\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n return null;\n }\n\n this.publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n return this.publicKey;\n }\n\n async getPrivateKey(): Promise {\n if (this.privateKey != null) {\n return this.privateKey;\n }\n\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n if (encPrivateKey == null) {\n return null;\n }\n\n this.privateKey = await this.decryptToBytes(new EncString(encPrivateKey), null);\n return this.privateKey;\n }\n\n async getFingerprint(userId: string, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey === null) {\n throw new Error('No public key available.');\n }\n const keyFingerprint = await this.cryptoFunctionService.hash(publicKey, 'sha256');\n const userFingerprint = await this.cryptoFunctionService.hkdfExpand(keyFingerprint, userId, 32, 'sha256');\n return this.hashPhrase(userFingerprint);\n }\n\n @sequentialize(() => 'getOrgKeys')\n async getOrgKeys(): Promise> {\n if (this.orgKeys != null && this.orgKeys.size > 0) {\n return this.orgKeys;\n }\n\n const encOrgKeys = await this.storageService.get(Keys.encOrgKeys);\n if (encOrgKeys == null) {\n return null;\n }\n\n const orgKeys: Map = new Map();\n let setKey = false;\n\n for (const orgId in encOrgKeys) {\n if (!encOrgKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encOrgKeys[orgId]);\n orgKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n this.orgKeys = orgKeys;\n }\n\n return this.orgKeys;\n }\n\n async getOrgKey(orgId: string): Promise {\n if (orgId == null) {\n return null;\n }\n\n const orgKeys = await this.getOrgKeys();\n if (orgKeys == null || !orgKeys.has(orgId)) {\n return null;\n }\n\n return orgKeys.get(orgId);\n }\n\n @sequentialize(() => 'getProviderKeys')\n async getProviderKeys(): Promise> {\n if (this.providerKeys != null && this.providerKeys.size > 0) {\n return this.providerKeys;\n }\n\n const encProviderKeys = await this.storageService.get(Keys.encProviderKeys);\n if (encProviderKeys == null) {\n return null;\n }\n\n const providerKeys: Map = new Map();\n let setKey = false;\n\n for (const orgId in encProviderKeys) {\n if (!encProviderKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encProviderKeys[orgId]);\n providerKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n this.providerKeys = providerKeys;\n }\n\n return this.providerKeys;\n }\n\n async getProviderKey(providerId: string): Promise {\n if (providerId == null) {\n return null;\n }\n\n const providerKeys = await this.getProviderKeys();\n if (providerKeys == null || !providerKeys.has(providerId)) {\n return null;\n }\n\n return providerKeys.get(providerId);\n }\n\n async hasKey(): Promise {\n return this.hasKeyInMemory() || await this.hasKeyStored('auto') || await this.hasKeyStored('biometric');\n }\n\n hasKeyInMemory(): boolean {\n return this.key != null;\n }\n\n hasKeyStored(keySuffix: KeySuffixOptions): Promise {\n return this.secureStorageService.has(Keys.key, { keySuffix: keySuffix });\n }\n\n async hasEncKey(): Promise {\n const encKey = await this.storageService.get(Keys.encKey);\n return encKey != null;\n }\n\n async clearKey(clearSecretStorage: boolean = true): Promise {\n this.key = this.legacyEtmKey = null;\n if (clearSecretStorage) {\n this.clearStoredKey('auto');\n this.clearStoredKey('biometric');\n }\n }\n\n async clearStoredKey(keySuffix: KeySuffixOptions) {\n await this.secureStorageService.remove(Keys.key, { keySuffix: keySuffix });\n }\n\n clearKeyHash(): Promise {\n this.keyHash = null;\n return this.storageService.remove(Keys.keyHash);\n }\n\n clearEncKey(memoryOnly?: boolean): Promise {\n this.encKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encKey);\n }\n\n clearKeyPair(memoryOnly?: boolean): Promise {\n this.privateKey = null;\n this.publicKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encPrivateKey);\n }\n\n clearOrgKeys(memoryOnly?: boolean): Promise {\n this.orgKeys = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encOrgKeys);\n }\n\n clearProviderKeys(memoryOnly?: boolean): Promise {\n this.providerKeys = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encOrgKeys);\n }\n\n clearPinProtectedKey(): Promise {\n return this.storageService.remove(ConstantsService.pinProtectedKey);\n }\n\n async clearKeys(): Promise {\n await this.clearKey();\n await this.clearKeyHash();\n await this.clearOrgKeys();\n await this.clearProviderKeys();\n await this.clearEncKey();\n await this.clearKeyPair();\n await this.clearPinProtectedKey();\n }\n\n async toggleKey(): Promise {\n const key = await this.getKey();\n\n await this.setKey(key);\n }\n\n async makeKey(password: string, salt: string, kdf: KdfType, kdfIterations: number):\n Promise {\n let key: ArrayBuffer = null;\n if (kdf == null || kdf === KdfType.PBKDF2_SHA256) {\n if (kdfIterations == null) {\n kdfIterations = 5000;\n } else if (kdfIterations < 5000) {\n throw new Error('PBKDF2 iteration minimum is 5000.');\n }\n key = await this.cryptoFunctionService.pbkdf2(password, salt, 'sha256', kdfIterations);\n } else {\n throw new Error('Unknown Kdf.');\n }\n return new SymmetricCryptoKey(key);\n }\n\n async makeKeyFromPin(pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs: EncString = null):\n Promise {\n if (protectedKeyCs == null) {\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n if (pinProtectedKey == null) {\n throw new Error('No PIN protected key found.');\n }\n protectedKeyCs = new EncString(pinProtectedKey);\n }\n const pinKey = await this.makePinKey(pin, salt, kdf, kdfIterations);\n const decKey = await this.decryptToBytes(protectedKeyCs, pinKey);\n return new SymmetricCryptoKey(decKey);\n }\n\n async makeShareKey(): Promise<[EncString, SymmetricCryptoKey]> {\n const shareKey = await this.cryptoFunctionService.randomBytes(64);\n const publicKey = await this.getPublicKey();\n const encShareKey = await this.rsaEncrypt(shareKey, publicKey);\n return [encShareKey, new SymmetricCryptoKey(shareKey)];\n }\n\n async makeKeyPair(key?: SymmetricCryptoKey): Promise<[string, EncString]> {\n const keyPair = await this.cryptoFunctionService.rsaGenerateKeyPair(2048);\n const publicB64 = Utils.fromBufferToB64(keyPair[0]);\n const privateEnc = await this.encrypt(keyPair[1], key);\n return [publicB64, privateEnc];\n }\n\n async makePinKey(pin: string, salt: string, kdf: KdfType, kdfIterations: number): Promise {\n const pinKey = await this.makeKey(pin, salt, kdf, kdfIterations);\n return await this.stretchKey(pinKey);\n }\n\n async makeSendKey(keyMaterial: ArrayBuffer): Promise {\n const sendKey = await this.cryptoFunctionService.hkdf(keyMaterial, 'bitwarden-send', 'send', 64, 'sha256');\n return new SymmetricCryptoKey(sendKey);\n }\n\n async hashPassword(password: string, key: SymmetricCryptoKey, hashPurpose?: HashPurpose): Promise {\n if (key == null) {\n key = await this.getKey();\n }\n if (password == null || key == null) {\n throw new Error('Invalid parameters.');\n }\n\n const iterations = hashPurpose === HashPurpose.LocalAuthorization ? 2 : 1;\n const hash = await this.cryptoFunctionService.pbkdf2(key.key, password, 'sha256', iterations);\n return Utils.fromBufferToB64(hash);\n }\n\n async makeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n const theKey = await this.getKeyForEncryption(key);\n const encKey = await this.cryptoFunctionService.randomBytes(64);\n return this.buildEncKey(theKey, encKey);\n }\n\n async remakeEncKey(key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n if (encKey == null) {\n encKey = await this.getEncKey();\n }\n return this.buildEncKey(key, encKey.key);\n }\n\n async encrypt(plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n if (plainValue == null) {\n return Promise.resolve(null);\n }\n\n let plainBuf: ArrayBuffer;\n if (typeof (plainValue) === 'string') {\n plainBuf = Utils.fromUtf8ToArray(plainValue).buffer;\n } else {\n plainBuf = plainValue;\n }\n\n const encObj = await this.aesEncrypt(plainBuf, key);\n const iv = Utils.fromBufferToB64(encObj.iv);\n const data = Utils.fromBufferToB64(encObj.data);\n const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null;\n return new EncString(encObj.key.encType, data, iv, mac);\n }\n\n async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n const encValue = await this.aesEncrypt(plainValue, key);\n let macLen = 0;\n if (encValue.mac != null) {\n macLen = encValue.mac.byteLength;\n }\n\n const encBytes = new Uint8Array(1 + encValue.iv.byteLength + macLen + encValue.data.byteLength);\n encBytes.set([encValue.key.encType]);\n encBytes.set(new Uint8Array(encValue.iv), 1);\n if (encValue.mac != null) {\n encBytes.set(new Uint8Array(encValue.mac), 1 + encValue.iv.byteLength);\n }\n\n encBytes.set(new Uint8Array(encValue.data), 1 + encValue.iv.byteLength + macLen);\n return new EncArrayBuffer(encBytes.buffer);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey == null) {\n throw new Error('Public key unavailable.');\n }\n\n const encBytes = await this.cryptoFunctionService.rsaEncrypt(data, publicKey, 'sha1');\n return new EncString(EncryptionType.Rsa2048_OaepSha1_B64, Utils.fromBufferToB64(encBytes));\n }\n\n async rsaDecrypt(encValue: string, privateKeyValue?: ArrayBuffer): Promise {\n const headerPieces = encValue.split('.');\n let encType: EncryptionType = null;\n let encPieces: string[];\n\n if (headerPieces.length === 1) {\n encType = EncryptionType.Rsa2048_OaepSha256_B64;\n encPieces = [headerPieces[0]];\n } else if (headerPieces.length === 2) {\n try {\n encType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) { }\n }\n\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n // HmacSha256 types are deprecated\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n if (encPieces == null || encPieces.length <= 0) {\n throw new Error('encPieces unavailable.');\n }\n\n const data = Utils.fromB64ToArray(encPieces[0]).buffer;\n const privateKey = privateKeyValue ?? await this.getPrivateKey();\n if (privateKey == null) {\n throw new Error('No private key.');\n }\n\n let alg: 'sha1' | 'sha256' = 'sha1';\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n alg = 'sha256';\n break;\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n return this.cryptoFunctionService.rsaDecrypt(data, privateKey, alg);\n }\n\n async decryptToBytes(encString: EncString, key?: SymmetricCryptoKey): Promise {\n const iv = Utils.fromB64ToArray(encString.iv).buffer;\n const data = Utils.fromB64ToArray(encString.data).buffer;\n const mac = encString.mac ? Utils.fromB64ToArray(encString.mac).buffer : null;\n const decipher = await this.aesDecryptToBytes(encString.encryptionType, data, iv, mac, key);\n if (decipher == null) {\n return null;\n }\n\n return decipher;\n }\n\n async decryptToUtf8(encString: EncString, key?: SymmetricCryptoKey): Promise {\n return await this.aesDecryptToUtf8(encString.encryptionType, encString.data,\n encString.iv, encString.mac, key);\n }\n\n async decryptFromBytes(encBuf: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n if (encBuf == null) {\n throw new Error('no encBuf.');\n }\n\n const encBytes = new Uint8Array(encBuf);\n const encType = encBytes[0];\n let ctBytes: Uint8Array = null;\n let ivBytes: Uint8Array = null;\n let macBytes: Uint8Array = null;\n\n switch (encType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encBytes.length <= 49) { // 1 + 16 + 32 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n macBytes = encBytes.slice(17, 49);\n ctBytes = encBytes.slice(49);\n break;\n case EncryptionType.AesCbc256_B64:\n if (encBytes.length <= 17) { // 1 + 16 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n ctBytes = encBytes.slice(17);\n break;\n default:\n return null;\n }\n\n return await this.aesDecryptToBytes(encType, ctBytes.buffer, ivBytes.buffer,\n macBytes != null ? macBytes.buffer : null, key);\n }\n\n // EFForg/OpenWireless\n // ref https://github.com/EFForg/OpenWireless/blob/master/app/js/diceware.js\n async randomNumber(min: number, max: number): Promise {\n let rval = 0;\n const range = max - min + 1;\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error('We cannot generate numbers larger than 53 bits.');\n }\n\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n // 7776 -> (2^13 = 8192) -1 == 8191 or 0x00001111 11111111\n\n // Fill a byte array with N random numbers\n const byteArray = new Uint8Array(await this.cryptoFunctionService.randomBytes(bytesNeeded));\n\n let p = (bytesNeeded - 1) * 8;\n for (let i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n // Use & to apply the mask and reduce the number of recursive lookups\n // tslint:disable-next-line\n rval = rval & mask;\n\n if (rval >= range) {\n // Integer out of acceptable range\n return this.randomNumber(min, max);\n }\n\n // Return an integer that falls within the range\n return min + rval;\n }\n\n async validateKey(key: SymmetricCryptoKey) {\n try {\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n const encKey = await this.getEncKey(key);\n if (encPrivateKey == null || encKey == null) {\n return false;\n }\n\n const privateKey = await this.decryptToBytes(new EncString(encPrivateKey), encKey);\n await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n // Helpers\n\n protected async storeKey(key: SymmetricCryptoKey) {\n if (await this.shouldStoreKey('auto') || await this.shouldStoreKey('biometric')) {\n this.secureStorageService.save(Keys.key, key.keyB64);\n } else {\n this.secureStorageService.remove(Keys.key);\n }\n }\n\n protected async shouldStoreKey(keySuffix: KeySuffixOptions) {\n let shouldStoreKey = false;\n if (keySuffix === 'auto') {\n const vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n shouldStoreKey = vaultTimeout == null;\n } else if (keySuffix === 'biometric') {\n const biometricUnlock = await this.storageService.get(ConstantsService.biometricUnlockKey);\n shouldStoreKey = biometricUnlock && this.platformUtilService.supportsSecureStorage();\n }\n return shouldStoreKey;\n }\n\n protected retrieveKeyFromStorage(keySuffix: KeySuffixOptions) {\n return this.secureStorageService.get(Keys.key, { keySuffix: keySuffix });\n }\n\n private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const obj = new EncryptedObject();\n obj.key = await this.getKeyForEncryption(key);\n obj.iv = await this.cryptoFunctionService.randomBytes(16);\n obj.data = await this.cryptoFunctionService.aesEncrypt(data, obj.iv, obj.key.encKey);\n\n if (obj.key.macKey != null) {\n const macData = new Uint8Array(obj.iv.byteLength + obj.data.byteLength);\n macData.set(new Uint8Array(obj.iv), 0);\n macData.set(new Uint8Array(obj.data), obj.iv.byteLength);\n obj.mac = await this.cryptoFunctionService.hmac(macData.buffer, obj.key.macKey, 'sha256');\n }\n\n return obj;\n }\n\n private async aesDecryptToUtf8(encType: EncryptionType, data: string, iv: string, mac: string,\n key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n this.logService.error('mac required.');\n return null;\n }\n\n if (theKey.encType !== encType) {\n this.logService.error('encType unavailable.');\n return null;\n }\n\n const fastParams = this.cryptoFunctionService.aesDecryptFastParameters(data, iv, mac, theKey);\n if (fastParams.macKey != null && fastParams.mac != null) {\n const computedMac = await this.cryptoFunctionService.hmacFast(fastParams.macData,\n fastParams.macKey, 'sha256');\n const macsEqual = await this.cryptoFunctionService.compareFast(fastParams.mac, computedMac);\n if (!macsEqual) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return this.cryptoFunctionService.aesDecryptFast(fastParams);\n }\n\n private async aesDecryptToBytes(encType: EncryptionType, data: ArrayBuffer, iv: ArrayBuffer,\n mac: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n return null;\n }\n\n if (theKey.encType !== encType) {\n return null;\n }\n\n if (theKey.macKey != null && mac != null) {\n const macData = new Uint8Array(iv.byteLength + data.byteLength);\n macData.set(new Uint8Array(iv), 0);\n macData.set(new Uint8Array(data), iv.byteLength);\n const computedMac = await this.cryptoFunctionService.hmac(macData.buffer, theKey.macKey, 'sha256');\n if (computedMac === null) {\n return null;\n }\n\n const macsMatch = await this.cryptoFunctionService.compare(mac, computedMac);\n if (!macsMatch) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private async getKeyForEncryption(key?: SymmetricCryptoKey): Promise {\n if (key != null) {\n return key;\n }\n\n const encKey = await this.getEncKey();\n if (encKey != null) {\n return encKey;\n }\n\n return await this.getKey();\n }\n\n private resolveLegacyKey(encType: EncryptionType, key: SymmetricCryptoKey): SymmetricCryptoKey {\n if (encType === EncryptionType.AesCbc128_HmacSha256_B64 &&\n key.encType === EncryptionType.AesCbc256_B64) {\n // Old encrypt-then-mac scheme, make a new key\n if (this.legacyEtmKey == null) {\n this.legacyEtmKey = new SymmetricCryptoKey(key.key, EncryptionType.AesCbc128_HmacSha256_B64);\n }\n return this.legacyEtmKey;\n }\n\n return key;\n }\n\n private async stretchKey(key: SymmetricCryptoKey): Promise {\n const newKey = new Uint8Array(64);\n const encKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'enc', 32, 'sha256');\n const macKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'mac', 32, 'sha256');\n newKey.set(new Uint8Array(encKey));\n newKey.set(new Uint8Array(macKey), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n private async hashPhrase(hash: ArrayBuffer, minimumEntropy: number = 64) {\n const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2);\n let numWords = Math.ceil(minimumEntropy / entropyPerWord);\n\n const hashArr = Array.from(new Uint8Array(hash));\n const entropyAvailable = hashArr.length * 4;\n if (numWords * entropyPerWord > entropyAvailable) {\n throw new Error('Output entropy of hash function is too small');\n }\n\n const phrase: string[] = [];\n let hashNumber = bigInt.fromArray(hashArr, 256);\n while (numWords--) {\n const remainder = hashNumber.mod(EEFLongWordList.length);\n hashNumber = hashNumber.divide(EEFLongWordList.length);\n phrase.push(EEFLongWordList[remainder as any]);\n }\n return phrase;\n }\n\n private async buildEncKey(key: SymmetricCryptoKey, encKey: ArrayBuffer)\n : Promise<[SymmetricCryptoKey, EncString]> {\n let encKeyEnc: EncString = null;\n if (key.key.byteLength === 32) {\n const newKey = await this.stretchKey(key);\n encKeyEnc = await this.encrypt(encKey, newKey);\n } else if (key.key.byteLength === 64) {\n encKeyEnc = await this.encrypt(encKey, key);\n } else {\n throw new Error('Invalid key size.');\n }\n return [new SymmetricCryptoKey(encKey), encKeyEnc];\n }\n}\n","// EFF's Long Wordlist from https://www.eff.org/dice\nexport const EEFLongWordList = [\n 'abacus',\n 'abdomen',\n 'abdominal',\n 'abide',\n 'abiding',\n 'ability',\n 'ablaze',\n 'able',\n 'abnormal',\n 'abrasion',\n 'abrasive',\n 'abreast',\n 'abridge',\n 'abroad',\n 'abruptly',\n 'absence',\n 'absentee',\n 'absently',\n 'absinthe',\n 'absolute',\n 'absolve',\n 'abstain',\n 'abstract',\n 'absurd',\n 'accent',\n 'acclaim',\n 'acclimate',\n 'accompany',\n 'account',\n 'accuracy',\n 'accurate',\n 'accustom',\n 'acetone',\n 'achiness',\n 'aching',\n 'acid',\n 'acorn',\n 'acquaint',\n 'acquire',\n 'acre',\n 'acrobat',\n 'acronym',\n 'acting',\n 'action',\n 'activate',\n 'activator',\n 'active',\n 'activism',\n 'activist',\n 'activity',\n 'actress',\n 'acts',\n 'acutely',\n 'acuteness',\n 'aeration',\n 'aerobics',\n 'aerosol',\n 'aerospace',\n 'afar',\n 'affair',\n 'affected',\n 'affecting',\n 'affection',\n 'affidavit',\n 'affiliate',\n 'affirm',\n 'affix',\n 'afflicted',\n 'affluent',\n 'afford',\n 'affront',\n 'aflame',\n 'afloat',\n 'aflutter',\n 'afoot',\n 'afraid',\n 'afterglow',\n 'afterlife',\n 'aftermath',\n 'aftermost',\n 'afternoon',\n 'aged',\n 'ageless',\n 'agency',\n 'agenda',\n 'agent',\n 'aggregate',\n 'aghast',\n 'agile',\n 'agility',\n 'aging',\n 'agnostic',\n 'agonize',\n 'agonizing',\n 'agony',\n 'agreeable',\n 'agreeably',\n 'agreed',\n 'agreeing',\n 'agreement',\n 'aground',\n 'ahead',\n 'ahoy',\n 'aide',\n 'aids',\n 'aim',\n 'ajar',\n 'alabaster',\n 'alarm',\n 'albatross',\n 'album',\n 'alfalfa',\n 'algebra',\n 'algorithm',\n 'alias',\n 'alibi',\n 'alienable',\n 'alienate',\n 'aliens',\n 'alike',\n 'alive',\n 'alkaline',\n 'alkalize',\n 'almanac',\n 'almighty',\n 'almost',\n 'aloe',\n 'aloft',\n 'aloha',\n 'alone',\n 'alongside',\n 'aloof',\n 'alphabet',\n 'alright',\n 'although',\n 'altitude',\n 'alto',\n 'aluminum',\n 'alumni',\n 'always',\n 'amaretto',\n 'amaze',\n 'amazingly',\n 'amber',\n 'ambiance',\n 'ambiguity',\n 'ambiguous',\n 'ambition',\n 'ambitious',\n 'ambulance',\n 'ambush',\n 'amendable',\n 'amendment',\n 'amends',\n 'amenity',\n 'amiable',\n 'amicably',\n 'amid',\n 'amigo',\n 'amino',\n 'amiss',\n 'ammonia',\n 'ammonium',\n 'amnesty',\n 'amniotic',\n 'among',\n 'amount',\n 'amperage',\n 'ample',\n 'amplifier',\n 'amplify',\n 'amply',\n 'amuck',\n 'amulet',\n 'amusable',\n 'amused',\n 'amusement',\n 'amuser',\n 'amusing',\n 'anaconda',\n 'anaerobic',\n 'anagram',\n 'anatomist',\n 'anatomy',\n 'anchor',\n 'anchovy',\n 'ancient',\n 'android',\n 'anemia',\n 'anemic',\n 'aneurism',\n 'anew',\n 'angelfish',\n 'angelic',\n 'anger',\n 'angled',\n 'angler',\n 'angles',\n 'angling',\n 'angrily',\n 'angriness',\n 'anguished',\n 'angular',\n 'animal',\n 'animate',\n 'animating',\n 'animation',\n 'animator',\n 'anime',\n 'animosity',\n 'ankle',\n 'annex',\n 'annotate',\n 'announcer',\n 'annoying',\n 'annually',\n 'annuity',\n 'anointer',\n 'another',\n 'answering',\n 'antacid',\n 'antarctic',\n 'anteater',\n 'antelope',\n 'antennae',\n 'anthem',\n 'anthill',\n 'anthology',\n 'antibody',\n 'antics',\n 'antidote',\n 'antihero',\n 'antiquely',\n 'antiques',\n 'antiquity',\n 'antirust',\n 'antitoxic',\n 'antitrust',\n 'antiviral',\n 'antivirus',\n 'antler',\n 'antonym',\n 'antsy',\n 'anvil',\n 'anybody',\n 'anyhow',\n 'anymore',\n 'anyone',\n 'anyplace',\n 'anything',\n 'anytime',\n 'anyway',\n 'anywhere',\n 'aorta',\n 'apache',\n 'apostle',\n 'appealing',\n 'appear',\n 'appease',\n 'appeasing',\n 'appendage',\n 'appendix',\n 'appetite',\n 'appetizer',\n 'applaud',\n 'applause',\n 'apple',\n 'appliance',\n 'applicant',\n 'applied',\n 'apply',\n 'appointee',\n 'appraisal',\n 'appraiser',\n 'apprehend',\n 'approach',\n 'approval',\n 'approve',\n 'apricot',\n 'april',\n 'apron',\n 'aptitude',\n 'aptly',\n 'aqua',\n 'aqueduct',\n 'arbitrary',\n 'arbitrate',\n 'ardently',\n 'area',\n 'arena',\n 'arguable',\n 'arguably',\n 'argue',\n 'arise',\n 'armadillo',\n 'armband',\n 'armchair',\n 'armed',\n 'armful',\n 'armhole',\n 'arming',\n 'armless',\n 'armoire',\n 'armored',\n 'armory',\n 'armrest',\n 'army',\n 'aroma',\n 'arose',\n 'around',\n 'arousal',\n 'arrange',\n 'array',\n 'arrest',\n 'arrival',\n 'arrive',\n 'arrogance',\n 'arrogant',\n 'arson',\n 'art',\n 'ascend',\n 'ascension',\n 'ascent',\n 'ascertain',\n 'ashamed',\n 'ashen',\n 'ashes',\n 'ashy',\n 'aside',\n 'askew',\n 'asleep',\n 'asparagus',\n 'aspect',\n 'aspirate',\n 'aspire',\n 'aspirin',\n 'astonish',\n 'astound',\n 'astride',\n 'astrology',\n 'astronaut',\n 'astronomy',\n 'astute',\n 'atlantic',\n 'atlas',\n 'atom',\n 'atonable',\n 'atop',\n 'atrium',\n 'atrocious',\n 'atrophy',\n 'attach',\n 'attain',\n 'attempt',\n 'attendant',\n 'attendee',\n 'attention',\n 'attentive',\n 'attest',\n 'attic',\n 'attire',\n 'attitude',\n 'attractor',\n 'attribute',\n 'atypical',\n 'auction',\n 'audacious',\n 'audacity',\n 'audible',\n 'audibly',\n 'audience',\n 'audio',\n 'audition',\n 'augmented',\n 'august',\n 'authentic',\n 'author',\n 'autism',\n 'autistic',\n 'autograph',\n 'automaker',\n 'automated',\n 'automatic',\n 'autopilot',\n 'available',\n 'avalanche',\n 'avatar',\n 'avenge',\n 'avenging',\n 'avenue',\n 'average',\n 'aversion',\n 'avert',\n 'aviation',\n 'aviator',\n 'avid',\n 'avoid',\n 'await',\n 'awaken',\n 'award',\n 'aware',\n 'awhile',\n 'awkward',\n 'awning',\n 'awoke',\n 'awry',\n 'axis',\n 'babble',\n 'babbling',\n 'babied',\n 'baboon',\n 'backache',\n 'backboard',\n 'backboned',\n 'backdrop',\n 'backed',\n 'backer',\n 'backfield',\n 'backfire',\n 'backhand',\n 'backing',\n 'backlands',\n 'backlash',\n 'backless',\n 'backlight',\n 'backlit',\n 'backlog',\n 'backpack',\n 'backpedal',\n 'backrest',\n 'backroom',\n 'backshift',\n 'backside',\n 'backslid',\n 'backspace',\n 'backspin',\n 'backstab',\n 'backstage',\n 'backtalk',\n 'backtrack',\n 'backup',\n 'backward',\n 'backwash',\n 'backwater',\n 'backyard',\n 'bacon',\n 'bacteria',\n 'bacterium',\n 'badass',\n 'badge',\n 'badland',\n 'badly',\n 'badness',\n 'baffle',\n 'baffling',\n 'bagel',\n 'bagful',\n 'baggage',\n 'bagged',\n 'baggie',\n 'bagginess',\n 'bagging',\n 'baggy',\n 'bagpipe',\n 'baguette',\n 'baked',\n 'bakery',\n 'bakeshop',\n 'baking',\n 'balance',\n 'balancing',\n 'balcony',\n 'balmy',\n 'balsamic',\n 'bamboo',\n 'banana',\n 'banish',\n 'banister',\n 'banjo',\n 'bankable',\n 'bankbook',\n 'banked',\n 'banker',\n 'banking',\n 'banknote',\n 'bankroll',\n 'banner',\n 'bannister',\n 'banshee',\n 'banter',\n 'barbecue',\n 'barbed',\n 'barbell',\n 'barber',\n 'barcode',\n 'barge',\n 'bargraph',\n 'barista',\n 'baritone',\n 'barley',\n 'barmaid',\n 'barman',\n 'barn',\n 'barometer',\n 'barrack',\n 'barracuda',\n 'barrel',\n 'barrette',\n 'barricade',\n 'barrier',\n 'barstool',\n 'bartender',\n 'barterer',\n 'bash',\n 'basically',\n 'basics',\n 'basil',\n 'basin',\n 'basis',\n 'basket',\n 'batboy',\n 'batch',\n 'bath',\n 'baton',\n 'bats',\n 'battalion',\n 'battered',\n 'battering',\n 'battery',\n 'batting',\n 'battle',\n 'bauble',\n 'bazooka',\n 'blabber',\n 'bladder',\n 'blade',\n 'blah',\n 'blame',\n 'blaming',\n 'blanching',\n 'blandness',\n 'blank',\n 'blaspheme',\n 'blasphemy',\n 'blast',\n 'blatancy',\n 'blatantly',\n 'blazer',\n 'blazing',\n 'bleach',\n 'bleak',\n 'bleep',\n 'blemish',\n 'blend',\n 'bless',\n 'blighted',\n 'blimp',\n 'bling',\n 'blinked',\n 'blinker',\n 'blinking',\n 'blinks',\n 'blip',\n 'blissful',\n 'blitz',\n 'blizzard',\n 'bloated',\n 'bloating',\n 'blob',\n 'blog',\n 'bloomers',\n 'blooming',\n 'blooper',\n 'blot',\n 'blouse',\n 'blubber',\n 'bluff',\n 'bluish',\n 'blunderer',\n 'blunt',\n 'blurb',\n 'blurred',\n 'blurry',\n 'blurt',\n 'blush',\n 'blustery',\n 'boaster',\n 'boastful',\n 'boasting',\n 'boat',\n 'bobbed',\n 'bobbing',\n 'bobble',\n 'bobcat',\n 'bobsled',\n 'bobtail',\n 'bodacious',\n 'body',\n 'bogged',\n 'boggle',\n 'bogus',\n 'boil',\n 'bok',\n 'bolster',\n 'bolt',\n 'bonanza',\n 'bonded',\n 'bonding',\n 'bondless',\n 'boned',\n 'bonehead',\n 'boneless',\n 'bonelike',\n 'boney',\n 'bonfire',\n 'bonnet',\n 'bonsai',\n 'bonus',\n 'bony',\n 'boogeyman',\n 'boogieman',\n 'book',\n 'boondocks',\n 'booted',\n 'booth',\n 'bootie',\n 'booting',\n 'bootlace',\n 'bootleg',\n 'boots',\n 'boozy',\n 'borax',\n 'boring',\n 'borough',\n 'borrower',\n 'borrowing',\n 'boss',\n 'botanical',\n 'botanist',\n 'botany',\n 'botch',\n 'both',\n 'bottle',\n 'bottling',\n 'bottom',\n 'bounce',\n 'bouncing',\n 'bouncy',\n 'bounding',\n 'boundless',\n 'bountiful',\n 'bovine',\n 'boxcar',\n 'boxer',\n 'boxing',\n 'boxlike',\n 'boxy',\n 'breach',\n 'breath',\n 'breeches',\n 'breeching',\n 'breeder',\n 'breeding',\n 'breeze',\n 'breezy',\n 'brethren',\n 'brewery',\n 'brewing',\n 'briar',\n 'bribe',\n 'brick',\n 'bride',\n 'bridged',\n 'brigade',\n 'bright',\n 'brilliant',\n 'brim',\n 'bring',\n 'brink',\n 'brisket',\n 'briskly',\n 'briskness',\n 'bristle',\n 'brittle',\n 'broadband',\n 'broadcast',\n 'broaden',\n 'broadly',\n 'broadness',\n 'broadside',\n 'broadways',\n 'broiler',\n 'broiling',\n 'broken',\n 'broker',\n 'bronchial',\n 'bronco',\n 'bronze',\n 'bronzing',\n 'brook',\n 'broom',\n 'brought',\n 'browbeat',\n 'brownnose',\n 'browse',\n 'browsing',\n 'bruising',\n 'brunch',\n 'brunette',\n 'brunt',\n 'brush',\n 'brussels',\n 'brute',\n 'brutishly',\n 'bubble',\n 'bubbling',\n 'bubbly',\n 'buccaneer',\n 'bucked',\n 'bucket',\n 'buckle',\n 'buckshot',\n 'buckskin',\n 'bucktooth',\n 'buckwheat',\n 'buddhism',\n 'buddhist',\n 'budding',\n 'buddy',\n 'budget',\n 'buffalo',\n 'buffed',\n 'buffer',\n 'buffing',\n 'buffoon',\n 'buggy',\n 'bulb',\n 'bulge',\n 'bulginess',\n 'bulgur',\n 'bulk',\n 'bulldog',\n 'bulldozer',\n 'bullfight',\n 'bullfrog',\n 'bullhorn',\n 'bullion',\n 'bullish',\n 'bullpen',\n 'bullring',\n 'bullseye',\n 'bullwhip',\n 'bully',\n 'bunch',\n 'bundle',\n 'bungee',\n 'bunion',\n 'bunkbed',\n 'bunkhouse',\n 'bunkmate',\n 'bunny',\n 'bunt',\n 'busboy',\n 'bush',\n 'busily',\n 'busload',\n 'bust',\n 'busybody',\n 'buzz',\n 'cabana',\n 'cabbage',\n 'cabbie',\n 'cabdriver',\n 'cable',\n 'caboose',\n 'cache',\n 'cackle',\n 'cacti',\n 'cactus',\n 'caddie',\n 'caddy',\n 'cadet',\n 'cadillac',\n 'cadmium',\n 'cage',\n 'cahoots',\n 'cake',\n 'calamari',\n 'calamity',\n 'calcium',\n 'calculate',\n 'calculus',\n 'caliber',\n 'calibrate',\n 'calm',\n 'caloric',\n 'calorie',\n 'calzone',\n 'camcorder',\n 'cameo',\n 'camera',\n 'camisole',\n 'camper',\n 'campfire',\n 'camping',\n 'campsite',\n 'campus',\n 'canal',\n 'canary',\n 'cancel',\n 'candied',\n 'candle',\n 'candy',\n 'cane',\n 'canine',\n 'canister',\n 'cannabis',\n 'canned',\n 'canning',\n 'cannon',\n 'cannot',\n 'canola',\n 'canon',\n 'canopener',\n 'canopy',\n 'canteen',\n 'canyon',\n 'capable',\n 'capably',\n 'capacity',\n 'cape',\n 'capillary',\n 'capital',\n 'capitol',\n 'capped',\n 'capricorn',\n 'capsize',\n 'capsule',\n 'caption',\n 'captivate',\n 'captive',\n 'captivity',\n 'capture',\n 'caramel',\n 'carat',\n 'caravan',\n 'carbon',\n 'cardboard',\n 'carded',\n 'cardiac',\n 'cardigan',\n 'cardinal',\n 'cardstock',\n 'carefully',\n 'caregiver',\n 'careless',\n 'caress',\n 'caretaker',\n 'cargo',\n 'caring',\n 'carless',\n 'carload',\n 'carmaker',\n 'carnage',\n 'carnation',\n 'carnival',\n 'carnivore',\n 'carol',\n 'carpenter',\n 'carpentry',\n 'carpool',\n 'carport',\n 'carried',\n 'carrot',\n 'carrousel',\n 'carry',\n 'cartel',\n 'cartload',\n 'carton',\n 'cartoon',\n 'cartridge',\n 'cartwheel',\n 'carve',\n 'carving',\n 'carwash',\n 'cascade',\n 'case',\n 'cash',\n 'casing',\n 'casino',\n 'casket',\n 'cassette',\n 'casually',\n 'casualty',\n 'catacomb',\n 'catalog',\n 'catalyst',\n 'catalyze',\n 'catapult',\n 'cataract',\n 'catatonic',\n 'catcall',\n 'catchable',\n 'catcher',\n 'catching',\n 'catchy',\n 'caterer',\n 'catering',\n 'catfight',\n 'catfish',\n 'cathedral',\n 'cathouse',\n 'catlike',\n 'catnap',\n 'catnip',\n 'catsup',\n 'cattail',\n 'cattishly',\n 'cattle',\n 'catty',\n 'catwalk',\n 'caucasian',\n 'caucus',\n 'causal',\n 'causation',\n 'cause',\n 'causing',\n 'cauterize',\n 'caution',\n 'cautious',\n 'cavalier',\n 'cavalry',\n 'caviar',\n 'cavity',\n 'cedar',\n 'celery',\n 'celestial',\n 'celibacy',\n 'celibate',\n 'celtic',\n 'cement',\n 'census',\n 'ceramics',\n 'ceremony',\n 'certainly',\n 'certainty',\n 'certified',\n 'certify',\n 'cesarean',\n 'cesspool',\n 'chafe',\n 'chaffing',\n 'chain',\n 'chair',\n 'chalice',\n 'challenge',\n 'chamber',\n 'chamomile',\n 'champion',\n 'chance',\n 'change',\n 'channel',\n 'chant',\n 'chaos',\n 'chaperone',\n 'chaplain',\n 'chapped',\n 'chaps',\n 'chapter',\n 'character',\n 'charbroil',\n 'charcoal',\n 'charger',\n 'charging',\n 'chariot',\n 'charity',\n 'charm',\n 'charred',\n 'charter',\n 'charting',\n 'chase',\n 'chasing',\n 'chaste',\n 'chastise',\n 'chastity',\n 'chatroom',\n 'chatter',\n 'chatting',\n 'chatty',\n 'cheating',\n 'cheddar',\n 'cheek',\n 'cheer',\n 'cheese',\n 'cheesy',\n 'chef',\n 'chemicals',\n 'chemist',\n 'chemo',\n 'cherisher',\n 'cherub',\n 'chess',\n 'chest',\n 'chevron',\n 'chevy',\n 'chewable',\n 'chewer',\n 'chewing',\n 'chewy',\n 'chief',\n 'chihuahua',\n 'childcare',\n 'childhood',\n 'childish',\n 'childless',\n 'childlike',\n 'chili',\n 'chill',\n 'chimp',\n 'chip',\n 'chirping',\n 'chirpy',\n 'chitchat',\n 'chivalry',\n 'chive',\n 'chloride',\n 'chlorine',\n 'choice',\n 'chokehold',\n 'choking',\n 'chomp',\n 'chooser',\n 'choosing',\n 'choosy',\n 'chop',\n 'chosen',\n 'chowder',\n 'chowtime',\n 'chrome',\n 'chubby',\n 'chuck',\n 'chug',\n 'chummy',\n 'chump',\n 'chunk',\n 'churn',\n 'chute',\n 'cider',\n 'cilantro',\n 'cinch',\n 'cinema',\n 'cinnamon',\n 'circle',\n 'circling',\n 'circular',\n 'circulate',\n 'circus',\n 'citable',\n 'citadel',\n 'citation',\n 'citizen',\n 'citric',\n 'citrus',\n 'city',\n 'civic',\n 'civil',\n 'clad',\n 'claim',\n 'clambake',\n 'clammy',\n 'clamor',\n 'clamp',\n 'clamshell',\n 'clang',\n 'clanking',\n 'clapped',\n 'clapper',\n 'clapping',\n 'clarify',\n 'clarinet',\n 'clarity',\n 'clash',\n 'clasp',\n 'class',\n 'clatter',\n 'clause',\n 'clavicle',\n 'claw',\n 'clay',\n 'clean',\n 'clear',\n 'cleat',\n 'cleaver',\n 'cleft',\n 'clench',\n 'clergyman',\n 'clerical',\n 'clerk',\n 'clever',\n 'clicker',\n 'client',\n 'climate',\n 'climatic',\n 'cling',\n 'clinic',\n 'clinking',\n 'clip',\n 'clique',\n 'cloak',\n 'clobber',\n 'clock',\n 'clone',\n 'cloning',\n 'closable',\n 'closure',\n 'clothes',\n 'clothing',\n 'cloud',\n 'clover',\n 'clubbed',\n 'clubbing',\n 'clubhouse',\n 'clump',\n 'clumsily',\n 'clumsy',\n 'clunky',\n 'clustered',\n 'clutch',\n 'clutter',\n 'coach',\n 'coagulant',\n 'coastal',\n 'coaster',\n 'coasting',\n 'coastland',\n 'coastline',\n 'coat',\n 'coauthor',\n 'cobalt',\n 'cobbler',\n 'cobweb',\n 'cocoa',\n 'coconut',\n 'cod',\n 'coeditor',\n 'coerce',\n 'coexist',\n 'coffee',\n 'cofounder',\n 'cognition',\n 'cognitive',\n 'cogwheel',\n 'coherence',\n 'coherent',\n 'cohesive',\n 'coil',\n 'coke',\n 'cola',\n 'cold',\n 'coleslaw',\n 'coliseum',\n 'collage',\n 'collapse',\n 'collar',\n 'collected',\n 'collector',\n 'collide',\n 'collie',\n 'collision',\n 'colonial',\n 'colonist',\n 'colonize',\n 'colony',\n 'colossal',\n 'colt',\n 'coma',\n 'come',\n 'comfort',\n 'comfy',\n 'comic',\n 'coming',\n 'comma',\n 'commence',\n 'commend',\n 'comment',\n 'commerce',\n 'commode',\n 'commodity',\n 'commodore',\n 'common',\n 'commotion',\n 'commute',\n 'commuting',\n 'compacted',\n 'compacter',\n 'compactly',\n 'compactor',\n 'companion',\n 'company',\n 'compare',\n 'compel',\n 'compile',\n 'comply',\n 'component',\n 'composed',\n 'composer',\n 'composite',\n 'compost',\n 'composure',\n 'compound',\n 'compress',\n 'comprised',\n 'computer',\n 'computing',\n 'comrade',\n 'concave',\n 'conceal',\n 'conceded',\n 'concept',\n 'concerned',\n 'concert',\n 'conch',\n 'concierge',\n 'concise',\n 'conclude',\n 'concrete',\n 'concur',\n 'condense',\n 'condiment',\n 'condition',\n 'condone',\n 'conducive',\n 'conductor',\n 'conduit',\n 'cone',\n 'confess',\n 'confetti',\n 'confidant',\n 'confident',\n 'confider',\n 'confiding',\n 'configure',\n 'confined',\n 'confining',\n 'confirm',\n 'conflict',\n 'conform',\n 'confound',\n 'confront',\n 'confused',\n 'confusing',\n 'confusion',\n 'congenial',\n 'congested',\n 'congrats',\n 'congress',\n 'conical',\n 'conjoined',\n 'conjure',\n 'conjuror',\n 'connected',\n 'connector',\n 'consensus',\n 'consent',\n 'console',\n 'consoling',\n 'consonant',\n 'constable',\n 'constant',\n 'constrain',\n 'constrict',\n 'construct',\n 'consult',\n 'consumer',\n 'consuming',\n 'contact',\n 'container',\n 'contempt',\n 'contend',\n 'contented',\n 'contently',\n 'contents',\n 'contest',\n 'context',\n 'contort',\n 'contour',\n 'contrite',\n 'control',\n 'contusion',\n 'convene',\n 'convent',\n 'copartner',\n 'cope',\n 'copied',\n 'copier',\n 'copilot',\n 'coping',\n 'copious',\n 'copper',\n 'copy',\n 'coral',\n 'cork',\n 'cornball',\n 'cornbread',\n 'corncob',\n 'cornea',\n 'corned',\n 'corner',\n 'cornfield',\n 'cornflake',\n 'cornhusk',\n 'cornmeal',\n 'cornstalk',\n 'corny',\n 'coronary',\n 'coroner',\n 'corporal',\n 'corporate',\n 'corral',\n 'correct',\n 'corridor',\n 'corrode',\n 'corroding',\n 'corrosive',\n 'corsage',\n 'corset',\n 'cortex',\n 'cosigner',\n 'cosmetics',\n 'cosmic',\n 'cosmos',\n 'cosponsor',\n 'cost',\n 'cottage',\n 'cotton',\n 'couch',\n 'cough',\n 'could',\n 'countable',\n 'countdown',\n 'counting',\n 'countless',\n 'country',\n 'county',\n 'courier',\n 'covenant',\n 'cover',\n 'coveted',\n 'coveting',\n 'coyness',\n 'cozily',\n 'coziness',\n 'cozy',\n 'crabbing',\n 'crabgrass',\n 'crablike',\n 'crabmeat',\n 'cradle',\n 'cradling',\n 'crafter',\n 'craftily',\n 'craftsman',\n 'craftwork',\n 'crafty',\n 'cramp',\n 'cranberry',\n 'crane',\n 'cranial',\n 'cranium',\n 'crank',\n 'crate',\n 'crave',\n 'craving',\n 'crawfish',\n 'crawlers',\n 'crawling',\n 'crayfish',\n 'crayon',\n 'crazed',\n 'crazily',\n 'craziness',\n 'crazy',\n 'creamed',\n 'creamer',\n 'creamlike',\n 'crease',\n 'creasing',\n 'creatable',\n 'create',\n 'creation',\n 'creative',\n 'creature',\n 'credible',\n 'credibly',\n 'credit',\n 'creed',\n 'creme',\n 'creole',\n 'crepe',\n 'crept',\n 'crescent',\n 'crested',\n 'cresting',\n 'crestless',\n 'crevice',\n 'crewless',\n 'crewman',\n 'crewmate',\n 'crib',\n 'cricket',\n 'cried',\n 'crier',\n 'crimp',\n 'crimson',\n 'cringe',\n 'cringing',\n 'crinkle',\n 'crinkly',\n 'crisped',\n 'crisping',\n 'crisply',\n 'crispness',\n 'crispy',\n 'criteria',\n 'critter',\n 'croak',\n 'crock',\n 'crook',\n 'croon',\n 'crop',\n 'cross',\n 'crouch',\n 'crouton',\n 'crowbar',\n 'crowd',\n 'crown',\n 'crucial',\n 'crudely',\n 'crudeness',\n 'cruelly',\n 'cruelness',\n 'cruelty',\n 'crumb',\n 'crummiest',\n 'crummy',\n 'crumpet',\n 'crumpled',\n 'cruncher',\n 'crunching',\n 'crunchy',\n 'crusader',\n 'crushable',\n 'crushed',\n 'crusher',\n 'crushing',\n 'crust',\n 'crux',\n 'crying',\n 'cryptic',\n 'crystal',\n 'cubbyhole',\n 'cube',\n 'cubical',\n 'cubicle',\n 'cucumber',\n 'cuddle',\n 'cuddly',\n 'cufflink',\n 'culinary',\n 'culminate',\n 'culpable',\n 'culprit',\n 'cultivate',\n 'cultural',\n 'culture',\n 'cupbearer',\n 'cupcake',\n 'cupid',\n 'cupped',\n 'cupping',\n 'curable',\n 'curator',\n 'curdle',\n 'cure',\n 'curfew',\n 'curing',\n 'curled',\n 'curler',\n 'curliness',\n 'curling',\n 'curly',\n 'curry',\n 'curse',\n 'cursive',\n 'cursor',\n 'curtain',\n 'curtly',\n 'curtsy',\n 'curvature',\n 'curve',\n 'curvy',\n 'cushy',\n 'cusp',\n 'cussed',\n 'custard',\n 'custodian',\n 'custody',\n 'customary',\n 'customer',\n 'customize',\n 'customs',\n 'cut',\n 'cycle',\n 'cyclic',\n 'cycling',\n 'cyclist',\n 'cylinder',\n 'cymbal',\n 'cytoplasm',\n 'cytoplast',\n 'dab',\n 'dad',\n 'daffodil',\n 'dagger',\n 'daily',\n 'daintily',\n 'dainty',\n 'dairy',\n 'daisy',\n 'dallying',\n 'dance',\n 'dancing',\n 'dandelion',\n 'dander',\n 'dandruff',\n 'dandy',\n 'danger',\n 'dangle',\n 'dangling',\n 'daredevil',\n 'dares',\n 'daringly',\n 'darkened',\n 'darkening',\n 'darkish',\n 'darkness',\n 'darkroom',\n 'darling',\n 'darn',\n 'dart',\n 'darwinism',\n 'dash',\n 'dastardly',\n 'data',\n 'datebook',\n 'dating',\n 'daughter',\n 'daunting',\n 'dawdler',\n 'dawn',\n 'daybed',\n 'daybreak',\n 'daycare',\n 'daydream',\n 'daylight',\n 'daylong',\n 'dayroom',\n 'daytime',\n 'dazzler',\n 'dazzling',\n 'deacon',\n 'deafening',\n 'deafness',\n 'dealer',\n 'dealing',\n 'dealmaker',\n 'dealt',\n 'dean',\n 'debatable',\n 'debate',\n 'debating',\n 'debit',\n 'debrief',\n 'debtless',\n 'debtor',\n 'debug',\n 'debunk',\n 'decade',\n 'decaf',\n 'decal',\n 'decathlon',\n 'decay',\n 'deceased',\n 'deceit',\n 'deceiver',\n 'deceiving',\n 'december',\n 'decency',\n 'decent',\n 'deception',\n 'deceptive',\n 'decibel',\n 'decidable',\n 'decimal',\n 'decimeter',\n 'decipher',\n 'deck',\n 'declared',\n 'decline',\n 'decode',\n 'decompose',\n 'decorated',\n 'decorator',\n 'decoy',\n 'decrease',\n 'decree',\n 'dedicate',\n 'dedicator',\n 'deduce',\n 'deduct',\n 'deed',\n 'deem',\n 'deepen',\n 'deeply',\n 'deepness',\n 'deface',\n 'defacing',\n 'defame',\n 'default',\n 'defeat',\n 'defection',\n 'defective',\n 'defendant',\n 'defender',\n 'defense',\n 'defensive',\n 'deferral',\n 'deferred',\n 'defiance',\n 'defiant',\n 'defile',\n 'defiling',\n 'define',\n 'definite',\n 'deflate',\n 'deflation',\n 'deflator',\n 'deflected',\n 'deflector',\n 'defog',\n 'deforest',\n 'defraud',\n 'defrost',\n 'deftly',\n 'defuse',\n 'defy',\n 'degraded',\n 'degrading',\n 'degrease',\n 'degree',\n 'dehydrate',\n 'deity',\n 'dejected',\n 'delay',\n 'delegate',\n 'delegator',\n 'delete',\n 'deletion',\n 'delicacy',\n 'delicate',\n 'delicious',\n 'delighted',\n 'delirious',\n 'delirium',\n 'deliverer',\n 'delivery',\n 'delouse',\n 'delta',\n 'deluge',\n 'delusion',\n 'deluxe',\n 'demanding',\n 'demeaning',\n 'demeanor',\n 'demise',\n 'democracy',\n 'democrat',\n 'demote',\n 'demotion',\n 'demystify',\n 'denatured',\n 'deniable',\n 'denial',\n 'denim',\n 'denote',\n 'dense',\n 'density',\n 'dental',\n 'dentist',\n 'denture',\n 'deny',\n 'deodorant',\n 'deodorize',\n 'departed',\n 'departure',\n 'depict',\n 'deplete',\n 'depletion',\n 'deplored',\n 'deploy',\n 'deport',\n 'depose',\n 'depraved',\n 'depravity',\n 'deprecate',\n 'depress',\n 'deprive',\n 'depth',\n 'deputize',\n 'deputy',\n 'derail',\n 'deranged',\n 'derby',\n 'derived',\n 'desecrate',\n 'deserve',\n 'deserving',\n 'designate',\n 'designed',\n 'designer',\n 'designing',\n 'deskbound',\n 'desktop',\n 'deskwork',\n 'desolate',\n 'despair',\n 'despise',\n 'despite',\n 'destiny',\n 'destitute',\n 'destruct',\n 'detached',\n 'detail',\n 'detection',\n 'detective',\n 'detector',\n 'detention',\n 'detergent',\n 'detest',\n 'detonate',\n 'detonator',\n 'detoxify',\n 'detract',\n 'deuce',\n 'devalue',\n 'deviancy',\n 'deviant',\n 'deviate',\n 'deviation',\n 'deviator',\n 'device',\n 'devious',\n 'devotedly',\n 'devotee',\n 'devotion',\n 'devourer',\n 'devouring',\n 'devoutly',\n 'dexterity',\n 'dexterous',\n 'diabetes',\n 'diabetic',\n 'diabolic',\n 'diagnoses',\n 'diagnosis',\n 'diagram',\n 'dial',\n 'diameter',\n 'diaper',\n 'diaphragm',\n 'diary',\n 'dice',\n 'dicing',\n 'dictate',\n 'dictation',\n 'dictator',\n 'difficult',\n 'diffused',\n 'diffuser',\n 'diffusion',\n 'diffusive',\n 'dig',\n 'dilation',\n 'diligence',\n 'diligent',\n 'dill',\n 'dilute',\n 'dime',\n 'diminish',\n 'dimly',\n 'dimmed',\n 'dimmer',\n 'dimness',\n 'dimple',\n 'diner',\n 'dingbat',\n 'dinghy',\n 'dinginess',\n 'dingo',\n 'dingy',\n 'dining',\n 'dinner',\n 'diocese',\n 'dioxide',\n 'diploma',\n 'dipped',\n 'dipper',\n 'dipping',\n 'directed',\n 'direction',\n 'directive',\n 'directly',\n 'directory',\n 'direness',\n 'dirtiness',\n 'disabled',\n 'disagree',\n 'disallow',\n 'disarm',\n 'disarray',\n 'disaster',\n 'disband',\n 'disbelief',\n 'disburse',\n 'discard',\n 'discern',\n 'discharge',\n 'disclose',\n 'discolor',\n 'discount',\n 'discourse',\n 'discover',\n 'discuss',\n 'disdain',\n 'disengage',\n 'disfigure',\n 'disgrace',\n 'dish',\n 'disinfect',\n 'disjoin',\n 'disk',\n 'dislike',\n 'disliking',\n 'dislocate',\n 'dislodge',\n 'disloyal',\n 'dismantle',\n 'dismay',\n 'dismiss',\n 'dismount',\n 'disobey',\n 'disorder',\n 'disown',\n 'disparate',\n 'disparity',\n 'dispatch',\n 'dispense',\n 'dispersal',\n 'dispersed',\n 'disperser',\n 'displace',\n 'display',\n 'displease',\n 'disposal',\n 'dispose',\n 'disprove',\n 'dispute',\n 'disregard',\n 'disrupt',\n 'dissuade',\n 'distance',\n 'distant',\n 'distaste',\n 'distill',\n 'distinct',\n 'distort',\n 'distract',\n 'distress',\n 'district',\n 'distrust',\n 'ditch',\n 'ditto',\n 'ditzy',\n 'dividable',\n 'divided',\n 'dividend',\n 'dividers',\n 'dividing',\n 'divinely',\n 'diving',\n 'divinity',\n 'divisible',\n 'divisibly',\n 'division',\n 'divisive',\n 'divorcee',\n 'dizziness',\n 'dizzy',\n 'doable',\n 'docile',\n 'dock',\n 'doctrine',\n 'document',\n 'dodge',\n 'dodgy',\n 'doily',\n 'doing',\n 'dole',\n 'dollar',\n 'dollhouse',\n 'dollop',\n 'dolly',\n 'dolphin',\n 'domain',\n 'domelike',\n 'domestic',\n 'dominion',\n 'dominoes',\n 'donated',\n 'donation',\n 'donator',\n 'donor',\n 'donut',\n 'doodle',\n 'doorbell',\n 'doorframe',\n 'doorknob',\n 'doorman',\n 'doormat',\n 'doornail',\n 'doorpost',\n 'doorstep',\n 'doorstop',\n 'doorway',\n 'doozy',\n 'dork',\n 'dormitory',\n 'dorsal',\n 'dosage',\n 'dose',\n 'dotted',\n 'doubling',\n 'douche',\n 'dove',\n 'down',\n 'dowry',\n 'doze',\n 'drab',\n 'dragging',\n 'dragonfly',\n 'dragonish',\n 'dragster',\n 'drainable',\n 'drainage',\n 'drained',\n 'drainer',\n 'drainpipe',\n 'dramatic',\n 'dramatize',\n 'drank',\n 'drapery',\n 'drastic',\n 'draw',\n 'dreaded',\n 'dreadful',\n 'dreadlock',\n 'dreamboat',\n 'dreamily',\n 'dreamland',\n 'dreamless',\n 'dreamlike',\n 'dreamt',\n 'dreamy',\n 'drearily',\n 'dreary',\n 'drench',\n 'dress',\n 'drew',\n 'dribble',\n 'dried',\n 'drier',\n 'drift',\n 'driller',\n 'drilling',\n 'drinkable',\n 'drinking',\n 'dripping',\n 'drippy',\n 'drivable',\n 'driven',\n 'driver',\n 'driveway',\n 'driving',\n 'drizzle',\n 'drizzly',\n 'drone',\n 'drool',\n 'droop',\n 'drop-down',\n 'dropbox',\n 'dropkick',\n 'droplet',\n 'dropout',\n 'dropper',\n 'drove',\n 'drown',\n 'drowsily',\n 'drudge',\n 'drum',\n 'dry',\n 'dubbed',\n 'dubiously',\n 'duchess',\n 'duckbill',\n 'ducking',\n 'duckling',\n 'ducktail',\n 'ducky',\n 'duct',\n 'dude',\n 'duffel',\n 'dugout',\n 'duh',\n 'duke',\n 'duller',\n 'dullness',\n 'duly',\n 'dumping',\n 'dumpling',\n 'dumpster',\n 'duo',\n 'dupe',\n 'duplex',\n 'duplicate',\n 'duplicity',\n 'durable',\n 'durably',\n 'duration',\n 'duress',\n 'during',\n 'dusk',\n 'dust',\n 'dutiful',\n 'duty',\n 'duvet',\n 'dwarf',\n 'dweeb',\n 'dwelled',\n 'dweller',\n 'dwelling',\n 'dwindle',\n 'dwindling',\n 'dynamic',\n 'dynamite',\n 'dynasty',\n 'dyslexia',\n 'dyslexic',\n 'each',\n 'eagle',\n 'earache',\n 'eardrum',\n 'earflap',\n 'earful',\n 'earlobe',\n 'early',\n 'earmark',\n 'earmuff',\n 'earphone',\n 'earpiece',\n 'earplugs',\n 'earring',\n 'earshot',\n 'earthen',\n 'earthlike',\n 'earthling',\n 'earthly',\n 'earthworm',\n 'earthy',\n 'earwig',\n 'easeful',\n 'easel',\n 'easiest',\n 'easily',\n 'easiness',\n 'easing',\n 'eastbound',\n 'eastcoast',\n 'easter',\n 'eastward',\n 'eatable',\n 'eaten',\n 'eatery',\n 'eating',\n 'eats',\n 'ebay',\n 'ebony',\n 'ebook',\n 'ecard',\n 'eccentric',\n 'echo',\n 'eclair',\n 'eclipse',\n 'ecologist',\n 'ecology',\n 'economic',\n 'economist',\n 'economy',\n 'ecosphere',\n 'ecosystem',\n 'edge',\n 'edginess',\n 'edging',\n 'edgy',\n 'edition',\n 'editor',\n 'educated',\n 'education',\n 'educator',\n 'eel',\n 'effective',\n 'effects',\n 'efficient',\n 'effort',\n 'eggbeater',\n 'egging',\n 'eggnog',\n 'eggplant',\n 'eggshell',\n 'egomaniac',\n 'egotism',\n 'egotistic',\n 'either',\n 'eject',\n 'elaborate',\n 'elastic',\n 'elated',\n 'elbow',\n 'eldercare',\n 'elderly',\n 'eldest',\n 'electable',\n 'election',\n 'elective',\n 'elephant',\n 'elevate',\n 'elevating',\n 'elevation',\n 'elevator',\n 'eleven',\n 'elf',\n 'eligible',\n 'eligibly',\n 'eliminate',\n 'elite',\n 'elitism',\n 'elixir',\n 'elk',\n 'ellipse',\n 'elliptic',\n 'elm',\n 'elongated',\n 'elope',\n 'eloquence',\n 'eloquent',\n 'elsewhere',\n 'elude',\n 'elusive',\n 'elves',\n 'email',\n 'embargo',\n 'embark',\n 'embassy',\n 'embattled',\n 'embellish',\n 'ember',\n 'embezzle',\n 'emblaze',\n 'emblem',\n 'embody',\n 'embolism',\n 'emboss',\n 'embroider',\n 'emcee',\n 'emerald',\n 'emergency',\n 'emission',\n 'emit',\n 'emote',\n 'emoticon',\n 'emotion',\n 'empathic',\n 'empathy',\n 'emperor',\n 'emphases',\n 'emphasis',\n 'emphasize',\n 'emphatic',\n 'empirical',\n 'employed',\n 'employee',\n 'employer',\n 'emporium',\n 'empower',\n 'emptier',\n 'emptiness',\n 'empty',\n 'emu',\n 'enable',\n 'enactment',\n 'enamel',\n 'enchanted',\n 'enchilada',\n 'encircle',\n 'enclose',\n 'enclosure',\n 'encode',\n 'encore',\n 'encounter',\n 'encourage',\n 'encroach',\n 'encrust',\n 'encrypt',\n 'endanger',\n 'endeared',\n 'endearing',\n 'ended',\n 'ending',\n 'endless',\n 'endnote',\n 'endocrine',\n 'endorphin',\n 'endorse',\n 'endowment',\n 'endpoint',\n 'endurable',\n 'endurance',\n 'enduring',\n 'energetic',\n 'energize',\n 'energy',\n 'enforced',\n 'enforcer',\n 'engaged',\n 'engaging',\n 'engine',\n 'engorge',\n 'engraved',\n 'engraver',\n 'engraving',\n 'engross',\n 'engulf',\n 'enhance',\n 'enigmatic',\n 'enjoyable',\n 'enjoyably',\n 'enjoyer',\n 'enjoying',\n 'enjoyment',\n 'enlarged',\n 'enlarging',\n 'enlighten',\n 'enlisted',\n 'enquirer',\n 'enrage',\n 'enrich',\n 'enroll',\n 'enslave',\n 'ensnare',\n 'ensure',\n 'entail',\n 'entangled',\n 'entering',\n 'entertain',\n 'enticing',\n 'entire',\n 'entitle',\n 'entity',\n 'entomb',\n 'entourage',\n 'entrap',\n 'entree',\n 'entrench',\n 'entrust',\n 'entryway',\n 'entwine',\n 'enunciate',\n 'envelope',\n 'enviable',\n 'enviably',\n 'envious',\n 'envision',\n 'envoy',\n 'envy',\n 'enzyme',\n 'epic',\n 'epidemic',\n 'epidermal',\n 'epidermis',\n 'epidural',\n 'epilepsy',\n 'epileptic',\n 'epilogue',\n 'epiphany',\n 'episode',\n 'equal',\n 'equate',\n 'equation',\n 'equator',\n 'equinox',\n 'equipment',\n 'equity',\n 'equivocal',\n 'eradicate',\n 'erasable',\n 'erased',\n 'eraser',\n 'erasure',\n 'ergonomic',\n 'errand',\n 'errant',\n 'erratic',\n 'error',\n 'erupt',\n 'escalate',\n 'escalator',\n 'escapable',\n 'escapade',\n 'escapist',\n 'escargot',\n 'eskimo',\n 'esophagus',\n 'espionage',\n 'espresso',\n 'esquire',\n 'essay',\n 'essence',\n 'essential',\n 'establish',\n 'estate',\n 'esteemed',\n 'estimate',\n 'estimator',\n 'estranged',\n 'estrogen',\n 'etching',\n 'eternal',\n 'eternity',\n 'ethanol',\n 'ether',\n 'ethically',\n 'ethics',\n 'euphemism',\n 'evacuate',\n 'evacuee',\n 'evade',\n 'evaluate',\n 'evaluator',\n 'evaporate',\n 'evasion',\n 'evasive',\n 'even',\n 'everglade',\n 'evergreen',\n 'everybody',\n 'everyday',\n 'everyone',\n 'evict',\n 'evidence',\n 'evident',\n 'evil',\n 'evoke',\n 'evolution',\n 'evolve',\n 'exact',\n 'exalted',\n 'example',\n 'excavate',\n 'excavator',\n 'exceeding',\n 'exception',\n 'excess',\n 'exchange',\n 'excitable',\n 'exciting',\n 'exclaim',\n 'exclude',\n 'excluding',\n 'exclusion',\n 'exclusive',\n 'excretion',\n 'excretory',\n 'excursion',\n 'excusable',\n 'excusably',\n 'excuse',\n 'exemplary',\n 'exemplify',\n 'exemption',\n 'exerciser',\n 'exert',\n 'exes',\n 'exfoliate',\n 'exhale',\n 'exhaust',\n 'exhume',\n 'exile',\n 'existing',\n 'exit',\n 'exodus',\n 'exonerate',\n 'exorcism',\n 'exorcist',\n 'expand',\n 'expanse',\n 'expansion',\n 'expansive',\n 'expectant',\n 'expedited',\n 'expediter',\n 'expel',\n 'expend',\n 'expenses',\n 'expensive',\n 'expert',\n 'expire',\n 'expiring',\n 'explain',\n 'expletive',\n 'explicit',\n 'explode',\n 'exploit',\n 'explore',\n 'exploring',\n 'exponent',\n 'exporter',\n 'exposable',\n 'expose',\n 'exposure',\n 'express',\n 'expulsion',\n 'exquisite',\n 'extended',\n 'extending',\n 'extent',\n 'extenuate',\n 'exterior',\n 'external',\n 'extinct',\n 'extortion',\n 'extradite',\n 'extras',\n 'extrovert',\n 'extrude',\n 'extruding',\n 'exuberant',\n 'fable',\n 'fabric',\n 'fabulous',\n 'facebook',\n 'facecloth',\n 'facedown',\n 'faceless',\n 'facelift',\n 'faceplate',\n 'faceted',\n 'facial',\n 'facility',\n 'facing',\n 'facsimile',\n 'faction',\n 'factoid',\n 'factor',\n 'factsheet',\n 'factual',\n 'faculty',\n 'fade',\n 'fading',\n 'failing',\n 'falcon',\n 'fall',\n 'false',\n 'falsify',\n 'fame',\n 'familiar',\n 'family',\n 'famine',\n 'famished',\n 'fanatic',\n 'fancied',\n 'fanciness',\n 'fancy',\n 'fanfare',\n 'fang',\n 'fanning',\n 'fantasize',\n 'fantastic',\n 'fantasy',\n 'fascism',\n 'fastball',\n 'faster',\n 'fasting',\n 'fastness',\n 'faucet',\n 'favorable',\n 'favorably',\n 'favored',\n 'favoring',\n 'favorite',\n 'fax',\n 'feast',\n 'federal',\n 'fedora',\n 'feeble',\n 'feed',\n 'feel',\n 'feisty',\n 'feline',\n 'felt-tip',\n 'feminine',\n 'feminism',\n 'feminist',\n 'feminize',\n 'femur',\n 'fence',\n 'fencing',\n 'fender',\n 'ferment',\n 'fernlike',\n 'ferocious',\n 'ferocity',\n 'ferret',\n 'ferris',\n 'ferry',\n 'fervor',\n 'fester',\n 'festival',\n 'festive',\n 'festivity',\n 'fetal',\n 'fetch',\n 'fever',\n 'fiber',\n 'fiction',\n 'fiddle',\n 'fiddling',\n 'fidelity',\n 'fidgeting',\n 'fidgety',\n 'fifteen',\n 'fifth',\n 'fiftieth',\n 'fifty',\n 'figment',\n 'figure',\n 'figurine',\n 'filing',\n 'filled',\n 'filler',\n 'filling',\n 'film',\n 'filter',\n 'filth',\n 'filtrate',\n 'finale',\n 'finalist',\n 'finalize',\n 'finally',\n 'finance',\n 'financial',\n 'finch',\n 'fineness',\n 'finer',\n 'finicky',\n 'finished',\n 'finisher',\n 'finishing',\n 'finite',\n 'finless',\n 'finlike',\n 'fiscally',\n 'fit',\n 'five',\n 'flaccid',\n 'flagman',\n 'flagpole',\n 'flagship',\n 'flagstick',\n 'flagstone',\n 'flail',\n 'flakily',\n 'flaky',\n 'flame',\n 'flammable',\n 'flanked',\n 'flanking',\n 'flannels',\n 'flap',\n 'flaring',\n 'flashback',\n 'flashbulb',\n 'flashcard',\n 'flashily',\n 'flashing',\n 'flashy',\n 'flask',\n 'flatbed',\n 'flatfoot',\n 'flatly',\n 'flatness',\n 'flatten',\n 'flattered',\n 'flatterer',\n 'flattery',\n 'flattop',\n 'flatware',\n 'flatworm',\n 'flavored',\n 'flavorful',\n 'flavoring',\n 'flaxseed',\n 'fled',\n 'fleshed',\n 'fleshy',\n 'flick',\n 'flier',\n 'flight',\n 'flinch',\n 'fling',\n 'flint',\n 'flip',\n 'flirt',\n 'float',\n 'flock',\n 'flogging',\n 'flop',\n 'floral',\n 'florist',\n 'floss',\n 'flounder',\n 'flyable',\n 'flyaway',\n 'flyer',\n 'flying',\n 'flyover',\n 'flypaper',\n 'foam',\n 'foe',\n 'fog',\n 'foil',\n 'folic',\n 'folk',\n 'follicle',\n 'follow',\n 'fondling',\n 'fondly',\n 'fondness',\n 'fondue',\n 'font',\n 'food',\n 'fool',\n 'footage',\n 'football',\n 'footbath',\n 'footboard',\n 'footer',\n 'footgear',\n 'foothill',\n 'foothold',\n 'footing',\n 'footless',\n 'footman',\n 'footnote',\n 'footpad',\n 'footpath',\n 'footprint',\n 'footrest',\n 'footsie',\n 'footsore',\n 'footwear',\n 'footwork',\n 'fossil',\n 'foster',\n 'founder',\n 'founding',\n 'fountain',\n 'fox',\n 'foyer',\n 'fraction',\n 'fracture',\n 'fragile',\n 'fragility',\n 'fragment',\n 'fragrance',\n 'fragrant',\n 'frail',\n 'frame',\n 'framing',\n 'frantic',\n 'fraternal',\n 'frayed',\n 'fraying',\n 'frays',\n 'freckled',\n 'freckles',\n 'freebase',\n 'freebee',\n 'freebie',\n 'freedom',\n 'freefall',\n 'freehand',\n 'freeing',\n 'freeload',\n 'freely',\n 'freemason',\n 'freeness',\n 'freestyle',\n 'freeware',\n 'freeway',\n 'freewill',\n 'freezable',\n 'freezing',\n 'freight',\n 'french',\n 'frenzied',\n 'frenzy',\n 'frequency',\n 'frequent',\n 'fresh',\n 'fretful',\n 'fretted',\n 'friction',\n 'friday',\n 'fridge',\n 'fried',\n 'friend',\n 'frighten',\n 'frightful',\n 'frigidity',\n 'frigidly',\n 'frill',\n 'fringe',\n 'frisbee',\n 'frisk',\n 'fritter',\n 'frivolous',\n 'frolic',\n 'from',\n 'front',\n 'frostbite',\n 'frosted',\n 'frostily',\n 'frosting',\n 'frostlike',\n 'frosty',\n 'froth',\n 'frown',\n 'frozen',\n 'fructose',\n 'frugality',\n 'frugally',\n 'fruit',\n 'frustrate',\n 'frying',\n 'gab',\n 'gaffe',\n 'gag',\n 'gainfully',\n 'gaining',\n 'gains',\n 'gala',\n 'gallantly',\n 'galleria',\n 'gallery',\n 'galley',\n 'gallon',\n 'gallows',\n 'gallstone',\n 'galore',\n 'galvanize',\n 'gambling',\n 'game',\n 'gaming',\n 'gamma',\n 'gander',\n 'gangly',\n 'gangrene',\n 'gangway',\n 'gap',\n 'garage',\n 'garbage',\n 'garden',\n 'gargle',\n 'garland',\n 'garlic',\n 'garment',\n 'garnet',\n 'garnish',\n 'garter',\n 'gas',\n 'gatherer',\n 'gathering',\n 'gating',\n 'gauging',\n 'gauntlet',\n 'gauze',\n 'gave',\n 'gawk',\n 'gazing',\n 'gear',\n 'gecko',\n 'geek',\n 'geiger',\n 'gem',\n 'gender',\n 'generic',\n 'generous',\n 'genetics',\n 'genre',\n 'gentile',\n 'gentleman',\n 'gently',\n 'gents',\n 'geography',\n 'geologic',\n 'geologist',\n 'geology',\n 'geometric',\n 'geometry',\n 'geranium',\n 'gerbil',\n 'geriatric',\n 'germicide',\n 'germinate',\n 'germless',\n 'germproof',\n 'gestate',\n 'gestation',\n 'gesture',\n 'getaway',\n 'getting',\n 'getup',\n 'giant',\n 'gibberish',\n 'giblet',\n 'giddily',\n 'giddiness',\n 'giddy',\n 'gift',\n 'gigabyte',\n 'gigahertz',\n 'gigantic',\n 'giggle',\n 'giggling',\n 'giggly',\n 'gigolo',\n 'gilled',\n 'gills',\n 'gimmick',\n 'girdle',\n 'giveaway',\n 'given',\n 'giver',\n 'giving',\n 'gizmo',\n 'gizzard',\n 'glacial',\n 'glacier',\n 'glade',\n 'gladiator',\n 'gladly',\n 'glamorous',\n 'glamour',\n 'glance',\n 'glancing',\n 'glandular',\n 'glare',\n 'glaring',\n 'glass',\n 'glaucoma',\n 'glazing',\n 'gleaming',\n 'gleeful',\n 'glider',\n 'gliding',\n 'glimmer',\n 'glimpse',\n 'glisten',\n 'glitch',\n 'glitter',\n 'glitzy',\n 'gloater',\n 'gloating',\n 'gloomily',\n 'gloomy',\n 'glorified',\n 'glorifier',\n 'glorify',\n 'glorious',\n 'glory',\n 'gloss',\n 'glove',\n 'glowing',\n 'glowworm',\n 'glucose',\n 'glue',\n 'gluten',\n 'glutinous',\n 'glutton',\n 'gnarly',\n 'gnat',\n 'goal',\n 'goatskin',\n 'goes',\n 'goggles',\n 'going',\n 'goldfish',\n 'goldmine',\n 'goldsmith',\n 'golf',\n 'goliath',\n 'gonad',\n 'gondola',\n 'gone',\n 'gong',\n 'good',\n 'gooey',\n 'goofball',\n 'goofiness',\n 'goofy',\n 'google',\n 'goon',\n 'gopher',\n 'gore',\n 'gorged',\n 'gorgeous',\n 'gory',\n 'gosling',\n 'gossip',\n 'gothic',\n 'gotten',\n 'gout',\n 'gown',\n 'grab',\n 'graceful',\n 'graceless',\n 'gracious',\n 'gradation',\n 'graded',\n 'grader',\n 'gradient',\n 'grading',\n 'gradually',\n 'graduate',\n 'graffiti',\n 'grafted',\n 'grafting',\n 'grain',\n 'granddad',\n 'grandkid',\n 'grandly',\n 'grandma',\n 'grandpa',\n 'grandson',\n 'granite',\n 'granny',\n 'granola',\n 'grant',\n 'granular',\n 'grape',\n 'graph',\n 'grapple',\n 'grappling',\n 'grasp',\n 'grass',\n 'gratified',\n 'gratify',\n 'grating',\n 'gratitude',\n 'gratuity',\n 'gravel',\n 'graveness',\n 'graves',\n 'graveyard',\n 'gravitate',\n 'gravity',\n 'gravy',\n 'gray',\n 'grazing',\n 'greasily',\n 'greedily',\n 'greedless',\n 'greedy',\n 'green',\n 'greeter',\n 'greeting',\n 'grew',\n 'greyhound',\n 'grid',\n 'grief',\n 'grievance',\n 'grieving',\n 'grievous',\n 'grill',\n 'grimace',\n 'grimacing',\n 'grime',\n 'griminess',\n 'grimy',\n 'grinch',\n 'grinning',\n 'grip',\n 'gristle',\n 'grit',\n 'groggily',\n 'groggy',\n 'groin',\n 'groom',\n 'groove',\n 'grooving',\n 'groovy',\n 'grope',\n 'ground',\n 'grouped',\n 'grout',\n 'grove',\n 'grower',\n 'growing',\n 'growl',\n 'grub',\n 'grudge',\n 'grudging',\n 'grueling',\n 'gruffly',\n 'grumble',\n 'grumbling',\n 'grumbly',\n 'grumpily',\n 'grunge',\n 'grunt',\n 'guacamole',\n 'guidable',\n 'guidance',\n 'guide',\n 'guiding',\n 'guileless',\n 'guise',\n 'gulf',\n 'gullible',\n 'gully',\n 'gulp',\n 'gumball',\n 'gumdrop',\n 'gumminess',\n 'gumming',\n 'gummy',\n 'gurgle',\n 'gurgling',\n 'guru',\n 'gush',\n 'gusto',\n 'gusty',\n 'gutless',\n 'guts',\n 'gutter',\n 'guy',\n 'guzzler',\n 'gyration',\n 'habitable',\n 'habitant',\n 'habitat',\n 'habitual',\n 'hacked',\n 'hacker',\n 'hacking',\n 'hacksaw',\n 'had',\n 'haggler',\n 'haiku',\n 'half',\n 'halogen',\n 'halt',\n 'halved',\n 'halves',\n 'hamburger',\n 'hamlet',\n 'hammock',\n 'hamper',\n 'hamster',\n 'hamstring',\n 'handbag',\n 'handball',\n 'handbook',\n 'handbrake',\n 'handcart',\n 'handclap',\n 'handclasp',\n 'handcraft',\n 'handcuff',\n 'handed',\n 'handful',\n 'handgrip',\n 'handgun',\n 'handheld',\n 'handiness',\n 'handiwork',\n 'handlebar',\n 'handled',\n 'handler',\n 'handling',\n 'handmade',\n 'handoff',\n 'handpick',\n 'handprint',\n 'handrail',\n 'handsaw',\n 'handset',\n 'handsfree',\n 'handshake',\n 'handstand',\n 'handwash',\n 'handwork',\n 'handwoven',\n 'handwrite',\n 'handyman',\n 'hangnail',\n 'hangout',\n 'hangover',\n 'hangup',\n 'hankering',\n 'hankie',\n 'hanky',\n 'haphazard',\n 'happening',\n 'happier',\n 'happiest',\n 'happily',\n 'happiness',\n 'happy',\n 'harbor',\n 'hardcopy',\n 'hardcore',\n 'hardcover',\n 'harddisk',\n 'hardened',\n 'hardener',\n 'hardening',\n 'hardhat',\n 'hardhead',\n 'hardiness',\n 'hardly',\n 'hardness',\n 'hardship',\n 'hardware',\n 'hardwired',\n 'hardwood',\n 'hardy',\n 'harmful',\n 'harmless',\n 'harmonica',\n 'harmonics',\n 'harmonize',\n 'harmony',\n 'harness',\n 'harpist',\n 'harsh',\n 'harvest',\n 'hash',\n 'hassle',\n 'haste',\n 'hastily',\n 'hastiness',\n 'hasty',\n 'hatbox',\n 'hatchback',\n 'hatchery',\n 'hatchet',\n 'hatching',\n 'hatchling',\n 'hate',\n 'hatless',\n 'hatred',\n 'haunt',\n 'haven',\n 'hazard',\n 'hazelnut',\n 'hazily',\n 'haziness',\n 'hazing',\n 'hazy',\n 'headache',\n 'headband',\n 'headboard',\n 'headcount',\n 'headdress',\n 'headed',\n 'header',\n 'headfirst',\n 'headgear',\n 'heading',\n 'headlamp',\n 'headless',\n 'headlock',\n 'headphone',\n 'headpiece',\n 'headrest',\n 'headroom',\n 'headscarf',\n 'headset',\n 'headsman',\n 'headstand',\n 'headstone',\n 'headway',\n 'headwear',\n 'heap',\n 'heat',\n 'heave',\n 'heavily',\n 'heaviness',\n 'heaving',\n 'hedge',\n 'hedging',\n 'heftiness',\n 'hefty',\n 'helium',\n 'helmet',\n 'helper',\n 'helpful',\n 'helping',\n 'helpless',\n 'helpline',\n 'hemlock',\n 'hemstitch',\n 'hence',\n 'henchman',\n 'henna',\n 'herald',\n 'herbal',\n 'herbicide',\n 'herbs',\n 'heritage',\n 'hermit',\n 'heroics',\n 'heroism',\n 'herring',\n 'herself',\n 'hertz',\n 'hesitancy',\n 'hesitant',\n 'hesitate',\n 'hexagon',\n 'hexagram',\n 'hubcap',\n 'huddle',\n 'huddling',\n 'huff',\n 'hug',\n 'hula',\n 'hulk',\n 'hull',\n 'human',\n 'humble',\n 'humbling',\n 'humbly',\n 'humid',\n 'humiliate',\n 'humility',\n 'humming',\n 'hummus',\n 'humongous',\n 'humorist',\n 'humorless',\n 'humorous',\n 'humpback',\n 'humped',\n 'humvee',\n 'hunchback',\n 'hundredth',\n 'hunger',\n 'hungrily',\n 'hungry',\n 'hunk',\n 'hunter',\n 'hunting',\n 'huntress',\n 'huntsman',\n 'hurdle',\n 'hurled',\n 'hurler',\n 'hurling',\n 'hurray',\n 'hurricane',\n 'hurried',\n 'hurry',\n 'hurt',\n 'husband',\n 'hush',\n 'husked',\n 'huskiness',\n 'hut',\n 'hybrid',\n 'hydrant',\n 'hydrated',\n 'hydration',\n 'hydrogen',\n 'hydroxide',\n 'hyperlink',\n 'hypertext',\n 'hyphen',\n 'hypnoses',\n 'hypnosis',\n 'hypnotic',\n 'hypnotism',\n 'hypnotist',\n 'hypnotize',\n 'hypocrisy',\n 'hypocrite',\n 'ibuprofen',\n 'ice',\n 'iciness',\n 'icing',\n 'icky',\n 'icon',\n 'icy',\n 'idealism',\n 'idealist',\n 'idealize',\n 'ideally',\n 'idealness',\n 'identical',\n 'identify',\n 'identity',\n 'ideology',\n 'idiocy',\n 'idiom',\n 'idly',\n 'igloo',\n 'ignition',\n 'ignore',\n 'iguana',\n 'illicitly',\n 'illusion',\n 'illusive',\n 'image',\n 'imaginary',\n 'imagines',\n 'imaging',\n 'imbecile',\n 'imitate',\n 'imitation',\n 'immature',\n 'immerse',\n 'immersion',\n 'imminent',\n 'immobile',\n 'immodest',\n 'immorally',\n 'immortal',\n 'immovable',\n 'immovably',\n 'immunity',\n 'immunize',\n 'impaired',\n 'impale',\n 'impart',\n 'impatient',\n 'impeach',\n 'impeding',\n 'impending',\n 'imperfect',\n 'imperial',\n 'impish',\n 'implant',\n 'implement',\n 'implicate',\n 'implicit',\n 'implode',\n 'implosion',\n 'implosive',\n 'imply',\n 'impolite',\n 'important',\n 'importer',\n 'impose',\n 'imposing',\n 'impotence',\n 'impotency',\n 'impotent',\n 'impound',\n 'imprecise',\n 'imprint',\n 'imprison',\n 'impromptu',\n 'improper',\n 'improve',\n 'improving',\n 'improvise',\n 'imprudent',\n 'impulse',\n 'impulsive',\n 'impure',\n 'impurity',\n 'iodine',\n 'iodize',\n 'ion',\n 'ipad',\n 'iphone',\n 'ipod',\n 'irate',\n 'irk',\n 'iron',\n 'irregular',\n 'irrigate',\n 'irritable',\n 'irritably',\n 'irritant',\n 'irritate',\n 'islamic',\n 'islamist',\n 'isolated',\n 'isolating',\n 'isolation',\n 'isotope',\n 'issue',\n 'issuing',\n 'italicize',\n 'italics',\n 'item',\n 'itinerary',\n 'itunes',\n 'ivory',\n 'ivy',\n 'jab',\n 'jackal',\n 'jacket',\n 'jackknife',\n 'jackpot',\n 'jailbird',\n 'jailbreak',\n 'jailer',\n 'jailhouse',\n 'jalapeno',\n 'jam',\n 'janitor',\n 'january',\n 'jargon',\n 'jarring',\n 'jasmine',\n 'jaundice',\n 'jaunt',\n 'java',\n 'jawed',\n 'jawless',\n 'jawline',\n 'jaws',\n 'jaybird',\n 'jaywalker',\n 'jazz',\n 'jeep',\n 'jeeringly',\n 'jellied',\n 'jelly',\n 'jersey',\n 'jester',\n 'jet',\n 'jiffy',\n 'jigsaw',\n 'jimmy',\n 'jingle',\n 'jingling',\n 'jinx',\n 'jitters',\n 'jittery',\n 'job',\n 'jockey',\n 'jockstrap',\n 'jogger',\n 'jogging',\n 'john',\n 'joining',\n 'jokester',\n 'jokingly',\n 'jolliness',\n 'jolly',\n 'jolt',\n 'jot',\n 'jovial',\n 'joyfully',\n 'joylessly',\n 'joyous',\n 'joyride',\n 'joystick',\n 'jubilance',\n 'jubilant',\n 'judge',\n 'judgingly',\n 'judicial',\n 'judiciary',\n 'judo',\n 'juggle',\n 'juggling',\n 'jugular',\n 'juice',\n 'juiciness',\n 'juicy',\n 'jujitsu',\n 'jukebox',\n 'july',\n 'jumble',\n 'jumbo',\n 'jump',\n 'junction',\n 'juncture',\n 'june',\n 'junior',\n 'juniper',\n 'junkie',\n 'junkman',\n 'junkyard',\n 'jurist',\n 'juror',\n 'jury',\n 'justice',\n 'justifier',\n 'justify',\n 'justly',\n 'justness',\n 'juvenile',\n 'kabob',\n 'kangaroo',\n 'karaoke',\n 'karate',\n 'karma',\n 'kebab',\n 'keenly',\n 'keenness',\n 'keep',\n 'keg',\n 'kelp',\n 'kennel',\n 'kept',\n 'kerchief',\n 'kerosene',\n 'kettle',\n 'kick',\n 'kiln',\n 'kilobyte',\n 'kilogram',\n 'kilometer',\n 'kilowatt',\n 'kilt',\n 'kimono',\n 'kindle',\n 'kindling',\n 'kindly',\n 'kindness',\n 'kindred',\n 'kinetic',\n 'kinfolk',\n 'king',\n 'kinship',\n 'kinsman',\n 'kinswoman',\n 'kissable',\n 'kisser',\n 'kissing',\n 'kitchen',\n 'kite',\n 'kitten',\n 'kitty',\n 'kiwi',\n 'kleenex',\n 'knapsack',\n 'knee',\n 'knelt',\n 'knickers',\n 'knoll',\n 'koala',\n 'kooky',\n 'kosher',\n 'krypton',\n 'kudos',\n 'kung',\n 'labored',\n 'laborer',\n 'laboring',\n 'laborious',\n 'labrador',\n 'ladder',\n 'ladies',\n 'ladle',\n 'ladybug',\n 'ladylike',\n 'lagged',\n 'lagging',\n 'lagoon',\n 'lair',\n 'lake',\n 'lance',\n 'landed',\n 'landfall',\n 'landfill',\n 'landing',\n 'landlady',\n 'landless',\n 'landline',\n 'landlord',\n 'landmark',\n 'landmass',\n 'landmine',\n 'landowner',\n 'landscape',\n 'landside',\n 'landslide',\n 'language',\n 'lankiness',\n 'lanky',\n 'lantern',\n 'lapdog',\n 'lapel',\n 'lapped',\n 'lapping',\n 'laptop',\n 'lard',\n 'large',\n 'lark',\n 'lash',\n 'lasso',\n 'last',\n 'latch',\n 'late',\n 'lather',\n 'latitude',\n 'latrine',\n 'latter',\n 'latticed',\n 'launch',\n 'launder',\n 'laundry',\n 'laurel',\n 'lavender',\n 'lavish',\n 'laxative',\n 'lazily',\n 'laziness',\n 'lazy',\n 'lecturer',\n 'left',\n 'legacy',\n 'legal',\n 'legend',\n 'legged',\n 'leggings',\n 'legible',\n 'legibly',\n 'legislate',\n 'lego',\n 'legroom',\n 'legume',\n 'legwarmer',\n 'legwork',\n 'lemon',\n 'lend',\n 'length',\n 'lens',\n 'lent',\n 'leotard',\n 'lesser',\n 'letdown',\n 'lethargic',\n 'lethargy',\n 'letter',\n 'lettuce',\n 'level',\n 'leverage',\n 'levers',\n 'levitate',\n 'levitator',\n 'liability',\n 'liable',\n 'liberty',\n 'librarian',\n 'library',\n 'licking',\n 'licorice',\n 'lid',\n 'life',\n 'lifter',\n 'lifting',\n 'liftoff',\n 'ligament',\n 'likely',\n 'likeness',\n 'likewise',\n 'liking',\n 'lilac',\n 'lilly',\n 'lily',\n 'limb',\n 'limeade',\n 'limelight',\n 'limes',\n 'limit',\n 'limping',\n 'limpness',\n 'line',\n 'lingo',\n 'linguini',\n 'linguist',\n 'lining',\n 'linked',\n 'linoleum',\n 'linseed',\n 'lint',\n 'lion',\n 'lip',\n 'liquefy',\n 'liqueur',\n 'liquid',\n 'lisp',\n 'list',\n 'litigate',\n 'litigator',\n 'litmus',\n 'litter',\n 'little',\n 'livable',\n 'lived',\n 'lively',\n 'liver',\n 'livestock',\n 'lividly',\n 'living',\n 'lizard',\n 'lubricant',\n 'lubricate',\n 'lucid',\n 'luckily',\n 'luckiness',\n 'luckless',\n 'lucrative',\n 'ludicrous',\n 'lugged',\n 'lukewarm',\n 'lullaby',\n 'lumber',\n 'luminance',\n 'luminous',\n 'lumpiness',\n 'lumping',\n 'lumpish',\n 'lunacy',\n 'lunar',\n 'lunchbox',\n 'luncheon',\n 'lunchroom',\n 'lunchtime',\n 'lung',\n 'lurch',\n 'lure',\n 'luridness',\n 'lurk',\n 'lushly',\n 'lushness',\n 'luster',\n 'lustfully',\n 'lustily',\n 'lustiness',\n 'lustrous',\n 'lusty',\n 'luxurious',\n 'luxury',\n 'lying',\n 'lyrically',\n 'lyricism',\n 'lyricist',\n 'lyrics',\n 'macarena',\n 'macaroni',\n 'macaw',\n 'mace',\n 'machine',\n 'machinist',\n 'magazine',\n 'magenta',\n 'maggot',\n 'magical',\n 'magician',\n 'magma',\n 'magnesium',\n 'magnetic',\n 'magnetism',\n 'magnetize',\n 'magnifier',\n 'magnify',\n 'magnitude',\n 'magnolia',\n 'mahogany',\n 'maimed',\n 'majestic',\n 'majesty',\n 'majorette',\n 'majority',\n 'makeover',\n 'maker',\n 'makeshift',\n 'making',\n 'malformed',\n 'malt',\n 'mama',\n 'mammal',\n 'mammary',\n 'mammogram',\n 'manager',\n 'managing',\n 'manatee',\n 'mandarin',\n 'mandate',\n 'mandatory',\n 'mandolin',\n 'manger',\n 'mangle',\n 'mango',\n 'mangy',\n 'manhandle',\n 'manhole',\n 'manhood',\n 'manhunt',\n 'manicotti',\n 'manicure',\n 'manifesto',\n 'manila',\n 'mankind',\n 'manlike',\n 'manliness',\n 'manly',\n 'manmade',\n 'manned',\n 'mannish',\n 'manor',\n 'manpower',\n 'mantis',\n 'mantra',\n 'manual',\n 'many',\n 'map',\n 'marathon',\n 'marauding',\n 'marbled',\n 'marbles',\n 'marbling',\n 'march',\n 'mardi',\n 'margarine',\n 'margarita',\n 'margin',\n 'marigold',\n 'marina',\n 'marine',\n 'marital',\n 'maritime',\n 'marlin',\n 'marmalade',\n 'maroon',\n 'married',\n 'marrow',\n 'marry',\n 'marshland',\n 'marshy',\n 'marsupial',\n 'marvelous',\n 'marxism',\n 'mascot',\n 'masculine',\n 'mashed',\n 'mashing',\n 'massager',\n 'masses',\n 'massive',\n 'mastiff',\n 'matador',\n 'matchbook',\n 'matchbox',\n 'matcher',\n 'matching',\n 'matchless',\n 'material',\n 'maternal',\n 'maternity',\n 'math',\n 'mating',\n 'matriarch',\n 'matrimony',\n 'matrix',\n 'matron',\n 'matted',\n 'matter',\n 'maturely',\n 'maturing',\n 'maturity',\n 'mauve',\n 'maverick',\n 'maximize',\n 'maximum',\n 'maybe',\n 'mayday',\n 'mayflower',\n 'moaner',\n 'moaning',\n 'mobile',\n 'mobility',\n 'mobilize',\n 'mobster',\n 'mocha',\n 'mocker',\n 'mockup',\n 'modified',\n 'modify',\n 'modular',\n 'modulator',\n 'module',\n 'moisten',\n 'moistness',\n 'moisture',\n 'molar',\n 'molasses',\n 'mold',\n 'molecular',\n 'molecule',\n 'molehill',\n 'mollusk',\n 'mom',\n 'monastery',\n 'monday',\n 'monetary',\n 'monetize',\n 'moneybags',\n 'moneyless',\n 'moneywise',\n 'mongoose',\n 'mongrel',\n 'monitor',\n 'monkhood',\n 'monogamy',\n 'monogram',\n 'monologue',\n 'monopoly',\n 'monorail',\n 'monotone',\n 'monotype',\n 'monoxide',\n 'monsieur',\n 'monsoon',\n 'monstrous',\n 'monthly',\n 'monument',\n 'moocher',\n 'moodiness',\n 'moody',\n 'mooing',\n 'moonbeam',\n 'mooned',\n 'moonlight',\n 'moonlike',\n 'moonlit',\n 'moonrise',\n 'moonscape',\n 'moonshine',\n 'moonstone',\n 'moonwalk',\n 'mop',\n 'morale',\n 'morality',\n 'morally',\n 'morbidity',\n 'morbidly',\n 'morphine',\n 'morphing',\n 'morse',\n 'mortality',\n 'mortally',\n 'mortician',\n 'mortified',\n 'mortify',\n 'mortuary',\n 'mosaic',\n 'mossy',\n 'most',\n 'mothball',\n 'mothproof',\n 'motion',\n 'motivate',\n 'motivator',\n 'motive',\n 'motocross',\n 'motor',\n 'motto',\n 'mountable',\n 'mountain',\n 'mounted',\n 'mounting',\n 'mourner',\n 'mournful',\n 'mouse',\n 'mousiness',\n 'moustache',\n 'mousy',\n 'mouth',\n 'movable',\n 'move',\n 'movie',\n 'moving',\n 'mower',\n 'mowing',\n 'much',\n 'muck',\n 'mud',\n 'mug',\n 'mulberry',\n 'mulch',\n 'mule',\n 'mulled',\n 'mullets',\n 'multiple',\n 'multiply',\n 'multitask',\n 'multitude',\n 'mumble',\n 'mumbling',\n 'mumbo',\n 'mummified',\n 'mummify',\n 'mummy',\n 'mumps',\n 'munchkin',\n 'mundane',\n 'municipal',\n 'muppet',\n 'mural',\n 'murkiness',\n 'murky',\n 'murmuring',\n 'muscular',\n 'museum',\n 'mushily',\n 'mushiness',\n 'mushroom',\n 'mushy',\n 'music',\n 'musket',\n 'muskiness',\n 'musky',\n 'mustang',\n 'mustard',\n 'muster',\n 'mustiness',\n 'musty',\n 'mutable',\n 'mutate',\n 'mutation',\n 'mute',\n 'mutilated',\n 'mutilator',\n 'mutiny',\n 'mutt',\n 'mutual',\n 'muzzle',\n 'myself',\n 'myspace',\n 'mystified',\n 'mystify',\n 'myth',\n 'nacho',\n 'nag',\n 'nail',\n 'name',\n 'naming',\n 'nanny',\n 'nanometer',\n 'nape',\n 'napkin',\n 'napped',\n 'napping',\n 'nappy',\n 'narrow',\n 'nastily',\n 'nastiness',\n 'national',\n 'native',\n 'nativity',\n 'natural',\n 'nature',\n 'naturist',\n 'nautical',\n 'navigate',\n 'navigator',\n 'navy',\n 'nearby',\n 'nearest',\n 'nearly',\n 'nearness',\n 'neatly',\n 'neatness',\n 'nebula',\n 'nebulizer',\n 'nectar',\n 'negate',\n 'negation',\n 'negative',\n 'neglector',\n 'negligee',\n 'negligent',\n 'negotiate',\n 'nemeses',\n 'nemesis',\n 'neon',\n 'nephew',\n 'nerd',\n 'nervous',\n 'nervy',\n 'nest',\n 'net',\n 'neurology',\n 'neuron',\n 'neurosis',\n 'neurotic',\n 'neuter',\n 'neutron',\n 'never',\n 'next',\n 'nibble',\n 'nickname',\n 'nicotine',\n 'niece',\n 'nifty',\n 'nimble',\n 'nimbly',\n 'nineteen',\n 'ninetieth',\n 'ninja',\n 'nintendo',\n 'ninth',\n 'nuclear',\n 'nuclei',\n 'nucleus',\n 'nugget',\n 'nullify',\n 'number',\n 'numbing',\n 'numbly',\n 'numbness',\n 'numeral',\n 'numerate',\n 'numerator',\n 'numeric',\n 'numerous',\n 'nuptials',\n 'nursery',\n 'nursing',\n 'nurture',\n 'nutcase',\n 'nutlike',\n 'nutmeg',\n 'nutrient',\n 'nutshell',\n 'nuttiness',\n 'nutty',\n 'nuzzle',\n 'nylon',\n 'oaf',\n 'oak',\n 'oasis',\n 'oat',\n 'obedience',\n 'obedient',\n 'obituary',\n 'object',\n 'obligate',\n 'obliged',\n 'oblivion',\n 'oblivious',\n 'oblong',\n 'obnoxious',\n 'oboe',\n 'obscure',\n 'obscurity',\n 'observant',\n 'observer',\n 'observing',\n 'obsessed',\n 'obsession',\n 'obsessive',\n 'obsolete',\n 'obstacle',\n 'obstinate',\n 'obstruct',\n 'obtain',\n 'obtrusive',\n 'obtuse',\n 'obvious',\n 'occultist',\n 'occupancy',\n 'occupant',\n 'occupier',\n 'occupy',\n 'ocean',\n 'ocelot',\n 'octagon',\n 'octane',\n 'october',\n 'octopus',\n 'ogle',\n 'oil',\n 'oink',\n 'ointment',\n 'okay',\n 'old',\n 'olive',\n 'olympics',\n 'omega',\n 'omen',\n 'ominous',\n 'omission',\n 'omit',\n 'omnivore',\n 'onboard',\n 'oncoming',\n 'ongoing',\n 'onion',\n 'online',\n 'onlooker',\n 'only',\n 'onscreen',\n 'onset',\n 'onshore',\n 'onslaught',\n 'onstage',\n 'onto',\n 'onward',\n 'onyx',\n 'oops',\n 'ooze',\n 'oozy',\n 'opacity',\n 'opal',\n 'open',\n 'operable',\n 'operate',\n 'operating',\n 'operation',\n 'operative',\n 'operator',\n 'opium',\n 'opossum',\n 'opponent',\n 'oppose',\n 'opposing',\n 'opposite',\n 'oppressed',\n 'oppressor',\n 'opt',\n 'opulently',\n 'osmosis',\n 'other',\n 'otter',\n 'ouch',\n 'ought',\n 'ounce',\n 'outage',\n 'outback',\n 'outbid',\n 'outboard',\n 'outbound',\n 'outbreak',\n 'outburst',\n 'outcast',\n 'outclass',\n 'outcome',\n 'outdated',\n 'outdoors',\n 'outer',\n 'outfield',\n 'outfit',\n 'outflank',\n 'outgoing',\n 'outgrow',\n 'outhouse',\n 'outing',\n 'outlast',\n 'outlet',\n 'outline',\n 'outlook',\n 'outlying',\n 'outmatch',\n 'outmost',\n 'outnumber',\n 'outplayed',\n 'outpost',\n 'outpour',\n 'output',\n 'outrage',\n 'outrank',\n 'outreach',\n 'outright',\n 'outscore',\n 'outsell',\n 'outshine',\n 'outshoot',\n 'outsider',\n 'outskirts',\n 'outsmart',\n 'outsource',\n 'outspoken',\n 'outtakes',\n 'outthink',\n 'outward',\n 'outweigh',\n 'outwit',\n 'oval',\n 'ovary',\n 'oven',\n 'overact',\n 'overall',\n 'overarch',\n 'overbid',\n 'overbill',\n 'overbite',\n 'overblown',\n 'overboard',\n 'overbook',\n 'overbuilt',\n 'overcast',\n 'overcoat',\n 'overcome',\n 'overcook',\n 'overcrowd',\n 'overdraft',\n 'overdrawn',\n 'overdress',\n 'overdrive',\n 'overdue',\n 'overeager',\n 'overeater',\n 'overexert',\n 'overfed',\n 'overfeed',\n 'overfill',\n 'overflow',\n 'overfull',\n 'overgrown',\n 'overhand',\n 'overhang',\n 'overhaul',\n 'overhead',\n 'overhear',\n 'overheat',\n 'overhung',\n 'overjoyed',\n 'overkill',\n 'overlabor',\n 'overlaid',\n 'overlap',\n 'overlay',\n 'overload',\n 'overlook',\n 'overlord',\n 'overlying',\n 'overnight',\n 'overpass',\n 'overpay',\n 'overplant',\n 'overplay',\n 'overpower',\n 'overprice',\n 'overrate',\n 'overreach',\n 'overreact',\n 'override',\n 'overripe',\n 'overrule',\n 'overrun',\n 'overshoot',\n 'overshot',\n 'oversight',\n 'oversized',\n 'oversleep',\n 'oversold',\n 'overspend',\n 'overstate',\n 'overstay',\n 'overstep',\n 'overstock',\n 'overstuff',\n 'oversweet',\n 'overtake',\n 'overthrow',\n 'overtime',\n 'overtly',\n 'overtone',\n 'overture',\n 'overturn',\n 'overuse',\n 'overvalue',\n 'overview',\n 'overwrite',\n 'owl',\n 'oxford',\n 'oxidant',\n 'oxidation',\n 'oxidize',\n 'oxidizing',\n 'oxygen',\n 'oxymoron',\n 'oyster',\n 'ozone',\n 'paced',\n 'pacemaker',\n 'pacific',\n 'pacifier',\n 'pacifism',\n 'pacifist',\n 'pacify',\n 'padded',\n 'padding',\n 'paddle',\n 'paddling',\n 'padlock',\n 'pagan',\n 'pager',\n 'paging',\n 'pajamas',\n 'palace',\n 'palatable',\n 'palm',\n 'palpable',\n 'palpitate',\n 'paltry',\n 'pampered',\n 'pamperer',\n 'pampers',\n 'pamphlet',\n 'panama',\n 'pancake',\n 'pancreas',\n 'panda',\n 'pandemic',\n 'pang',\n 'panhandle',\n 'panic',\n 'panning',\n 'panorama',\n 'panoramic',\n 'panther',\n 'pantomime',\n 'pantry',\n 'pants',\n 'pantyhose',\n 'paparazzi',\n 'papaya',\n 'paper',\n 'paprika',\n 'papyrus',\n 'parabola',\n 'parachute',\n 'parade',\n 'paradox',\n 'paragraph',\n 'parakeet',\n 'paralegal',\n 'paralyses',\n 'paralysis',\n 'paralyze',\n 'paramedic',\n 'parameter',\n 'paramount',\n 'parasail',\n 'parasite',\n 'parasitic',\n 'parcel',\n 'parched',\n 'parchment',\n 'pardon',\n 'parish',\n 'parka',\n 'parking',\n 'parkway',\n 'parlor',\n 'parmesan',\n 'parole',\n 'parrot',\n 'parsley',\n 'parsnip',\n 'partake',\n 'parted',\n 'parting',\n 'partition',\n 'partly',\n 'partner',\n 'partridge',\n 'party',\n 'passable',\n 'passably',\n 'passage',\n 'passcode',\n 'passenger',\n 'passerby',\n 'passing',\n 'passion',\n 'passive',\n 'passivism',\n 'passover',\n 'passport',\n 'password',\n 'pasta',\n 'pasted',\n 'pastel',\n 'pastime',\n 'pastor',\n 'pastrami',\n 'pasture',\n 'pasty',\n 'patchwork',\n 'patchy',\n 'paternal',\n 'paternity',\n 'path',\n 'patience',\n 'patient',\n 'patio',\n 'patriarch',\n 'patriot',\n 'patrol',\n 'patronage',\n 'patronize',\n 'pauper',\n 'pavement',\n 'paver',\n 'pavestone',\n 'pavilion',\n 'paving',\n 'pawing',\n 'payable',\n 'payback',\n 'paycheck',\n 'payday',\n 'payee',\n 'payer',\n 'paying',\n 'payment',\n 'payphone',\n 'payroll',\n 'pebble',\n 'pebbly',\n 'pecan',\n 'pectin',\n 'peculiar',\n 'peddling',\n 'pediatric',\n 'pedicure',\n 'pedigree',\n 'pedometer',\n 'pegboard',\n 'pelican',\n 'pellet',\n 'pelt',\n 'pelvis',\n 'penalize',\n 'penalty',\n 'pencil',\n 'pendant',\n 'pending',\n 'penholder',\n 'penknife',\n 'pennant',\n 'penniless',\n 'penny',\n 'penpal',\n 'pension',\n 'pentagon',\n 'pentagram',\n 'pep',\n 'perceive',\n 'percent',\n 'perch',\n 'percolate',\n 'perennial',\n 'perfected',\n 'perfectly',\n 'perfume',\n 'periscope',\n 'perish',\n 'perjurer',\n 'perjury',\n 'perkiness',\n 'perky',\n 'perm',\n 'peroxide',\n 'perpetual',\n 'perplexed',\n 'persecute',\n 'persevere',\n 'persuaded',\n 'persuader',\n 'pesky',\n 'peso',\n 'pessimism',\n 'pessimist',\n 'pester',\n 'pesticide',\n 'petal',\n 'petite',\n 'petition',\n 'petri',\n 'petroleum',\n 'petted',\n 'petticoat',\n 'pettiness',\n 'petty',\n 'petunia',\n 'phantom',\n 'phobia',\n 'phoenix',\n 'phonebook',\n 'phoney',\n 'phonics',\n 'phoniness',\n 'phony',\n 'phosphate',\n 'photo',\n 'phrase',\n 'phrasing',\n 'placard',\n 'placate',\n 'placidly',\n 'plank',\n 'planner',\n 'plant',\n 'plasma',\n 'plaster',\n 'plastic',\n 'plated',\n 'platform',\n 'plating',\n 'platinum',\n 'platonic',\n 'platter',\n 'platypus',\n 'plausible',\n 'plausibly',\n 'playable',\n 'playback',\n 'player',\n 'playful',\n 'playgroup',\n 'playhouse',\n 'playing',\n 'playlist',\n 'playmaker',\n 'playmate',\n 'playoff',\n 'playpen',\n 'playroom',\n 'playset',\n 'plaything',\n 'playtime',\n 'plaza',\n 'pleading',\n 'pleat',\n 'pledge',\n 'plentiful',\n 'plenty',\n 'plethora',\n 'plexiglas',\n 'pliable',\n 'plod',\n 'plop',\n 'plot',\n 'plow',\n 'ploy',\n 'pluck',\n 'plug',\n 'plunder',\n 'plunging',\n 'plural',\n 'plus',\n 'plutonium',\n 'plywood',\n 'poach',\n 'pod',\n 'poem',\n 'poet',\n 'pogo',\n 'pointed',\n 'pointer',\n 'pointing',\n 'pointless',\n 'pointy',\n 'poise',\n 'poison',\n 'poker',\n 'poking',\n 'polar',\n 'police',\n 'policy',\n 'polio',\n 'polish',\n 'politely',\n 'polka',\n 'polo',\n 'polyester',\n 'polygon',\n 'polygraph',\n 'polymer',\n 'poncho',\n 'pond',\n 'pony',\n 'popcorn',\n 'pope',\n 'poplar',\n 'popper',\n 'poppy',\n 'popsicle',\n 'populace',\n 'popular',\n 'populate',\n 'porcupine',\n 'pork',\n 'porous',\n 'porridge',\n 'portable',\n 'portal',\n 'portfolio',\n 'porthole',\n 'portion',\n 'portly',\n 'portside',\n 'poser',\n 'posh',\n 'posing',\n 'possible',\n 'possibly',\n 'possum',\n 'postage',\n 'postal',\n 'postbox',\n 'postcard',\n 'posted',\n 'poster',\n 'posting',\n 'postnasal',\n 'posture',\n 'postwar',\n 'pouch',\n 'pounce',\n 'pouncing',\n 'pound',\n 'pouring',\n 'pout',\n 'powdered',\n 'powdering',\n 'powdery',\n 'power',\n 'powwow',\n 'pox',\n 'praising',\n 'prance',\n 'prancing',\n 'pranker',\n 'prankish',\n 'prankster',\n 'prayer',\n 'praying',\n 'preacher',\n 'preaching',\n 'preachy',\n 'preamble',\n 'precinct',\n 'precise',\n 'precision',\n 'precook',\n 'precut',\n 'predator',\n 'predefine',\n 'predict',\n 'preface',\n 'prefix',\n 'preflight',\n 'preformed',\n 'pregame',\n 'pregnancy',\n 'pregnant',\n 'preheated',\n 'prelaunch',\n 'prelaw',\n 'prelude',\n 'premiere',\n 'premises',\n 'premium',\n 'prenatal',\n 'preoccupy',\n 'preorder',\n 'prepaid',\n 'prepay',\n 'preplan',\n 'preppy',\n 'preschool',\n 'prescribe',\n 'preseason',\n 'preset',\n 'preshow',\n 'president',\n 'presoak',\n 'press',\n 'presume',\n 'presuming',\n 'preteen',\n 'pretended',\n 'pretender',\n 'pretense',\n 'pretext',\n 'pretty',\n 'pretzel',\n 'prevail',\n 'prevalent',\n 'prevent',\n 'preview',\n 'previous',\n 'prewar',\n 'prewashed',\n 'prideful',\n 'pried',\n 'primal',\n 'primarily',\n 'primary',\n 'primate',\n 'primer',\n 'primp',\n 'princess',\n 'print',\n 'prior',\n 'prism',\n 'prison',\n 'prissy',\n 'pristine',\n 'privacy',\n 'private',\n 'privatize',\n 'prize',\n 'proactive',\n 'probable',\n 'probably',\n 'probation',\n 'probe',\n 'probing',\n 'probiotic',\n 'problem',\n 'procedure',\n 'process',\n 'proclaim',\n 'procreate',\n 'procurer',\n 'prodigal',\n 'prodigy',\n 'produce',\n 'product',\n 'profane',\n 'profanity',\n 'professed',\n 'professor',\n 'profile',\n 'profound',\n 'profusely',\n 'progeny',\n 'prognosis',\n 'program',\n 'progress',\n 'projector',\n 'prologue',\n 'prolonged',\n 'promenade',\n 'prominent',\n 'promoter',\n 'promotion',\n 'prompter',\n 'promptly',\n 'prone',\n 'prong',\n 'pronounce',\n 'pronto',\n 'proofing',\n 'proofread',\n 'proofs',\n 'propeller',\n 'properly',\n 'property',\n 'proponent',\n 'proposal',\n 'propose',\n 'props',\n 'prorate',\n 'protector',\n 'protegee',\n 'proton',\n 'prototype',\n 'protozoan',\n 'protract',\n 'protrude',\n 'proud',\n 'provable',\n 'proved',\n 'proven',\n 'provided',\n 'provider',\n 'providing',\n 'province',\n 'proving',\n 'provoke',\n 'provoking',\n 'provolone',\n 'prowess',\n 'prowler',\n 'prowling',\n 'proximity',\n 'proxy',\n 'prozac',\n 'prude',\n 'prudishly',\n 'prune',\n 'pruning',\n 'pry',\n 'psychic',\n 'public',\n 'publisher',\n 'pucker',\n 'pueblo',\n 'pug',\n 'pull',\n 'pulmonary',\n 'pulp',\n 'pulsate',\n 'pulse',\n 'pulverize',\n 'puma',\n 'pumice',\n 'pummel',\n 'punch',\n 'punctual',\n 'punctuate',\n 'punctured',\n 'pungent',\n 'punisher',\n 'punk',\n 'pupil',\n 'puppet',\n 'puppy',\n 'purchase',\n 'pureblood',\n 'purebred',\n 'purely',\n 'pureness',\n 'purgatory',\n 'purge',\n 'purging',\n 'purifier',\n 'purify',\n 'purist',\n 'puritan',\n 'purity',\n 'purple',\n 'purplish',\n 'purposely',\n 'purr',\n 'purse',\n 'pursuable',\n 'pursuant',\n 'pursuit',\n 'purveyor',\n 'pushcart',\n 'pushchair',\n 'pusher',\n 'pushiness',\n 'pushing',\n 'pushover',\n 'pushpin',\n 'pushup',\n 'pushy',\n 'putdown',\n 'putt',\n 'puzzle',\n 'puzzling',\n 'pyramid',\n 'pyromania',\n 'python',\n 'quack',\n 'quadrant',\n 'quail',\n 'quaintly',\n 'quake',\n 'quaking',\n 'qualified',\n 'qualifier',\n 'qualify',\n 'quality',\n 'qualm',\n 'quantum',\n 'quarrel',\n 'quarry',\n 'quartered',\n 'quarterly',\n 'quarters',\n 'quartet',\n 'quench',\n 'query',\n 'quicken',\n 'quickly',\n 'quickness',\n 'quicksand',\n 'quickstep',\n 'quiet',\n 'quill',\n 'quilt',\n 'quintet',\n 'quintuple',\n 'quirk',\n 'quit',\n 'quiver',\n 'quizzical',\n 'quotable',\n 'quotation',\n 'quote',\n 'rabid',\n 'race',\n 'racing',\n 'racism',\n 'rack',\n 'racoon',\n 'radar',\n 'radial',\n 'radiance',\n 'radiantly',\n 'radiated',\n 'radiation',\n 'radiator',\n 'radio',\n 'radish',\n 'raffle',\n 'raft',\n 'rage',\n 'ragged',\n 'raging',\n 'ragweed',\n 'raider',\n 'railcar',\n 'railing',\n 'railroad',\n 'railway',\n 'raisin',\n 'rake',\n 'raking',\n 'rally',\n 'ramble',\n 'rambling',\n 'ramp',\n 'ramrod',\n 'ranch',\n 'rancidity',\n 'random',\n 'ranged',\n 'ranger',\n 'ranging',\n 'ranked',\n 'ranking',\n 'ransack',\n 'ranting',\n 'rants',\n 'rare',\n 'rarity',\n 'rascal',\n 'rash',\n 'rasping',\n 'ravage',\n 'raven',\n 'ravine',\n 'raving',\n 'ravioli',\n 'ravishing',\n 'reabsorb',\n 'reach',\n 'reacquire',\n 'reaction',\n 'reactive',\n 'reactor',\n 'reaffirm',\n 'ream',\n 'reanalyze',\n 'reappear',\n 'reapply',\n 'reappoint',\n 'reapprove',\n 'rearrange',\n 'rearview',\n 'reason',\n 'reassign',\n 'reassure',\n 'reattach',\n 'reawake',\n 'rebalance',\n 'rebate',\n 'rebel',\n 'rebirth',\n 'reboot',\n 'reborn',\n 'rebound',\n 'rebuff',\n 'rebuild',\n 'rebuilt',\n 'reburial',\n 'rebuttal',\n 'recall',\n 'recant',\n 'recapture',\n 'recast',\n 'recede',\n 'recent',\n 'recess',\n 'recharger',\n 'recipient',\n 'recital',\n 'recite',\n 'reckless',\n 'reclaim',\n 'recliner',\n 'reclining',\n 'recluse',\n 'reclusive',\n 'recognize',\n 'recoil',\n 'recollect',\n 'recolor',\n 'reconcile',\n 'reconfirm',\n 'reconvene',\n 'recopy',\n 'record',\n 'recount',\n 'recoup',\n 'recovery',\n 'recreate',\n 'rectal',\n 'rectangle',\n 'rectified',\n 'rectify',\n 'recycled',\n 'recycler',\n 'recycling',\n 'reemerge',\n 'reenact',\n 'reenter',\n 'reentry',\n 'reexamine',\n 'referable',\n 'referee',\n 'reference',\n 'refill',\n 'refinance',\n 'refined',\n 'refinery',\n 'refining',\n 'refinish',\n 'reflected',\n 'reflector',\n 'reflex',\n 'reflux',\n 'refocus',\n 'refold',\n 'reforest',\n 'reformat',\n 'reformed',\n 'reformer',\n 'reformist',\n 'refract',\n 'refrain',\n 'refreeze',\n 'refresh',\n 'refried',\n 'refueling',\n 'refund',\n 'refurbish',\n 'refurnish',\n 'refusal',\n 'refuse',\n 'refusing',\n 'refutable',\n 'refute',\n 'regain',\n 'regalia',\n 'regally',\n 'reggae',\n 'regime',\n 'region',\n 'register',\n 'registrar',\n 'registry',\n 'regress',\n 'regretful',\n 'regroup',\n 'regular',\n 'regulate',\n 'regulator',\n 'rehab',\n 'reheat',\n 'rehire',\n 'rehydrate',\n 'reimburse',\n 'reissue',\n 'reiterate',\n 'rejoice',\n 'rejoicing',\n 'rejoin',\n 'rekindle',\n 'relapse',\n 'relapsing',\n 'relatable',\n 'related',\n 'relation',\n 'relative',\n 'relax',\n 'relay',\n 'relearn',\n 'release',\n 'relenting',\n 'reliable',\n 'reliably',\n 'reliance',\n 'reliant',\n 'relic',\n 'relieve',\n 'relieving',\n 'relight',\n 'relish',\n 'relive',\n 'reload',\n 'relocate',\n 'relock',\n 'reluctant',\n 'rely',\n 'remake',\n 'remark',\n 'remarry',\n 'rematch',\n 'remedial',\n 'remedy',\n 'remember',\n 'reminder',\n 'remindful',\n 'remission',\n 'remix',\n 'remnant',\n 'remodeler',\n 'remold',\n 'remorse',\n 'remote',\n 'removable',\n 'removal',\n 'removed',\n 'remover',\n 'removing',\n 'rename',\n 'renderer',\n 'rendering',\n 'rendition',\n 'renegade',\n 'renewable',\n 'renewably',\n 'renewal',\n 'renewed',\n 'renounce',\n 'renovate',\n 'renovator',\n 'rentable',\n 'rental',\n 'rented',\n 'renter',\n 'reoccupy',\n 'reoccur',\n 'reopen',\n 'reorder',\n 'repackage',\n 'repacking',\n 'repaint',\n 'repair',\n 'repave',\n 'repaying',\n 'repayment',\n 'repeal',\n 'repeated',\n 'repeater',\n 'repent',\n 'rephrase',\n 'replace',\n 'replay',\n 'replica',\n 'reply',\n 'reporter',\n 'repose',\n 'repossess',\n 'repost',\n 'repressed',\n 'reprimand',\n 'reprint',\n 'reprise',\n 'reproach',\n 'reprocess',\n 'reproduce',\n 'reprogram',\n 'reps',\n 'reptile',\n 'reptilian',\n 'repugnant',\n 'repulsion',\n 'repulsive',\n 'repurpose',\n 'reputable',\n 'reputably',\n 'request',\n 'require',\n 'requisite',\n 'reroute',\n 'rerun',\n 'resale',\n 'resample',\n 'rescuer',\n 'reseal',\n 'research',\n 'reselect',\n 'reseller',\n 'resemble',\n 'resend',\n 'resent',\n 'reset',\n 'reshape',\n 'reshoot',\n 'reshuffle',\n 'residence',\n 'residency',\n 'resident',\n 'residual',\n 'residue',\n 'resigned',\n 'resilient',\n 'resistant',\n 'resisting',\n 'resize',\n 'resolute',\n 'resolved',\n 'resonant',\n 'resonate',\n 'resort',\n 'resource',\n 'respect',\n 'resubmit',\n 'result',\n 'resume',\n 'resupply',\n 'resurface',\n 'resurrect',\n 'retail',\n 'retainer',\n 'retaining',\n 'retake',\n 'retaliate',\n 'retention',\n 'rethink',\n 'retinal',\n 'retired',\n 'retiree',\n 'retiring',\n 'retold',\n 'retool',\n 'retorted',\n 'retouch',\n 'retrace',\n 'retract',\n 'retrain',\n 'retread',\n 'retreat',\n 'retrial',\n 'retrieval',\n 'retriever',\n 'retry',\n 'return',\n 'retying',\n 'retype',\n 'reunion',\n 'reunite',\n 'reusable',\n 'reuse',\n 'reveal',\n 'reveler',\n 'revenge',\n 'revenue',\n 'reverb',\n 'revered',\n 'reverence',\n 'reverend',\n 'reversal',\n 'reverse',\n 'reversing',\n 'reversion',\n 'revert',\n 'revisable',\n 'revise',\n 'revision',\n 'revisit',\n 'revivable',\n 'revival',\n 'reviver',\n 'reviving',\n 'revocable',\n 'revoke',\n 'revolt',\n 'revolver',\n 'revolving',\n 'reward',\n 'rewash',\n 'rewind',\n 'rewire',\n 'reword',\n 'rework',\n 'rewrap',\n 'rewrite',\n 'rhyme',\n 'ribbon',\n 'ribcage',\n 'rice',\n 'riches',\n 'richly',\n 'richness',\n 'rickety',\n 'ricotta',\n 'riddance',\n 'ridden',\n 'ride',\n 'riding',\n 'rifling',\n 'rift',\n 'rigging',\n 'rigid',\n 'rigor',\n 'rimless',\n 'rimmed',\n 'rind',\n 'rink',\n 'rinse',\n 'rinsing',\n 'riot',\n 'ripcord',\n 'ripeness',\n 'ripening',\n 'ripping',\n 'ripple',\n 'rippling',\n 'riptide',\n 'rise',\n 'rising',\n 'risk',\n 'risotto',\n 'ritalin',\n 'ritzy',\n 'rival',\n 'riverbank',\n 'riverbed',\n 'riverboat',\n 'riverside',\n 'riveter',\n 'riveting',\n 'roamer',\n 'roaming',\n 'roast',\n 'robbing',\n 'robe',\n 'robin',\n 'robotics',\n 'robust',\n 'rockband',\n 'rocker',\n 'rocket',\n 'rockfish',\n 'rockiness',\n 'rocking',\n 'rocklike',\n 'rockslide',\n 'rockstar',\n 'rocky',\n 'rogue',\n 'roman',\n 'romp',\n 'rope',\n 'roping',\n 'roster',\n 'rosy',\n 'rotten',\n 'rotting',\n 'rotunda',\n 'roulette',\n 'rounding',\n 'roundish',\n 'roundness',\n 'roundup',\n 'roundworm',\n 'routine',\n 'routing',\n 'rover',\n 'roving',\n 'royal',\n 'rubbed',\n 'rubber',\n 'rubbing',\n 'rubble',\n 'rubdown',\n 'ruby',\n 'ruckus',\n 'rudder',\n 'rug',\n 'ruined',\n 'rule',\n 'rumble',\n 'rumbling',\n 'rummage',\n 'rumor',\n 'runaround',\n 'rundown',\n 'runner',\n 'running',\n 'runny',\n 'runt',\n 'runway',\n 'rupture',\n 'rural',\n 'ruse',\n 'rush',\n 'rust',\n 'rut',\n 'sabbath',\n 'sabotage',\n 'sacrament',\n 'sacred',\n 'sacrifice',\n 'sadden',\n 'saddlebag',\n 'saddled',\n 'saddling',\n 'sadly',\n 'sadness',\n 'safari',\n 'safeguard',\n 'safehouse',\n 'safely',\n 'safeness',\n 'saffron',\n 'saga',\n 'sage',\n 'sagging',\n 'saggy',\n 'said',\n 'saint',\n 'sake',\n 'salad',\n 'salami',\n 'salaried',\n 'salary',\n 'saline',\n 'salon',\n 'saloon',\n 'salsa',\n 'salt',\n 'salutary',\n 'salute',\n 'salvage',\n 'salvaging',\n 'salvation',\n 'same',\n 'sample',\n 'sampling',\n 'sanction',\n 'sanctity',\n 'sanctuary',\n 'sandal',\n 'sandbag',\n 'sandbank',\n 'sandbar',\n 'sandblast',\n 'sandbox',\n 'sanded',\n 'sandfish',\n 'sanding',\n 'sandlot',\n 'sandpaper',\n 'sandpit',\n 'sandstone',\n 'sandstorm',\n 'sandworm',\n 'sandy',\n 'sanitary',\n 'sanitizer',\n 'sank',\n 'santa',\n 'sapling',\n 'sappiness',\n 'sappy',\n 'sarcasm',\n 'sarcastic',\n 'sardine',\n 'sash',\n 'sasquatch',\n 'sassy',\n 'satchel',\n 'satiable',\n 'satin',\n 'satirical',\n 'satisfied',\n 'satisfy',\n 'saturate',\n 'saturday',\n 'sauciness',\n 'saucy',\n 'sauna',\n 'savage',\n 'savanna',\n 'saved',\n 'savings',\n 'savior',\n 'savor',\n 'saxophone',\n 'say',\n 'scabbed',\n 'scabby',\n 'scalded',\n 'scalding',\n 'scale',\n 'scaling',\n 'scallion',\n 'scallop',\n 'scalping',\n 'scam',\n 'scandal',\n 'scanner',\n 'scanning',\n 'scant',\n 'scapegoat',\n 'scarce',\n 'scarcity',\n 'scarecrow',\n 'scared',\n 'scarf',\n 'scarily',\n 'scariness',\n 'scarring',\n 'scary',\n 'scavenger',\n 'scenic',\n 'schedule',\n 'schematic',\n 'scheme',\n 'scheming',\n 'schilling',\n 'schnapps',\n 'scholar',\n 'science',\n 'scientist',\n 'scion',\n 'scoff',\n 'scolding',\n 'scone',\n 'scoop',\n 'scooter',\n 'scope',\n 'scorch',\n 'scorebook',\n 'scorecard',\n 'scored',\n 'scoreless',\n 'scorer',\n 'scoring',\n 'scorn',\n 'scorpion',\n 'scotch',\n 'scoundrel',\n 'scoured',\n 'scouring',\n 'scouting',\n 'scouts',\n 'scowling',\n 'scrabble',\n 'scraggly',\n 'scrambled',\n 'scrambler',\n 'scrap',\n 'scratch',\n 'scrawny',\n 'screen',\n 'scribble',\n 'scribe',\n 'scribing',\n 'scrimmage',\n 'script',\n 'scroll',\n 'scrooge',\n 'scrounger',\n 'scrubbed',\n 'scrubber',\n 'scruffy',\n 'scrunch',\n 'scrutiny',\n 'scuba',\n 'scuff',\n 'sculptor',\n 'sculpture',\n 'scurvy',\n 'scuttle',\n 'secluded',\n 'secluding',\n 'seclusion',\n 'second',\n 'secrecy',\n 'secret',\n 'sectional',\n 'sector',\n 'secular',\n 'securely',\n 'security',\n 'sedan',\n 'sedate',\n 'sedation',\n 'sedative',\n 'sediment',\n 'seduce',\n 'seducing',\n 'segment',\n 'seismic',\n 'seizing',\n 'seldom',\n 'selected',\n 'selection',\n 'selective',\n 'selector',\n 'self',\n 'seltzer',\n 'semantic',\n 'semester',\n 'semicolon',\n 'semifinal',\n 'seminar',\n 'semisoft',\n 'semisweet',\n 'senate',\n 'senator',\n 'send',\n 'senior',\n 'senorita',\n 'sensation',\n 'sensitive',\n 'sensitize',\n 'sensually',\n 'sensuous',\n 'sepia',\n 'september',\n 'septic',\n 'septum',\n 'sequel',\n 'sequence',\n 'sequester',\n 'series',\n 'sermon',\n 'serotonin',\n 'serpent',\n 'serrated',\n 'serve',\n 'service',\n 'serving',\n 'sesame',\n 'sessions',\n 'setback',\n 'setting',\n 'settle',\n 'settling',\n 'setup',\n 'sevenfold',\n 'seventeen',\n 'seventh',\n 'seventy',\n 'severity',\n 'shabby',\n 'shack',\n 'shaded',\n 'shadily',\n 'shadiness',\n 'shading',\n 'shadow',\n 'shady',\n 'shaft',\n 'shakable',\n 'shakily',\n 'shakiness',\n 'shaking',\n 'shaky',\n 'shale',\n 'shallot',\n 'shallow',\n 'shame',\n 'shampoo',\n 'shamrock',\n 'shank',\n 'shanty',\n 'shape',\n 'shaping',\n 'share',\n 'sharpener',\n 'sharper',\n 'sharpie',\n 'sharply',\n 'sharpness',\n 'shawl',\n 'sheath',\n 'shed',\n 'sheep',\n 'sheet',\n 'shelf',\n 'shell',\n 'shelter',\n 'shelve',\n 'shelving',\n 'sherry',\n 'shield',\n 'shifter',\n 'shifting',\n 'shiftless',\n 'shifty',\n 'shimmer',\n 'shimmy',\n 'shindig',\n 'shine',\n 'shingle',\n 'shininess',\n 'shining',\n 'shiny',\n 'ship',\n 'shirt',\n 'shivering',\n 'shock',\n 'shone',\n 'shoplift',\n 'shopper',\n 'shopping',\n 'shoptalk',\n 'shore',\n 'shortage',\n 'shortcake',\n 'shortcut',\n 'shorten',\n 'shorter',\n 'shorthand',\n 'shortlist',\n 'shortly',\n 'shortness',\n 'shorts',\n 'shortwave',\n 'shorty',\n 'shout',\n 'shove',\n 'showbiz',\n 'showcase',\n 'showdown',\n 'shower',\n 'showgirl',\n 'showing',\n 'showman',\n 'shown',\n 'showoff',\n 'showpiece',\n 'showplace',\n 'showroom',\n 'showy',\n 'shrank',\n 'shrapnel',\n 'shredder',\n 'shredding',\n 'shrewdly',\n 'shriek',\n 'shrill',\n 'shrimp',\n 'shrine',\n 'shrink',\n 'shrivel',\n 'shrouded',\n 'shrubbery',\n 'shrubs',\n 'shrug',\n 'shrunk',\n 'shucking',\n 'shudder',\n 'shuffle',\n 'shuffling',\n 'shun',\n 'shush',\n 'shut',\n 'shy',\n 'siamese',\n 'siberian',\n 'sibling',\n 'siding',\n 'sierra',\n 'siesta',\n 'sift',\n 'sighing',\n 'silenced',\n 'silencer',\n 'silent',\n 'silica',\n 'silicon',\n 'silk',\n 'silliness',\n 'silly',\n 'silo',\n 'silt',\n 'silver',\n 'similarly',\n 'simile',\n 'simmering',\n 'simple',\n 'simplify',\n 'simply',\n 'sincere',\n 'sincerity',\n 'singer',\n 'singing',\n 'single',\n 'singular',\n 'sinister',\n 'sinless',\n 'sinner',\n 'sinuous',\n 'sip',\n 'siren',\n 'sister',\n 'sitcom',\n 'sitter',\n 'sitting',\n 'situated',\n 'situation',\n 'sixfold',\n 'sixteen',\n 'sixth',\n 'sixties',\n 'sixtieth',\n 'sixtyfold',\n 'sizable',\n 'sizably',\n 'size',\n 'sizing',\n 'sizzle',\n 'sizzling',\n 'skater',\n 'skating',\n 'skedaddle',\n 'skeletal',\n 'skeleton',\n 'skeptic',\n 'sketch',\n 'skewed',\n 'skewer',\n 'skid',\n 'skied',\n 'skier',\n 'skies',\n 'skiing',\n 'skilled',\n 'skillet',\n 'skillful',\n 'skimmed',\n 'skimmer',\n 'skimming',\n 'skimpily',\n 'skincare',\n 'skinhead',\n 'skinless',\n 'skinning',\n 'skinny',\n 'skintight',\n 'skipper',\n 'skipping',\n 'skirmish',\n 'skirt',\n 'skittle',\n 'skydiver',\n 'skylight',\n 'skyline',\n 'skype',\n 'skyrocket',\n 'skyward',\n 'slab',\n 'slacked',\n 'slacker',\n 'slacking',\n 'slackness',\n 'slacks',\n 'slain',\n 'slam',\n 'slander',\n 'slang',\n 'slapping',\n 'slapstick',\n 'slashed',\n 'slashing',\n 'slate',\n 'slather',\n 'slaw',\n 'sled',\n 'sleek',\n 'sleep',\n 'sleet',\n 'sleeve',\n 'slept',\n 'sliceable',\n 'sliced',\n 'slicer',\n 'slicing',\n 'slick',\n 'slider',\n 'slideshow',\n 'sliding',\n 'slighted',\n 'slighting',\n 'slightly',\n 'slimness',\n 'slimy',\n 'slinging',\n 'slingshot',\n 'slinky',\n 'slip',\n 'slit',\n 'sliver',\n 'slobbery',\n 'slogan',\n 'sloped',\n 'sloping',\n 'sloppily',\n 'sloppy',\n 'slot',\n 'slouching',\n 'slouchy',\n 'sludge',\n 'slug',\n 'slum',\n 'slurp',\n 'slush',\n 'sly',\n 'small',\n 'smartly',\n 'smartness',\n 'smasher',\n 'smashing',\n 'smashup',\n 'smell',\n 'smelting',\n 'smile',\n 'smilingly',\n 'smirk',\n 'smite',\n 'smith',\n 'smitten',\n 'smock',\n 'smog',\n 'smoked',\n 'smokeless',\n 'smokiness',\n 'smoking',\n 'smoky',\n 'smolder',\n 'smooth',\n 'smother',\n 'smudge',\n 'smudgy',\n 'smuggler',\n 'smuggling',\n 'smugly',\n 'smugness',\n 'snack',\n 'snagged',\n 'snaking',\n 'snap',\n 'snare',\n 'snarl',\n 'snazzy',\n 'sneak',\n 'sneer',\n 'sneeze',\n 'sneezing',\n 'snide',\n 'sniff',\n 'snippet',\n 'snipping',\n 'snitch',\n 'snooper',\n 'snooze',\n 'snore',\n 'snoring',\n 'snorkel',\n 'snort',\n 'snout',\n 'snowbird',\n 'snowboard',\n 'snowbound',\n 'snowcap',\n 'snowdrift',\n 'snowdrop',\n 'snowfall',\n 'snowfield',\n 'snowflake',\n 'snowiness',\n 'snowless',\n 'snowman',\n 'snowplow',\n 'snowshoe',\n 'snowstorm',\n 'snowsuit',\n 'snowy',\n 'snub',\n 'snuff',\n 'snuggle',\n 'snugly',\n 'snugness',\n 'speak',\n 'spearfish',\n 'spearhead',\n 'spearman',\n 'spearmint',\n 'species',\n 'specimen',\n 'specked',\n 'speckled',\n 'specks',\n 'spectacle',\n 'spectator',\n 'spectrum',\n 'speculate',\n 'speech',\n 'speed',\n 'spellbind',\n 'speller',\n 'spelling',\n 'spendable',\n 'spender',\n 'spending',\n 'spent',\n 'spew',\n 'sphere',\n 'spherical',\n 'sphinx',\n 'spider',\n 'spied',\n 'spiffy',\n 'spill',\n 'spilt',\n 'spinach',\n 'spinal',\n 'spindle',\n 'spinner',\n 'spinning',\n 'spinout',\n 'spinster',\n 'spiny',\n 'spiral',\n 'spirited',\n 'spiritism',\n 'spirits',\n 'spiritual',\n 'splashed',\n 'splashing',\n 'splashy',\n 'splatter',\n 'spleen',\n 'splendid',\n 'splendor',\n 'splice',\n 'splicing',\n 'splinter',\n 'splotchy',\n 'splurge',\n 'spoilage',\n 'spoiled',\n 'spoiler',\n 'spoiling',\n 'spoils',\n 'spoken',\n 'spokesman',\n 'sponge',\n 'spongy',\n 'sponsor',\n 'spoof',\n 'spookily',\n 'spooky',\n 'spool',\n 'spoon',\n 'spore',\n 'sporting',\n 'sports',\n 'sporty',\n 'spotless',\n 'spotlight',\n 'spotted',\n 'spotter',\n 'spotting',\n 'spotty',\n 'spousal',\n 'spouse',\n 'spout',\n 'sprain',\n 'sprang',\n 'sprawl',\n 'spray',\n 'spree',\n 'sprig',\n 'spring',\n 'sprinkled',\n 'sprinkler',\n 'sprint',\n 'sprite',\n 'sprout',\n 'spruce',\n 'sprung',\n 'spry',\n 'spud',\n 'spur',\n 'sputter',\n 'spyglass',\n 'squabble',\n 'squad',\n 'squall',\n 'squander',\n 'squash',\n 'squatted',\n 'squatter',\n 'squatting',\n 'squeak',\n 'squealer',\n 'squealing',\n 'squeamish',\n 'squeegee',\n 'squeeze',\n 'squeezing',\n 'squid',\n 'squiggle',\n 'squiggly',\n 'squint',\n 'squire',\n 'squirt',\n 'squishier',\n 'squishy',\n 'stability',\n 'stabilize',\n 'stable',\n 'stack',\n 'stadium',\n 'staff',\n 'stage',\n 'staging',\n 'stagnant',\n 'stagnate',\n 'stainable',\n 'stained',\n 'staining',\n 'stainless',\n 'stalemate',\n 'staleness',\n 'stalling',\n 'stallion',\n 'stamina',\n 'stammer',\n 'stamp',\n 'stand',\n 'stank',\n 'staple',\n 'stapling',\n 'starboard',\n 'starch',\n 'stardom',\n 'stardust',\n 'starfish',\n 'stargazer',\n 'staring',\n 'stark',\n 'starless',\n 'starlet',\n 'starlight',\n 'starlit',\n 'starring',\n 'starry',\n 'starship',\n 'starter',\n 'starting',\n 'startle',\n 'startling',\n 'startup',\n 'starved',\n 'starving',\n 'stash',\n 'state',\n 'static',\n 'statistic',\n 'statue',\n 'stature',\n 'status',\n 'statute',\n 'statutory',\n 'staunch',\n 'stays',\n 'steadfast',\n 'steadier',\n 'steadily',\n 'steadying',\n 'steam',\n 'steed',\n 'steep',\n 'steerable',\n 'steering',\n 'steersman',\n 'stegosaur',\n 'stellar',\n 'stem',\n 'stench',\n 'stencil',\n 'step',\n 'stereo',\n 'sterile',\n 'sterility',\n 'sterilize',\n 'sterling',\n 'sternness',\n 'sternum',\n 'stew',\n 'stick',\n 'stiffen',\n 'stiffly',\n 'stiffness',\n 'stifle',\n 'stifling',\n 'stillness',\n 'stilt',\n 'stimulant',\n 'stimulate',\n 'stimuli',\n 'stimulus',\n 'stinger',\n 'stingily',\n 'stinging',\n 'stingray',\n 'stingy',\n 'stinking',\n 'stinky',\n 'stipend',\n 'stipulate',\n 'stir',\n 'stitch',\n 'stock',\n 'stoic',\n 'stoke',\n 'stole',\n 'stomp',\n 'stonewall',\n 'stoneware',\n 'stonework',\n 'stoning',\n 'stony',\n 'stood',\n 'stooge',\n 'stool',\n 'stoop',\n 'stoplight',\n 'stoppable',\n 'stoppage',\n 'stopped',\n 'stopper',\n 'stopping',\n 'stopwatch',\n 'storable',\n 'storage',\n 'storeroom',\n 'storewide',\n 'storm',\n 'stout',\n 'stove',\n 'stowaway',\n 'stowing',\n 'straddle',\n 'straggler',\n 'strained',\n 'strainer',\n 'straining',\n 'strangely',\n 'stranger',\n 'strangle',\n 'strategic',\n 'strategy',\n 'stratus',\n 'straw',\n 'stray',\n 'streak',\n 'stream',\n 'street',\n 'strength',\n 'strenuous',\n 'strep',\n 'stress',\n 'stretch',\n 'strewn',\n 'stricken',\n 'strict',\n 'stride',\n 'strife',\n 'strike',\n 'striking',\n 'strive',\n 'striving',\n 'strobe',\n 'strode',\n 'stroller',\n 'strongbox',\n 'strongly',\n 'strongman',\n 'struck',\n 'structure',\n 'strudel',\n 'struggle',\n 'strum',\n 'strung',\n 'strut',\n 'stubbed',\n 'stubble',\n 'stubbly',\n 'stubborn',\n 'stucco',\n 'stuck',\n 'student',\n 'studied',\n 'studio',\n 'study',\n 'stuffed',\n 'stuffing',\n 'stuffy',\n 'stumble',\n 'stumbling',\n 'stump',\n 'stung',\n 'stunned',\n 'stunner',\n 'stunning',\n 'stunt',\n 'stupor',\n 'sturdily',\n 'sturdy',\n 'styling',\n 'stylishly',\n 'stylist',\n 'stylized',\n 'stylus',\n 'suave',\n 'subarctic',\n 'subatomic',\n 'subdivide',\n 'subdued',\n 'subduing',\n 'subfloor',\n 'subgroup',\n 'subheader',\n 'subject',\n 'sublease',\n 'sublet',\n 'sublevel',\n 'sublime',\n 'submarine',\n 'submerge',\n 'submersed',\n 'submitter',\n 'subpanel',\n 'subpar',\n 'subplot',\n 'subprime',\n 'subscribe',\n 'subscript',\n 'subsector',\n 'subside',\n 'subsiding',\n 'subsidize',\n 'subsidy',\n 'subsoil',\n 'subsonic',\n 'substance',\n 'subsystem',\n 'subtext',\n 'subtitle',\n 'subtly',\n 'subtotal',\n 'subtract',\n 'subtype',\n 'suburb',\n 'subway',\n 'subwoofer',\n 'subzero',\n 'succulent',\n 'such',\n 'suction',\n 'sudden',\n 'sudoku',\n 'suds',\n 'sufferer',\n 'suffering',\n 'suffice',\n 'suffix',\n 'suffocate',\n 'suffrage',\n 'sugar',\n 'suggest',\n 'suing',\n 'suitable',\n 'suitably',\n 'suitcase',\n 'suitor',\n 'sulfate',\n 'sulfide',\n 'sulfite',\n 'sulfur',\n 'sulk',\n 'sullen',\n 'sulphate',\n 'sulphuric',\n 'sultry',\n 'superbowl',\n 'superglue',\n 'superhero',\n 'superior',\n 'superjet',\n 'superman',\n 'supermom',\n 'supernova',\n 'supervise',\n 'supper',\n 'supplier',\n 'supply',\n 'support',\n 'supremacy',\n 'supreme',\n 'surcharge',\n 'surely',\n 'sureness',\n 'surface',\n 'surfacing',\n 'surfboard',\n 'surfer',\n 'surgery',\n 'surgical',\n 'surging',\n 'surname',\n 'surpass',\n 'surplus',\n 'surprise',\n 'surreal',\n 'surrender',\n 'surrogate',\n 'surround',\n 'survey',\n 'survival',\n 'survive',\n 'surviving',\n 'survivor',\n 'sushi',\n 'suspect',\n 'suspend',\n 'suspense',\n 'sustained',\n 'sustainer',\n 'swab',\n 'swaddling',\n 'swagger',\n 'swampland',\n 'swan',\n 'swapping',\n 'swarm',\n 'sway',\n 'swear',\n 'sweat',\n 'sweep',\n 'swell',\n 'swept',\n 'swerve',\n 'swifter',\n 'swiftly',\n 'swiftness',\n 'swimmable',\n 'swimmer',\n 'swimming',\n 'swimsuit',\n 'swimwear',\n 'swinger',\n 'swinging',\n 'swipe',\n 'swirl',\n 'switch',\n 'swivel',\n 'swizzle',\n 'swooned',\n 'swoop',\n 'swoosh',\n 'swore',\n 'sworn',\n 'swung',\n 'sycamore',\n 'sympathy',\n 'symphonic',\n 'symphony',\n 'symptom',\n 'synapse',\n 'syndrome',\n 'synergy',\n 'synopses',\n 'synopsis',\n 'synthesis',\n 'synthetic',\n 'syrup',\n 'system',\n 't-shirt',\n 'tabasco',\n 'tabby',\n 'tableful',\n 'tables',\n 'tablet',\n 'tableware',\n 'tabloid',\n 'tackiness',\n 'tacking',\n 'tackle',\n 'tackling',\n 'tacky',\n 'taco',\n 'tactful',\n 'tactical',\n 'tactics',\n 'tactile',\n 'tactless',\n 'tadpole',\n 'taekwondo',\n 'tag',\n 'tainted',\n 'take',\n 'taking',\n 'talcum',\n 'talisman',\n 'tall',\n 'talon',\n 'tamale',\n 'tameness',\n 'tamer',\n 'tamper',\n 'tank',\n 'tanned',\n 'tannery',\n 'tanning',\n 'tantrum',\n 'tapeless',\n 'tapered',\n 'tapering',\n 'tapestry',\n 'tapioca',\n 'tapping',\n 'taps',\n 'tarantula',\n 'target',\n 'tarmac',\n 'tarnish',\n 'tarot',\n 'tartar',\n 'tartly',\n 'tartness',\n 'task',\n 'tassel',\n 'taste',\n 'tastiness',\n 'tasting',\n 'tasty',\n 'tattered',\n 'tattle',\n 'tattling',\n 'tattoo',\n 'taunt',\n 'tavern',\n 'thank',\n 'that',\n 'thaw',\n 'theater',\n 'theatrics',\n 'thee',\n 'theft',\n 'theme',\n 'theology',\n 'theorize',\n 'thermal',\n 'thermos',\n 'thesaurus',\n 'these',\n 'thesis',\n 'thespian',\n 'thicken',\n 'thicket',\n 'thickness',\n 'thieving',\n 'thievish',\n 'thigh',\n 'thimble',\n 'thing',\n 'think',\n 'thinly',\n 'thinner',\n 'thinness',\n 'thinning',\n 'thirstily',\n 'thirsting',\n 'thirsty',\n 'thirteen',\n 'thirty',\n 'thong',\n 'thorn',\n 'those',\n 'thousand',\n 'thrash',\n 'thread',\n 'threaten',\n 'threefold',\n 'thrift',\n 'thrill',\n 'thrive',\n 'thriving',\n 'throat',\n 'throbbing',\n 'throng',\n 'throttle',\n 'throwaway',\n 'throwback',\n 'thrower',\n 'throwing',\n 'thud',\n 'thumb',\n 'thumping',\n 'thursday',\n 'thus',\n 'thwarting',\n 'thyself',\n 'tiara',\n 'tibia',\n 'tidal',\n 'tidbit',\n 'tidiness',\n 'tidings',\n 'tidy',\n 'tiger',\n 'tighten',\n 'tightly',\n 'tightness',\n 'tightrope',\n 'tightwad',\n 'tigress',\n 'tile',\n 'tiling',\n 'till',\n 'tilt',\n 'timid',\n 'timing',\n 'timothy',\n 'tinderbox',\n 'tinfoil',\n 'tingle',\n 'tingling',\n 'tingly',\n 'tinker',\n 'tinkling',\n 'tinsel',\n 'tinsmith',\n 'tint',\n 'tinwork',\n 'tiny',\n 'tipoff',\n 'tipped',\n 'tipper',\n 'tipping',\n 'tiptoeing',\n 'tiptop',\n 'tiring',\n 'tissue',\n 'trace',\n 'tracing',\n 'track',\n 'traction',\n 'tractor',\n 'trade',\n 'trading',\n 'tradition',\n 'traffic',\n 'tragedy',\n 'trailing',\n 'trailside',\n 'train',\n 'traitor',\n 'trance',\n 'tranquil',\n 'transfer',\n 'transform',\n 'translate',\n 'transpire',\n 'transport',\n 'transpose',\n 'trapdoor',\n 'trapeze',\n 'trapezoid',\n 'trapped',\n 'trapper',\n 'trapping',\n 'traps',\n 'trash',\n 'travel',\n 'traverse',\n 'travesty',\n 'tray',\n 'treachery',\n 'treading',\n 'treadmill',\n 'treason',\n 'treat',\n 'treble',\n 'tree',\n 'trekker',\n 'tremble',\n 'trembling',\n 'tremor',\n 'trench',\n 'trend',\n 'trespass',\n 'triage',\n 'trial',\n 'triangle',\n 'tribesman',\n 'tribunal',\n 'tribune',\n 'tributary',\n 'tribute',\n 'triceps',\n 'trickery',\n 'trickily',\n 'tricking',\n 'trickle',\n 'trickster',\n 'tricky',\n 'tricolor',\n 'tricycle',\n 'trident',\n 'tried',\n 'trifle',\n 'trifocals',\n 'trillion',\n 'trilogy',\n 'trimester',\n 'trimmer',\n 'trimming',\n 'trimness',\n 'trinity',\n 'trio',\n 'tripod',\n 'tripping',\n 'triumph',\n 'trivial',\n 'trodden',\n 'trolling',\n 'trombone',\n 'trophy',\n 'tropical',\n 'tropics',\n 'trouble',\n 'troubling',\n 'trough',\n 'trousers',\n 'trout',\n 'trowel',\n 'truce',\n 'truck',\n 'truffle',\n 'trump',\n 'trunks',\n 'trustable',\n 'trustee',\n 'trustful',\n 'trusting',\n 'trustless',\n 'truth',\n 'try',\n 'tubby',\n 'tubeless',\n 'tubular',\n 'tucking',\n 'tuesday',\n 'tug',\n 'tuition',\n 'tulip',\n 'tumble',\n 'tumbling',\n 'tummy',\n 'turban',\n 'turbine',\n 'turbofan',\n 'turbojet',\n 'turbulent',\n 'turf',\n 'turkey',\n 'turmoil',\n 'turret',\n 'turtle',\n 'tusk',\n 'tutor',\n 'tutu',\n 'tux',\n 'tweak',\n 'tweed',\n 'tweet',\n 'tweezers',\n 'twelve',\n 'twentieth',\n 'twenty',\n 'twerp',\n 'twice',\n 'twiddle',\n 'twiddling',\n 'twig',\n 'twilight',\n 'twine',\n 'twins',\n 'twirl',\n 'twistable',\n 'twisted',\n 'twister',\n 'twisting',\n 'twisty',\n 'twitch',\n 'twitter',\n 'tycoon',\n 'tying',\n 'tyke',\n 'udder',\n 'ultimate',\n 'ultimatum',\n 'ultra',\n 'umbilical',\n 'umbrella',\n 'umpire',\n 'unabashed',\n 'unable',\n 'unadorned',\n 'unadvised',\n 'unafraid',\n 'unaired',\n 'unaligned',\n 'unaltered',\n 'unarmored',\n 'unashamed',\n 'unaudited',\n 'unawake',\n 'unaware',\n 'unbaked',\n 'unbalance',\n 'unbeaten',\n 'unbend',\n 'unbent',\n 'unbiased',\n 'unbitten',\n 'unblended',\n 'unblessed',\n 'unblock',\n 'unbolted',\n 'unbounded',\n 'unboxed',\n 'unbraided',\n 'unbridle',\n 'unbroken',\n 'unbuckled',\n 'unbundle',\n 'unburned',\n 'unbutton',\n 'uncanny',\n 'uncapped',\n 'uncaring',\n 'uncertain',\n 'unchain',\n 'unchanged',\n 'uncharted',\n 'uncheck',\n 'uncivil',\n 'unclad',\n 'unclaimed',\n 'unclamped',\n 'unclasp',\n 'uncle',\n 'unclip',\n 'uncloak',\n 'unclog',\n 'unclothed',\n 'uncoated',\n 'uncoiled',\n 'uncolored',\n 'uncombed',\n 'uncommon',\n 'uncooked',\n 'uncork',\n 'uncorrupt',\n 'uncounted',\n 'uncouple',\n 'uncouth',\n 'uncover',\n 'uncross',\n 'uncrown',\n 'uncrushed',\n 'uncured',\n 'uncurious',\n 'uncurled',\n 'uncut',\n 'undamaged',\n 'undated',\n 'undaunted',\n 'undead',\n 'undecided',\n 'undefined',\n 'underage',\n 'underarm',\n 'undercoat',\n 'undercook',\n 'undercut',\n 'underdog',\n 'underdone',\n 'underfed',\n 'underfeed',\n 'underfoot',\n 'undergo',\n 'undergrad',\n 'underhand',\n 'underline',\n 'underling',\n 'undermine',\n 'undermost',\n 'underpaid',\n 'underpass',\n 'underpay',\n 'underrate',\n 'undertake',\n 'undertone',\n 'undertook',\n 'undertow',\n 'underuse',\n 'underwear',\n 'underwent',\n 'underwire',\n 'undesired',\n 'undiluted',\n 'undivided',\n 'undocked',\n 'undoing',\n 'undone',\n 'undrafted',\n 'undress',\n 'undrilled',\n 'undusted',\n 'undying',\n 'unearned',\n 'unearth',\n 'unease',\n 'uneasily',\n 'uneasy',\n 'uneatable',\n 'uneaten',\n 'unedited',\n 'unelected',\n 'unending',\n 'unengaged',\n 'unenvied',\n 'unequal',\n 'unethical',\n 'uneven',\n 'unexpired',\n 'unexposed',\n 'unfailing',\n 'unfair',\n 'unfasten',\n 'unfazed',\n 'unfeeling',\n 'unfiled',\n 'unfilled',\n 'unfitted',\n 'unfitting',\n 'unfixable',\n 'unfixed',\n 'unflawed',\n 'unfocused',\n 'unfold',\n 'unfounded',\n 'unframed',\n 'unfreeze',\n 'unfrosted',\n 'unfrozen',\n 'unfunded',\n 'unglazed',\n 'ungloved',\n 'unglue',\n 'ungodly',\n 'ungraded',\n 'ungreased',\n 'unguarded',\n 'unguided',\n 'unhappily',\n 'unhappy',\n 'unharmed',\n 'unhealthy',\n 'unheard',\n 'unhearing',\n 'unheated',\n 'unhelpful',\n 'unhidden',\n 'unhinge',\n 'unhitched',\n 'unholy',\n 'unhook',\n 'unicorn',\n 'unicycle',\n 'unified',\n 'unifier',\n 'uniformed',\n 'uniformly',\n 'unify',\n 'unimpeded',\n 'uninjured',\n 'uninstall',\n 'uninsured',\n 'uninvited',\n 'union',\n 'uniquely',\n 'unisexual',\n 'unison',\n 'unissued',\n 'unit',\n 'universal',\n 'universe',\n 'unjustly',\n 'unkempt',\n 'unkind',\n 'unknotted',\n 'unknowing',\n 'unknown',\n 'unlaced',\n 'unlatch',\n 'unlawful',\n 'unleaded',\n 'unlearned',\n 'unleash',\n 'unless',\n 'unleveled',\n 'unlighted',\n 'unlikable',\n 'unlimited',\n 'unlined',\n 'unlinked',\n 'unlisted',\n 'unlit',\n 'unlivable',\n 'unloaded',\n 'unloader',\n 'unlocked',\n 'unlocking',\n 'unlovable',\n 'unloved',\n 'unlovely',\n 'unloving',\n 'unluckily',\n 'unlucky',\n 'unmade',\n 'unmanaged',\n 'unmanned',\n 'unmapped',\n 'unmarked',\n 'unmasked',\n 'unmasking',\n 'unmatched',\n 'unmindful',\n 'unmixable',\n 'unmixed',\n 'unmolded',\n 'unmoral',\n 'unmovable',\n 'unmoved',\n 'unmoving',\n 'unnamable',\n 'unnamed',\n 'unnatural',\n 'unneeded',\n 'unnerve',\n 'unnerving',\n 'unnoticed',\n 'unopened',\n 'unopposed',\n 'unpack',\n 'unpadded',\n 'unpaid',\n 'unpainted',\n 'unpaired',\n 'unpaved',\n 'unpeeled',\n 'unpicked',\n 'unpiloted',\n 'unpinned',\n 'unplanned',\n 'unplanted',\n 'unpleased',\n 'unpledged',\n 'unplowed',\n 'unplug',\n 'unpopular',\n 'unproven',\n 'unquote',\n 'unranked',\n 'unrated',\n 'unraveled',\n 'unreached',\n 'unread',\n 'unreal',\n 'unreeling',\n 'unrefined',\n 'unrelated',\n 'unrented',\n 'unrest',\n 'unretired',\n 'unrevised',\n 'unrigged',\n 'unripe',\n 'unrivaled',\n 'unroasted',\n 'unrobed',\n 'unroll',\n 'unruffled',\n 'unruly',\n 'unrushed',\n 'unsaddle',\n 'unsafe',\n 'unsaid',\n 'unsalted',\n 'unsaved',\n 'unsavory',\n 'unscathed',\n 'unscented',\n 'unscrew',\n 'unsealed',\n 'unseated',\n 'unsecured',\n 'unseeing',\n 'unseemly',\n 'unseen',\n 'unselect',\n 'unselfish',\n 'unsent',\n 'unsettled',\n 'unshackle',\n 'unshaken',\n 'unshaved',\n 'unshaven',\n 'unsheathe',\n 'unshipped',\n 'unsightly',\n 'unsigned',\n 'unskilled',\n 'unsliced',\n 'unsmooth',\n 'unsnap',\n 'unsocial',\n 'unsoiled',\n 'unsold',\n 'unsolved',\n 'unsorted',\n 'unspoiled',\n 'unspoken',\n 'unstable',\n 'unstaffed',\n 'unstamped',\n 'unsteady',\n 'unsterile',\n 'unstirred',\n 'unstitch',\n 'unstopped',\n 'unstuck',\n 'unstuffed',\n 'unstylish',\n 'unsubtle',\n 'unsubtly',\n 'unsuited',\n 'unsure',\n 'unsworn',\n 'untagged',\n 'untainted',\n 'untaken',\n 'untamed',\n 'untangled',\n 'untapped',\n 'untaxed',\n 'unthawed',\n 'unthread',\n 'untidy',\n 'untie',\n 'until',\n 'untimed',\n 'untimely',\n 'untitled',\n 'untoasted',\n 'untold',\n 'untouched',\n 'untracked',\n 'untrained',\n 'untreated',\n 'untried',\n 'untrimmed',\n 'untrue',\n 'untruth',\n 'unturned',\n 'untwist',\n 'untying',\n 'unusable',\n 'unused',\n 'unusual',\n 'unvalued',\n 'unvaried',\n 'unvarying',\n 'unveiled',\n 'unveiling',\n 'unvented',\n 'unviable',\n 'unvisited',\n 'unvocal',\n 'unwanted',\n 'unwarlike',\n 'unwary',\n 'unwashed',\n 'unwatched',\n 'unweave',\n 'unwed',\n 'unwelcome',\n 'unwell',\n 'unwieldy',\n 'unwilling',\n 'unwind',\n 'unwired',\n 'unwitting',\n 'unwomanly',\n 'unworldly',\n 'unworn',\n 'unworried',\n 'unworthy',\n 'unwound',\n 'unwoven',\n 'unwrapped',\n 'unwritten',\n 'unzip',\n 'upbeat',\n 'upchuck',\n 'upcoming',\n 'upcountry',\n 'update',\n 'upfront',\n 'upgrade',\n 'upheaval',\n 'upheld',\n 'uphill',\n 'uphold',\n 'uplifted',\n 'uplifting',\n 'upload',\n 'upon',\n 'upper',\n 'upright',\n 'uprising',\n 'upriver',\n 'uproar',\n 'uproot',\n 'upscale',\n 'upside',\n 'upstage',\n 'upstairs',\n 'upstart',\n 'upstate',\n 'upstream',\n 'upstroke',\n 'upswing',\n 'uptake',\n 'uptight',\n 'uptown',\n 'upturned',\n 'upward',\n 'upwind',\n 'uranium',\n 'urban',\n 'urchin',\n 'urethane',\n 'urgency',\n 'urgent',\n 'urging',\n 'urologist',\n 'urology',\n 'usable',\n 'usage',\n 'useable',\n 'used',\n 'uselessly',\n 'user',\n 'usher',\n 'usual',\n 'utensil',\n 'utility',\n 'utilize',\n 'utmost',\n 'utopia',\n 'utter',\n 'vacancy',\n 'vacant',\n 'vacate',\n 'vacation',\n 'vagabond',\n 'vagrancy',\n 'vagrantly',\n 'vaguely',\n 'vagueness',\n 'valiant',\n 'valid',\n 'valium',\n 'valley',\n 'valuables',\n 'value',\n 'vanilla',\n 'vanish',\n 'vanity',\n 'vanquish',\n 'vantage',\n 'vaporizer',\n 'variable',\n 'variably',\n 'varied',\n 'variety',\n 'various',\n 'varmint',\n 'varnish',\n 'varsity',\n 'varying',\n 'vascular',\n 'vaseline',\n 'vastly',\n 'vastness',\n 'veal',\n 'vegan',\n 'veggie',\n 'vehicular',\n 'velcro',\n 'velocity',\n 'velvet',\n 'vendetta',\n 'vending',\n 'vendor',\n 'veneering',\n 'vengeful',\n 'venomous',\n 'ventricle',\n 'venture',\n 'venue',\n 'venus',\n 'verbalize',\n 'verbally',\n 'verbose',\n 'verdict',\n 'verify',\n 'verse',\n 'version',\n 'versus',\n 'vertebrae',\n 'vertical',\n 'vertigo',\n 'very',\n 'vessel',\n 'vest',\n 'veteran',\n 'veto',\n 'vexingly',\n 'viability',\n 'viable',\n 'vibes',\n 'vice',\n 'vicinity',\n 'victory',\n 'video',\n 'viewable',\n 'viewer',\n 'viewing',\n 'viewless',\n 'viewpoint',\n 'vigorous',\n 'village',\n 'villain',\n 'vindicate',\n 'vineyard',\n 'vintage',\n 'violate',\n 'violation',\n 'violator',\n 'violet',\n 'violin',\n 'viper',\n 'viral',\n 'virtual',\n 'virtuous',\n 'virus',\n 'visa',\n 'viscosity',\n 'viscous',\n 'viselike',\n 'visible',\n 'visibly',\n 'vision',\n 'visiting',\n 'visitor',\n 'visor',\n 'vista',\n 'vitality',\n 'vitalize',\n 'vitally',\n 'vitamins',\n 'vivacious',\n 'vividly',\n 'vividness',\n 'vixen',\n 'vocalist',\n 'vocalize',\n 'vocally',\n 'vocation',\n 'voice',\n 'voicing',\n 'void',\n 'volatile',\n 'volley',\n 'voltage',\n 'volumes',\n 'voter',\n 'voting',\n 'voucher',\n 'vowed',\n 'vowel',\n 'voyage',\n 'wackiness',\n 'wad',\n 'wafer',\n 'waffle',\n 'waged',\n 'wager',\n 'wages',\n 'waggle',\n 'wagon',\n 'wake',\n 'waking',\n 'walk',\n 'walmart',\n 'walnut',\n 'walrus',\n 'waltz',\n 'wand',\n 'wannabe',\n 'wanted',\n 'wanting',\n 'wasabi',\n 'washable',\n 'washbasin',\n 'washboard',\n 'washbowl',\n 'washcloth',\n 'washday',\n 'washed',\n 'washer',\n 'washhouse',\n 'washing',\n 'washout',\n 'washroom',\n 'washstand',\n 'washtub',\n 'wasp',\n 'wasting',\n 'watch',\n 'water',\n 'waviness',\n 'waving',\n 'wavy',\n 'whacking',\n 'whacky',\n 'wham',\n 'wharf',\n 'wheat',\n 'whenever',\n 'whiff',\n 'whimsical',\n 'whinny',\n 'whiny',\n 'whisking',\n 'whoever',\n 'whole',\n 'whomever',\n 'whoopee',\n 'whooping',\n 'whoops',\n 'why',\n 'wick',\n 'widely',\n 'widen',\n 'widget',\n 'widow',\n 'width',\n 'wieldable',\n 'wielder',\n 'wife',\n 'wifi',\n 'wikipedia',\n 'wildcard',\n 'wildcat',\n 'wilder',\n 'wildfire',\n 'wildfowl',\n 'wildland',\n 'wildlife',\n 'wildly',\n 'wildness',\n 'willed',\n 'willfully',\n 'willing',\n 'willow',\n 'willpower',\n 'wilt',\n 'wimp',\n 'wince',\n 'wincing',\n 'wind',\n 'wing',\n 'winking',\n 'winner',\n 'winnings',\n 'winter',\n 'wipe',\n 'wired',\n 'wireless',\n 'wiring',\n 'wiry',\n 'wisdom',\n 'wise',\n 'wish',\n 'wisplike',\n 'wispy',\n 'wistful',\n 'wizard',\n 'wobble',\n 'wobbling',\n 'wobbly',\n 'wok',\n 'wolf',\n 'wolverine',\n 'womanhood',\n 'womankind',\n 'womanless',\n 'womanlike',\n 'womanly',\n 'womb',\n 'woof',\n 'wooing',\n 'wool',\n 'woozy',\n 'word',\n 'work',\n 'worried',\n 'worrier',\n 'worrisome',\n 'worry',\n 'worsening',\n 'worshiper',\n 'worst',\n 'wound',\n 'woven',\n 'wow',\n 'wrangle',\n 'wrath',\n 'wreath',\n 'wreckage',\n 'wrecker',\n 'wrecking',\n 'wrench',\n 'wriggle',\n 'wriggly',\n 'wrinkle',\n 'wrinkly',\n 'wrist',\n 'writing',\n 'written',\n 'wrongdoer',\n 'wronged',\n 'wrongful',\n 'wrongly',\n 'wrongness',\n 'wrought',\n 'xbox',\n 'xerox',\n 'yahoo',\n 'yam',\n 'yanking',\n 'yapping',\n 'yard',\n 'yarn',\n 'yeah',\n 'yearbook',\n 'yearling',\n 'yearly',\n 'yearning',\n 'yeast',\n 'yelling',\n 'yelp',\n 'yen',\n 'yesterday',\n 'yiddish',\n 'yield',\n 'yin',\n 'yippee',\n 'yo-yo',\n 'yodel',\n 'yoga',\n 'yogurt',\n 'yonder',\n 'yoyo',\n 'yummy',\n 'zap',\n 'zealous',\n 'zebra',\n 'zen',\n 'zeppelin',\n 'zero',\n 'zestfully',\n 'zesty',\n 'zigzagged',\n 'zipfile',\n 'zipping',\n 'zippy',\n 'zips',\n 'zit',\n 'zodiac',\n 'zombie',\n 'zone',\n 'zoning',\n 'zookeeper',\n 'zoologist',\n 'zoology',\n 'zoom',\n];\n","import { Observable, Subject } from 'rxjs';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { ConstantsService } from './constants.service';\n\nimport { EnvironmentService as EnvironmentServiceAbstraction, Urls } from '../abstractions/environment.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class EnvironmentService implements EnvironmentServiceAbstraction {\n\n private readonly urlsSubject = new Subject();\n urls: Observable = this.urlsSubject; // tslint:disable-line\n\n private baseUrl: string;\n private webVaultUrl: string;\n private apiUrl: string;\n private identityUrl: string;\n private iconsUrl: string;\n private notificationsUrl: string;\n private eventsUrl: string;\n private enterpriseUrl: string;\n\n constructor(private storageService: StorageService) {}\n\n hasBaseUrl() {\n return this.baseUrl != null;\n }\n\n getNotificationsUrl() {\n if (this.notificationsUrl != null) {\n return this.notificationsUrl;\n }\n\n if (this.baseUrl != null) {\n return this.baseUrl + '/notifications';\n }\n\n return 'https://notifications.bitwarden.com';\n }\n\n getEnterpriseUrl() {\n if (this.enterpriseUrl != null) {\n return this.enterpriseUrl;\n }\n\n if (this.baseUrl != null) {\n return this.baseUrl + '/portal';\n }\n\n return 'https://portal.bitwarden.com';\n }\n\n getWebVaultUrl() {\n if (this.webVaultUrl != null) {\n return this.webVaultUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl;\n }\n return 'https://vault.bitwarden.com';\n }\n\n getSendUrl() {\n return this.getWebVaultUrl() === 'https://vault.bitwarden.com'\n ? 'https://send.bitwarden.com/#'\n : this.getWebVaultUrl() + '/#/send/';\n }\n\n getIconsUrl() {\n if (this.iconsUrl != null) {\n return this.iconsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/icons';\n }\n\n return 'https://icons.bitwarden.net';\n }\n\n getApiUrl() {\n if (this.apiUrl != null) {\n return this.apiUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/api';\n }\n\n return 'https://api.bitwarden.com';\n }\n\n getIdentityUrl() {\n if (this.identityUrl != null) {\n return this.identityUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/identity';\n }\n\n return 'https://identity.bitwarden.com';\n }\n\n getEventsUrl() {\n if (this.eventsUrl != null) {\n return this.eventsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/events';\n }\n\n return 'https://events.bitwarden.com';\n }\n\n async setUrlsFromStorage(): Promise {\n const urlsObj: any = await this.storageService.get(ConstantsService.environmentUrlsKey);\n const urls = urlsObj || {\n base: null,\n api: null,\n identity: null,\n icons: null,\n notifications: null,\n events: null,\n webVault: null,\n enterprise: null,\n };\n\n const envUrls = new EnvironmentUrls();\n\n if (urls.base) {\n this.baseUrl = envUrls.base = urls.base;\n return;\n }\n\n this.webVaultUrl = urls.webVault;\n this.apiUrl = envUrls.api = urls.api;\n this.identityUrl = envUrls.identity = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = envUrls.events = urls.events;\n this.enterpriseUrl = urls.enterprise;\n }\n\n async setUrls(urls: Urls, saveSettings: boolean = true): Promise {\n urls.base = this.formatUrl(urls.base);\n urls.webVault = this.formatUrl(urls.webVault);\n urls.api = this.formatUrl(urls.api);\n urls.identity = this.formatUrl(urls.identity);\n urls.icons = this.formatUrl(urls.icons);\n urls.notifications = this.formatUrl(urls.notifications);\n urls.events = this.formatUrl(urls.events);\n urls.enterprise = this.formatUrl(urls.enterprise);\n\n if (saveSettings) {\n await this.storageService.save(ConstantsService.environmentUrlsKey, {\n base: urls.base,\n api: urls.api,\n identity: urls.identity,\n webVault: urls.webVault,\n icons: urls.icons,\n notifications: urls.notifications,\n events: urls.events,\n enterprise: urls.enterprise,\n });\n }\n\n this.baseUrl = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = urls.api;\n this.identityUrl = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = urls.events;\n this.enterpriseUrl = urls.enterprise;\n\n this.urlsSubject.next(urls);\n\n return urls;\n }\n\n getUrls() {\n return {\n base: this.baseUrl,\n webVault: this.webVaultUrl,\n api: this.apiUrl,\n identity: this.identityUrl,\n icons: this.iconsUrl,\n notifications: this.notificationsUrl,\n events: this.eventsUrl,\n enterprise: this.enterpriseUrl,\n };\n }\n\n private formatUrl(url: string): string {\n if (url == null || url === '') {\n return null;\n }\n\n url = url.replace(/\\/+$/g, '');\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n url = 'https://' + url;\n }\n\n return url.trim();\n }\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderRequest } from '../models/request/folderRequest';\n\nimport { FolderResponse } from '../models/response/folderResponse';\n\nimport { FolderView } from '../models/view/folderView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService as FolderServiceAbstraction } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\nimport { CipherData } from '../models/data/cipherData';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n foldersPrefix: 'folders_',\n ciphersPrefix: 'ciphers_',\n};\nconst NestingDelimiter = '/';\n\nexport class FolderService implements FolderServiceAbstraction {\n decryptedFolderCache: FolderView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private storageService: StorageService,\n private i18nService: I18nService, private cipherService: CipherService) { }\n\n clearCache(): void {\n this.decryptedFolderCache = null;\n }\n\n async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise {\n const folder = new Folder();\n folder.id = model.id;\n folder.name = await this.cryptoService.encrypt(model.name, key);\n return folder;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null || !folders.hasOwnProperty(id)) {\n return null;\n }\n\n return new Folder(folders[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n const response: Folder[] = [];\n for (const id in folders) {\n if (folders.hasOwnProperty(id)) {\n response.push(new Folder(folders[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedFolderCache != null) {\n return this.decryptedFolderCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decFolders: FolderView[] = [];\n const promises: Promise[] = [];\n const folders = await this.getAll();\n folders.forEach(folder => {\n promises.push(folder.decrypt().then(f => decFolders.push(f)));\n });\n\n await Promise.all(promises);\n decFolders.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n const noneFolder = new FolderView();\n noneFolder.name = this.i18nService.t('noneFolder');\n decFolders.push(noneFolder);\n\n this.decryptedFolderCache = decFolders;\n return this.decryptedFolderCache;\n }\n\n async getAllNested(): Promise[]> {\n const folders = await this.getAllDecrypted();\n const nodes: TreeNode[] = [];\n folders.forEach(f => {\n const folderCopy = new FolderView();\n folderCopy.id = f.id;\n folderCopy.revisionDate = f.revisionDate;\n const parts = f.name != null ? f.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, folderCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const folders = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode;\n }\n\n async saveWithServer(folder: Folder): Promise {\n const request = new FolderRequest(folder);\n\n let response: FolderResponse;\n if (folder.id == null) {\n response = await this.apiService.postFolder(request);\n folder.id = response.id;\n } else {\n response = await this.apiService.putFolder(folder.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new FolderData(response, userId);\n await this.upsert(data);\n }\n\n async upsert(folder: FolderData | FolderData[]): Promise {\n const userId = await this.userService.getUserId();\n let folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n folders = {};\n }\n\n if (folder instanceof FolderData) {\n const f = folder as FolderData;\n folders[f.id] = f;\n } else {\n (folder as FolderData[]).forEach(f => {\n folders[f.id] = f;\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async replace(folders: { [id: string]: FolderData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.foldersPrefix + userId);\n this.decryptedFolderCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (folders[id] == null) {\n return;\n }\n delete folders[id];\n } else {\n (id as string[]).forEach(i => {\n delete folders[i];\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n\n // Items in a deleted folder are re-assigned to \"No Folder\"\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(Keys.ciphersPrefix + userId);\n if (ciphers != null) {\n const updates: CipherData[] = [];\n for (const cId in ciphers) {\n if (ciphers[cId].folderId === id) {\n ciphers[cId].folderId = null;\n updates.push(ciphers[cId]);\n }\n }\n if (updates.length > 0) {\n this.cipherService.upsert(updates);\n }\n }\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteFolder(id);\n await this.delete(id);\n }\n}\n","import { I18nService as I18nServiceAbstraction } from '../abstractions/i18n.service';\n\nexport class I18nService implements I18nServiceAbstraction {\n locale: string;\n // First locale is the default (English)\n supportedTranslationLocales: string[] = ['en'];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames = new Map([\n ['af', 'Afrikaans'],\n ['az', 'Azərbaycanca'],\n ['be', 'Беларуская'],\n ['bg', 'български'],\n ['ca', 'català'],\n ['cs', 'čeština'],\n ['da', 'dansk'],\n ['de', 'Deutsch'],\n ['el', 'Ελληνικά'],\n ['en', 'English'],\n ['en-GB', 'English (British)'],\n ['eo', 'Esperanto'],\n ['es', 'español'],\n ['et', 'eesti'],\n ['fa', 'فارسی'],\n ['fi', 'suomi'],\n ['fr', 'français'],\n ['he', 'עברית'],\n ['hi', 'हिन्दी'],\n ['hr', 'hrvatski'],\n ['hu', 'magyar'],\n ['id', 'Bahasa Indonesia'],\n ['it', 'italiano'],\n ['ja', '日本語'],\n ['ko', '한국어'],\n ['lv', 'Latvietis'],\n ['ml', 'മലയാളം'],\n ['nb', 'norsk (bokmål)'],\n ['nl', 'Nederlands'],\n ['pl', 'polski'],\n ['pt-BR', 'português do Brasil'],\n ['pt-PT', 'português'],\n ['ro', 'română'],\n ['ru', 'русский'],\n ['sk', 'slovenčina'],\n ['sr', 'Српски'],\n ['sv', 'svenska'],\n ['th', 'ไทย'],\n ['tr', 'Türkçe'],\n ['uk', 'українська'],\n ['vi', 'Tiếng Việt'],\n ['zh-CN', '中文(中国大陆)'],\n ['zh-TW', '中文(台灣)'],\n ]);\n\n protected inited: boolean;\n protected defaultMessages: any = {};\n protected localeMessages: any = {};\n\n constructor(protected systemLanguage: string, protected localesDirectory: string,\n protected getLocalesJson: (formattedLocale: string) => Promise) {\n this.systemLanguage = systemLanguage.replace('_', '-');\n }\n\n async init(locale?: string) {\n if (this.inited) {\n throw new Error('i18n already initialized.');\n }\n if (this.supportedTranslationLocales == null || this.supportedTranslationLocales.length === 0) {\n throw new Error('supportedTranslationLocales not set.');\n }\n\n this.inited = true;\n this.locale = this.translationLocale = locale != null ? locale : this.systemLanguage;\n\n try {\n this.collator = new Intl.Collator(this.locale, { numeric: true, sensitivity: 'base' });\n } catch {\n this.collator = null;\n }\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.translationLocale.slice(0, 2);\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.supportedTranslationLocales[0];\n }\n }\n\n if (this.localesDirectory != null) {\n await this.loadMessages(this.translationLocale, this.localeMessages);\n if (this.translationLocale !== this.supportedTranslationLocales[0]) {\n await this.loadMessages(this.supportedTranslationLocales[0], this.defaultMessages);\n }\n }\n }\n\n t(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.translate(id, p1, p2, p3);\n }\n\n translate(id: string, p1?: string, p2?: string, p3?: string): string {\n let result: string;\n if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {\n result = this.localeMessages[id];\n } else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {\n result = this.defaultMessages[id];\n } else {\n result = '';\n }\n\n if (result !== '') {\n if (p1 != null) {\n result = result.split('__$1__').join(p1);\n }\n if (p2 != null) {\n result = result.split('__$2__').join(p2);\n }\n if (p3 != null) {\n result = result.split('__$3__').join(p3);\n }\n }\n\n return result;\n }\n\n private async loadMessages(locale: string, messagesObj: any): Promise {\n const formattedLocale = locale.replace('-', '_');\n const locales = await this.getLocalesJson(formattedLocale);\n for (const prop in locales) {\n if (!locales.hasOwnProperty(prop)) {\n continue;\n }\n messagesObj[prop] = locales[prop].message;\n\n if (locales[prop].placeholders) {\n for (const placeProp in locales[prop].placeholders) {\n if (!locales[prop].placeholders.hasOwnProperty(placeProp) ||\n !locales[prop].placeholders[placeProp].content) {\n continue;\n }\n\n const replaceToken = '\\\\$' + placeProp.toUpperCase() + '\\\\$';\n let replaceContent = locales[prop].placeholders[placeProp].content;\n if (replaceContent === '$1' || replaceContent === '$2' || replaceContent === '$3') {\n replaceContent = '__$' + replaceContent + '__';\n }\n messagesObj[prop] = messagesObj[prop].replace(new RegExp(replaceToken, 'g'), replaceContent);\n }\n }\n }\n }\n\n}\n","import * as zxcvbn from 'zxcvbn';\n\nimport { EncString } from '../models/domain/encString';\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from '../abstractions/passwordGeneration.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { EEFLongWordList } from '../misc/wordlist';\n\nimport { PolicyType } from '../enums/policyType';\n\nconst DefaultOptions = {\n length: 14,\n ambiguous: false,\n number: true,\n minNumber: 1,\n uppercase: true,\n minUppercase: 0,\n lowercase: true,\n minLowercase: 0,\n special: false,\n minSpecial: 1,\n type: 'password',\n numWords: 3,\n wordSeparator: '-',\n capitalize: false,\n includeNumber: false,\n};\n\nconst Keys = {\n options: 'passwordGenerationOptions',\n history: 'generatedPasswordHistory',\n};\n\nconst MaxPasswordsInHistory = 100;\n\nexport class PasswordGenerationService implements PasswordGenerationServiceAbstraction {\n private optionsCache: any;\n private history: GeneratedPasswordHistory[];\n\n constructor(private cryptoService: CryptoService, private storageService: StorageService,\n private policyService: PolicyService) { }\n\n async generatePassword(options: any): Promise {\n // overload defaults with given options\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.type === 'passphrase') {\n return this.generatePassphrase(options);\n }\n\n // sanitize\n this.sanitizePasswordLength(o, true);\n\n const minLength: number = o.minUppercase + o.minLowercase + o.minNumber + o.minSpecial;\n if (o.length < minLength) {\n o.length = minLength;\n }\n\n const positions: string[] = [];\n if (o.lowercase && o.minLowercase > 0) {\n for (let i = 0; i < o.minLowercase; i++) {\n positions.push('l');\n }\n }\n if (o.uppercase && o.minUppercase > 0) {\n for (let i = 0; i < o.minUppercase; i++) {\n positions.push('u');\n }\n }\n if (o.number && o.minNumber > 0) {\n for (let i = 0; i < o.minNumber; i++) {\n positions.push('n');\n }\n }\n if (o.special && o.minSpecial > 0) {\n for (let i = 0; i < o.minSpecial; i++) {\n positions.push('s');\n }\n }\n while (positions.length < o.length) {\n positions.push('a');\n }\n\n // shuffle\n await this.shuffleArray(positions);\n\n // build out the char sets\n let allCharSet = '';\n\n let lowercaseCharSet = 'abcdefghijkmnopqrstuvwxyz';\n if (o.ambiguous) {\n lowercaseCharSet += 'l';\n }\n if (o.lowercase) {\n allCharSet += lowercaseCharSet;\n }\n\n let uppercaseCharSet = 'ABCDEFGHJKLMNPQRSTUVWXYZ';\n if (o.ambiguous) {\n uppercaseCharSet += 'IO';\n }\n if (o.uppercase) {\n allCharSet += uppercaseCharSet;\n }\n\n let numberCharSet = '23456789';\n if (o.ambiguous) {\n numberCharSet += '01';\n }\n if (o.number) {\n allCharSet += numberCharSet;\n }\n\n const specialCharSet = '!@#$%^&*';\n if (o.special) {\n allCharSet += specialCharSet;\n }\n\n let password = '';\n for (let i = 0; i < o.length; i++) {\n let positionChars: string;\n switch (positions[i]) {\n case 'l':\n positionChars = lowercaseCharSet;\n break;\n case 'u':\n positionChars = uppercaseCharSet;\n break;\n case 'n':\n positionChars = numberCharSet;\n break;\n case 's':\n positionChars = specialCharSet;\n break;\n case 'a':\n positionChars = allCharSet;\n break;\n default:\n break;\n }\n\n const randomCharIndex = await this.cryptoService.randomNumber(0, positionChars.length - 1);\n password += positionChars.charAt(randomCharIndex);\n }\n\n return password;\n }\n\n async generatePassphrase(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.numWords == null || o.numWords <= 2) {\n o.numWords = DefaultOptions.numWords;\n }\n if (o.wordSeparator == null || o.wordSeparator.length === 0 || o.wordSeparator.length > 1) {\n o.wordSeparator = ' ';\n }\n if (o.capitalize == null) {\n o.capitalize = false;\n }\n if (o.includeNumber == null) {\n o.includeNumber = false;\n }\n\n const listLength = EEFLongWordList.length - 1;\n const wordList = new Array(o.numWords);\n for (let i = 0; i < o.numWords; i++) {\n const wordIndex = await this.cryptoService.randomNumber(0, listLength);\n if (o.capitalize) {\n wordList[i] = this.capitalize(EEFLongWordList[wordIndex]);\n } else {\n wordList[i] = EEFLongWordList[wordIndex];\n }\n }\n\n if (o.includeNumber) {\n await this.appendRandomNumberToRandomWord(wordList);\n }\n return wordList.join(o.wordSeparator);\n }\n\n async getOptions(): Promise<[any, PasswordGeneratorPolicyOptions]> {\n if (this.optionsCache == null) {\n const options = await this.storageService.get(Keys.options);\n if (options == null) {\n this.optionsCache = DefaultOptions;\n } else {\n this.optionsCache = Object.assign({}, DefaultOptions, options);\n }\n }\n const enforcedOptions = await this.enforcePasswordGeneratorPoliciesOnOptions(this.optionsCache);\n this.optionsCache = enforcedOptions[0];\n return [this.optionsCache, enforcedOptions[1]];\n }\n\n async enforcePasswordGeneratorPoliciesOnOptions(options: any): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let enforcedPolicyOptions = await this.getPasswordGeneratorPolicyOptions();\n if (enforcedPolicyOptions != null) {\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (enforcedPolicyOptions.useUppercase) {\n options.uppercase = true;\n }\n\n if (enforcedPolicyOptions.useLowercase) {\n options.lowercase = true;\n }\n\n if (enforcedPolicyOptions.useNumbers) {\n options.number = true;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (enforcedPolicyOptions.useSpecial) {\n options.special = true;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n // Must normalize these fields because the receiving call expects all options to pass the current rules\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (enforcedPolicyOptions.capitalize) {\n options.capitalize = true;\n }\n\n if (enforcedPolicyOptions.includeNumber) {\n options.includeNumber = true;\n }\n\n // Force default type if password/passphrase selected via policy\n if (enforcedPolicyOptions.defaultType === 'password' ||\n enforcedPolicyOptions.defaultType === 'passphrase') {\n options.type = enforcedPolicyOptions.defaultType;\n }\n } else { // UI layer expects an instantiated object to prevent more explicit null checks\n enforcedPolicyOptions = new PasswordGeneratorPolicyOptions();\n }\n return [options, enforcedPolicyOptions];\n }\n\n async getPasswordGeneratorPolicyOptions(): Promise {\n const policies: Policy[] = this.policyService == null ? null :\n await this.policyService.getAll(PolicyType.PasswordGenerator);\n let enforcedOptions: PasswordGeneratorPolicyOptions = null;\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new PasswordGeneratorPolicyOptions();\n }\n\n // Password wins in multi-org collisions\n if (currentPolicy.data.defaultType != null && enforcedOptions.defaultType !== 'password') {\n enforcedOptions.defaultType = currentPolicy.data.defaultType;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.useUpper) {\n enforcedOptions.useUppercase = true;\n }\n\n if (currentPolicy.data.useLower) {\n enforcedOptions.useLowercase = true;\n }\n\n if (currentPolicy.data.useNumbers) {\n enforcedOptions.useNumbers = true;\n }\n\n if (currentPolicy.data.minNumbers != null\n && currentPolicy.data.minNumbers > enforcedOptions.numberCount) {\n enforcedOptions.numberCount = currentPolicy.data.minNumbers;\n }\n\n if (currentPolicy.data.useSpecial) {\n enforcedOptions.useSpecial = true;\n }\n\n if (currentPolicy.data.minSpecial != null\n && currentPolicy.data.minSpecial > enforcedOptions.specialCount) {\n enforcedOptions.specialCount = currentPolicy.data.minSpecial;\n }\n\n if (currentPolicy.data.minNumberWords != null\n && currentPolicy.data.minNumberWords > enforcedOptions.minNumberWords) {\n enforcedOptions.minNumberWords = currentPolicy.data.minNumberWords;\n }\n\n if (currentPolicy.data.capitalize) {\n enforcedOptions.capitalize = true;\n }\n\n if (currentPolicy.data.includeNumber) {\n enforcedOptions.includeNumber = true;\n }\n });\n\n return enforcedOptions;\n }\n\n async saveOptions(options: any) {\n await this.storageService.save(Keys.options, options);\n this.optionsCache = options;\n }\n\n async getHistory(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return new Array();\n }\n\n if (!this.history) {\n const encrypted = await this.storageService.get(Keys.history);\n this.history = await this.decryptHistory(encrypted);\n }\n\n return this.history || new Array();\n }\n\n async addHistory(password: string): Promise {\n // Cannot add new history if no key is available\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return;\n }\n\n const currentHistory = await this.getHistory();\n\n // Prevent duplicates\n if (this.matchesPrevious(password, currentHistory)) {\n return;\n }\n\n currentHistory.unshift(new GeneratedPasswordHistory(password, Date.now()));\n\n // Remove old items.\n if (currentHistory.length > MaxPasswordsInHistory) {\n currentHistory.pop();\n }\n\n const newHistory = await this.encryptHistory(currentHistory);\n return await this.storageService.save(Keys.history, newHistory);\n }\n\n async clear(): Promise {\n this.history = [];\n return await this.storageService.remove(Keys.history);\n }\n\n passwordStrength(password: string, userInputs: string[] = null): zxcvbn.ZXCVBNResult {\n if (password == null || password.length === 0) {\n return null;\n }\n let globalUserInputs = ['bitwarden', 'bit', 'warden'];\n if (userInputs != null && userInputs.length > 0) {\n globalUserInputs = globalUserInputs.concat(userInputs);\n }\n // Use a hash set to get rid of any duplicate user inputs\n const finalUserInputs = Array.from(new Set(globalUserInputs));\n const result = zxcvbn(password, finalUserInputs);\n return result;\n }\n\n normalizeOptions(options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) {\n options.minLowercase = 0;\n options.minUppercase = 0;\n\n if (!options.length || options.length < 5) {\n options.length = 5;\n } else if (options.length > 128) {\n options.length = 128;\n }\n\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (!options.minNumber) {\n options.minNumber = 0;\n } else if (options.minNumber > options.length) {\n options.minNumber = options.length;\n } else if (options.minNumber > 9) {\n options.minNumber = 9;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (!options.minSpecial) {\n options.minSpecial = 0;\n } else if (options.minSpecial > options.length) {\n options.minSpecial = options.length;\n } else if (options.minSpecial > 9) {\n options.minSpecial = 9;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords == null || options.length < 3) {\n options.numWords = 3;\n } else if (options.numWords > 20) {\n options.numWords = 20;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (options.wordSeparator != null && options.wordSeparator.length > 1) {\n options.wordSeparator = options.wordSeparator[0];\n }\n\n this.sanitizePasswordLength(options, false);\n }\n\n private capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n private async appendRandomNumberToRandomWord(wordList: string[]) {\n if (wordList == null || wordList.length <= 0) {\n return;\n }\n const index = await this.cryptoService.randomNumber(0, wordList.length - 1);\n const num = await this.cryptoService.randomNumber(0, 9);\n wordList[index] = wordList[index] + num;\n }\n\n private async encryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const encrypted = await this.cryptoService.encrypt(item.password);\n return new GeneratedPasswordHistory(encrypted.encryptedString, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private async decryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const decrypted = await this.cryptoService.decryptToUtf8(new EncString(item.password));\n return new GeneratedPasswordHistory(decrypted, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private matchesPrevious(password: string, history: GeneratedPasswordHistory[]): boolean {\n if (history == null || history.length === 0) {\n return false;\n }\n\n return history[history.length - 1].password === password;\n }\n\n // ref: https://stackoverflow.com/a/12646864/1090359\n private async shuffleArray(array: string[]) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = await this.cryptoService.randomNumber(0, i);\n [array[i], array[j]] = [array[j], array[i]];\n }\n }\n\n private sanitizePasswordLength(options: any, forGeneration: boolean) {\n let minUppercaseCalc = 0;\n let minLowercaseCalc = 0;\n let minNumberCalc: number = options.minNumber;\n let minSpecialCalc: number = options.minSpecial;\n\n if (options.uppercase && options.minUppercase <= 0) {\n minUppercaseCalc = 1;\n } else if (!options.uppercase) {\n minUppercaseCalc = 0;\n }\n\n if (options.lowercase && options.minLowercase <= 0) {\n minLowercaseCalc = 1;\n } else if (!options.lowercase) {\n minLowercaseCalc = 0;\n }\n\n if (options.number && options.minNumber <= 0) {\n minNumberCalc = 1;\n } else if (!options.number) {\n minNumberCalc = 0;\n }\n\n if (options.special && options.minSpecial <= 0) {\n minSpecialCalc = 1;\n } else if (!options.special) {\n minSpecialCalc = 0;\n }\n\n // This should never happen but is a final safety net\n if (!options.length || options.length < 1) {\n options.length = 10;\n }\n\n const minLength: number = minUppercaseCalc + minLowercaseCalc + minNumberCalc + minSpecialCalc;\n // Normalize and Generation both require this modification\n if (options.length < minLength) {\n options.length = minLength;\n }\n\n // Apply other changes if the options object passed in is for generation\n if (forGeneration) {\n options.minUppercase = minUppercaseCalc;\n options.minLowercase = minLowercaseCalc;\n options.minNumber = minNumberCalc;\n options.minSpecial = minSpecialCalc;\n }\n }\n}\n","import { SettingsService as SettingsServiceAbstraction } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nconst Keys = {\n settingsPrefix: 'settings_',\n equivalentDomains: 'equivalentDomains',\n};\n\nexport class SettingsService implements SettingsServiceAbstraction {\n private settingsCache: any;\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.settingsCache = null;\n }\n\n getEquivalentDomains(): Promise {\n return this.getSettingsKey(Keys.equivalentDomains);\n }\n\n async setEquivalentDomains(equivalentDomains: string[][]): Promise {\n await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains);\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.settingsPrefix + userId);\n this.clearCache();\n }\n\n // Helpers\n\n private async getSettings(): Promise {\n if (this.settingsCache == null) {\n const userId = await this.userService.getUserId();\n this.settingsCache = this.storageService.get(Keys.settingsPrefix + userId);\n }\n return this.settingsCache;\n }\n\n private async getSettingsKey(key: string): Promise {\n const settings = await this.getSettings();\n if (settings != null && settings[key]) {\n return settings[key];\n }\n return null;\n }\n\n private async setSettingsKey(key: string, value: any): Promise {\n const userId = await this.userService.getUserId();\n let settings = await this.getSettings();\n if (!settings) {\n settings = {};\n }\n\n settings[key] = value;\n await this.storageService.save(Keys.settingsPrefix + userId, settings);\n this.settingsCache = settings;\n }\n}\n","import { StateService as StateServiceAbstraction } from '../abstractions/state.service';\n\nexport class StateService implements StateServiceAbstraction {\n private state: any = {};\n\n get(key: string): Promise {\n if (this.state.hasOwnProperty(key)) {\n return Promise.resolve(this.state[key]);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n this.state[key] = obj;\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n delete this.state[key];\n return Promise.resolve();\n }\n\n purge(): Promise {\n this.state = {};\n return Promise.resolve();\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { SendService } from '../abstractions/send.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { FolderData } from '../models/data/folderData';\nimport { OrganizationData } from '../models/data/organizationData';\nimport { PolicyData } from '../models/data/policyData';\nimport { ProviderData } from '../models/data/providerData';\nimport { SendData } from '../models/data/sendData';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SendResponse } from '../models/response/sendResponse';\n\nconst Keys = {\n lastSyncPrefix: 'lastSync_',\n};\n\nexport class SyncService implements SyncServiceAbstraction {\n syncInProgress: boolean = false;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private settingsService: SettingsService, private folderService: FolderService,\n private cipherService: CipherService, private cryptoService: CryptoService,\n private collectionService: CollectionService, private storageService: StorageService,\n private messagingService: MessagingService, private policyService: PolicyService,\n private sendService: SendService, private logoutCallback: (expired: boolean) => Promise) {\n }\n\n async getLastSync(): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return null;\n }\n\n const lastSync = await this.storageService.get(Keys.lastSyncPrefix + userId);\n if (lastSync) {\n return new Date(lastSync);\n }\n\n return null;\n }\n\n async setLastSync(date: Date): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return;\n }\n\n await this.storageService.save(Keys.lastSyncPrefix + userId, date.toJSON());\n }\n\n async fullSync(forceSync: boolean, allowThrowOnError = false): Promise {\n this.syncStarted();\n const isAuthenticated = await this.userService.isAuthenticated();\n if (!isAuthenticated) {\n return this.syncCompleted(false);\n }\n\n const now = new Date();\n let needsSync = false;\n try {\n needsSync = await this.needsSyncing(forceSync);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n }\n }\n\n if (!needsSync) {\n await this.setLastSync(now);\n return this.syncCompleted(false);\n }\n\n const userId = await this.userService.getUserId();\n try {\n await this.apiService.refreshIdentityToken();\n const response = await this.apiService.getSync();\n\n await this.syncProfile(response.profile);\n await this.syncFolders(userId, response.folders);\n await this.syncCollections(response.collections);\n await this.syncCiphers(userId, response.ciphers);\n await this.syncSends(userId, response.sends);\n await this.syncSettings(userId, response.domains);\n await this.syncPolicies(response.policies);\n\n await this.setLastSync(now);\n return this.syncCompleted(true);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n } else {\n return this.syncCompleted(false);\n }\n }\n }\n\n async syncUpsertFolder(notification: SyncFolderNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localFolder = await this.folderService.get(notification.id);\n if ((!isEdit && localFolder == null) ||\n (isEdit && localFolder != null && localFolder.revisionDate < notification.revisionDate)) {\n const remoteFolder = await this.apiService.getFolder(notification.id);\n if (remoteFolder != null) {\n const userId = await this.userService.getUserId();\n await this.folderService.upsert(new FolderData(remoteFolder, userId));\n this.messagingService.send('syncedUpsertedFolder', { folderId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch { }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteFolder(notification: SyncFolderNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.folderService.delete(notification.id);\n this.messagingService.send('syncedDeletedFolder', { folderId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertCipher(notification: SyncCipherNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n let shouldUpdate = true;\n const localCipher = await this.cipherService.get(notification.id);\n if (localCipher != null && localCipher.revisionDate >= notification.revisionDate) {\n shouldUpdate = false;\n }\n\n let checkCollections = false;\n if (shouldUpdate) {\n if (isEdit) {\n shouldUpdate = localCipher != null;\n checkCollections = true;\n } else {\n if (notification.collectionIds == null || notification.organizationId == null) {\n shouldUpdate = localCipher == null;\n } else {\n shouldUpdate = false;\n checkCollections = true;\n }\n }\n }\n\n if (!shouldUpdate && checkCollections && notification.organizationId != null &&\n notification.collectionIds != null && notification.collectionIds.length > 0) {\n const collections = await this.collectionService.getAll();\n if (collections != null) {\n for (let i = 0; i < collections.length; i++) {\n if (notification.collectionIds.indexOf(collections[i].id) > -1) {\n shouldUpdate = true;\n break;\n }\n }\n }\n }\n\n if (shouldUpdate) {\n const remoteCipher = await this.apiService.getCipher(notification.id);\n if (remoteCipher != null) {\n const userId = await this.userService.getUserId();\n await this.cipherService.upsert(new CipherData(remoteCipher, userId));\n this.messagingService.send('syncedUpsertedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n if (e != null && e.statusCode === 404 && isEdit) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteCipher(notification: SyncCipherNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertSend(notification: SyncSendNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localSend = await this.sendService.get(notification.id);\n if ((!isEdit && localSend == null) ||\n (isEdit && localSend != null && localSend.revisionDate < notification.revisionDate)) {\n const remoteSend = await this.apiService.getSend(notification.id);\n if (remoteSend != null) {\n const userId = await this.userService.getUserId();\n await this.sendService.upsert(new SendData(remoteSend, userId));\n this.messagingService.send('syncedUpsertedSend', { sendId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch { }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteSend(notification: SyncSendNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.sendService.delete(notification.id);\n this.messagingService.send('syncedDeletedSend', { sendId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n // Helpers\n\n private syncStarted() {\n this.syncInProgress = true;\n this.messagingService.send('syncStarted');\n }\n\n private syncCompleted(successfully: boolean): boolean {\n this.syncInProgress = false;\n this.messagingService.send('syncCompleted', { successfully: successfully });\n return successfully;\n }\n\n private async needsSyncing(forceSync: boolean) {\n if (forceSync) {\n return true;\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return true;\n }\n\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return false;\n }\n return true;\n }\n\n private async syncProfile(response: ProfileResponse) {\n const stamp = await this.userService.getSecurityStamp();\n if (stamp != null && stamp !== response.securityStamp) {\n if (this.logoutCallback != null) {\n await this.logoutCallback(true);\n }\n\n throw new Error('Stamp has changed');\n }\n\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(response.privateKey);\n await this.cryptoService.setProviderKeys(response.providers);\n await this.cryptoService.setOrgKeys(response.organizations, response.providerOrganizations);\n await this.userService.setSecurityStamp(response.securityStamp);\n await this.userService.setEmailVerified(response.emailVerified);\n await this.userService.setForcePasswordReset(response.forcePasswordReset);\n\n const organizations: { [id: string]: OrganizationData; } = {};\n response.organizations.forEach(o => {\n organizations[o.id] = new OrganizationData(o);\n });\n\n const providers: { [id: string]: ProviderData; } = {};\n response.providers.forEach(p => {\n providers[p.id] = new ProviderData(p);\n });\n\n response.providerOrganizations.forEach(o => {\n if (organizations[o.id] == null) {\n organizations[o.id] = new OrganizationData(o);\n organizations[o.id].isProviderUser = true;\n }\n });\n return Promise.all([\n this.userService.replaceOrganizations(organizations),\n this.userService.replaceProviders(providers),\n ]);\n }\n\n private async syncFolders(userId: string, response: FolderResponse[]) {\n const folders: { [id: string]: FolderData; } = {};\n response.forEach(f => {\n folders[f.id] = new FolderData(f, userId);\n });\n return await this.folderService.replace(folders);\n }\n\n private async syncCollections(response: CollectionDetailsResponse[]) {\n const collections: { [id: string]: CollectionData; } = {};\n response.forEach(c => {\n collections[c.id] = new CollectionData(c);\n });\n return await this.collectionService.replace(collections);\n }\n\n private async syncCiphers(userId: string, response: CipherResponse[]) {\n const ciphers: { [id: string]: CipherData; } = {};\n response.forEach(c => {\n ciphers[c.id] = new CipherData(c, userId);\n });\n return await this.cipherService.replace(ciphers);\n }\n\n private async syncSends(userId: string, response: SendResponse[]) {\n const sends: { [id: string]: SendData; } = {};\n response.forEach(s => {\n sends[s.id] = new SendData(s, userId);\n });\n return await this.sendService.replace(sends);\n }\n\n private async syncSettings(userId: string, response: DomainsResponse) {\n let eqDomains: string[][] = [];\n if (response != null && response.equivalentDomains != null) {\n eqDomains = eqDomains.concat(response.equivalentDomains);\n }\n\n if (response != null && response.globalEquivalentDomains != null) {\n response.globalEquivalentDomains.forEach(global => {\n if (global.domains.length > 0) {\n eqDomains.push(global.domains);\n }\n });\n }\n\n return this.settingsService.setEquivalentDomains(eqDomains);\n }\n\n private async syncPolicies(response: PolicyResponse[]) {\n const policies: { [id: string]: PolicyData; } = {};\n if (response != null) {\n response.forEach(p => {\n policies[p.id] = new PolicyData(p);\n });\n }\n return await this.policyService.replace(policies);\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileData } from './sendFileData';\nimport { SendTextData } from './sendTextData';\n\nimport { SendResponse } from '../response/sendResponse';\n\nexport class SendData {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileData;\n text: SendTextData;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(response?: SendResponse, userId?: string) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.accessId = response.accessId;\n this.userId = userId;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.key = response.key;\n this.maxAccessCount = response.maxAccessCount;\n this.accessCount = response.accessCount;\n this.revisionDate = response.revisionDate;\n this.expirationDate = response.expirationDate;\n this.deletionDate = response.deletionDate;\n this.password = response.password;\n this.disabled = response.disable;\n this.hideEmail = response.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextData(response.text);\n break;\n case SendType.File:\n this.file = new SendFileData(response.file);\n break;\n default:\n break;\n }\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService as TokenServiceAbstraction } from '../abstractions/token.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n accessToken: 'accessToken',\n refreshToken: 'refreshToken',\n twoFactorTokenPrefix: 'twoFactorToken_',\n clientId: 'apikey_clientId',\n clientSecret: 'apikey_clientSecret',\n};\n\nexport class TokenService implements TokenServiceAbstraction {\n token: string;\n decodedToken: any;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n\n constructor(private storageService: StorageService) {\n }\n\n async setTokens(accessToken: string, refreshToken: string, clientIdClientSecret: [string, string]): Promise {\n await this.setToken(accessToken);\n await this.setRefreshToken(refreshToken);\n if (clientIdClientSecret != null) {\n await this.setClientId(clientIdClientSecret[0]);\n await this.setClientSecret(clientIdClientSecret[1]);\n }\n }\n\n async setClientId(clientId: string): Promise {\n this.clientId = clientId;\n return this.storeTokenValue(Keys.clientId, clientId);\n }\n\n async getClientId(): Promise {\n if (this.clientId != null) {\n return this.clientId;\n }\n\n this.clientId = await this.storageService.get(Keys.clientId);\n return this.clientId;\n }\n\n async setClientSecret(clientSecret: string): Promise {\n this.clientSecret = clientSecret;\n return this.storeTokenValue(Keys.clientSecret, clientSecret);\n }\n\n async getClientSecret(): Promise {\n if (this.clientSecret != null) {\n return this.clientSecret;\n }\n\n this.clientSecret = await this.storageService.get(Keys.clientSecret);\n return this.clientSecret;\n }\n\n async setToken(token: string): Promise {\n this.token = token;\n this.decodedToken = null;\n return this.storeTokenValue(Keys.accessToken, token);\n }\n\n async getToken(): Promise {\n if (this.token != null) {\n return this.token;\n }\n\n this.token = await this.storageService.get(Keys.accessToken);\n return this.token;\n }\n\n async setRefreshToken(refreshToken: string): Promise {\n this.refreshToken = refreshToken;\n return this.storeTokenValue(Keys.refreshToken, refreshToken);\n }\n\n async getRefreshToken(): Promise {\n if (this.refreshToken != null) {\n return this.refreshToken;\n }\n\n this.refreshToken = await this.storageService.get(Keys.refreshToken);\n return this.refreshToken;\n }\n\n async toggleTokens(): Promise {\n const token = await this.getToken();\n const refreshToken = await this.getRefreshToken();\n const clientId = await this.getClientId();\n const clientSecret = await this.getClientSecret();\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n if ((timeout != null || timeout === 0) && action === 'logOut') {\n // if we have a vault timeout and the action is log out, reset tokens\n await this.clearToken();\n this.token = token;\n this.refreshToken = refreshToken;\n this.clientId = clientId;\n this.clientSecret = clientSecret;\n return;\n }\n\n await this.setToken(token);\n await this.setRefreshToken(refreshToken);\n await this.setClientId(clientId);\n await this.setClientSecret(clientSecret);\n }\n\n setTwoFactorToken(token: string, email: string): Promise {\n return this.storageService.save(Keys.twoFactorTokenPrefix + email, token);\n }\n\n getTwoFactorToken(email: string): Promise {\n return this.storageService.get(Keys.twoFactorTokenPrefix + email);\n }\n\n clearTwoFactorToken(email: string): Promise {\n return this.storageService.remove(Keys.twoFactorTokenPrefix + email);\n }\n\n async clearToken(): Promise {\n this.token = null;\n this.decodedToken = null;\n this.refreshToken = null;\n this.clientId = null;\n this.clientSecret = null;\n\n await this.storageService.remove(Keys.accessToken);\n await this.storageService.remove(Keys.refreshToken);\n await this.storageService.remove(Keys.clientId);\n await this.storageService.remove(Keys.clientSecret);\n }\n\n // jwthelper methods\n // ref https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/jwt.js\n\n decodeToken(): any {\n if (this.decodedToken) {\n return this.decodedToken;\n }\n\n if (this.token == null) {\n throw new Error('Token not found.');\n }\n\n const parts = this.token.split('.');\n if (parts.length !== 3) {\n throw new Error('JWT must have 3 parts');\n }\n\n const decoded = Utils.fromUrlB64ToUtf8(parts[1]);\n if (decoded == null) {\n throw new Error('Cannot decode the token');\n }\n\n this.decodedToken = JSON.parse(decoded);\n return this.decodedToken;\n }\n\n getTokenExpirationDate(): Date {\n const decoded = this.decodeToken();\n if (typeof decoded.exp === 'undefined') {\n return null;\n }\n\n const d = new Date(0); // The 0 here is the key, which sets the date to the epoch\n d.setUTCSeconds(decoded.exp);\n return d;\n }\n\n tokenSecondsRemaining(offsetSeconds: number = 0): number {\n const d = this.getTokenExpirationDate();\n if (d == null) {\n return 0;\n }\n\n const msRemaining = d.valueOf() - (new Date().valueOf() + (offsetSeconds * 1000));\n return Math.round(msRemaining / 1000);\n }\n\n tokenNeedsRefresh(minutes: number = 5): boolean {\n const sRemaining = this.tokenSecondsRemaining();\n return sRemaining < (60 * minutes);\n }\n\n getUserId(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.sub === 'undefined') {\n throw new Error('No user id found');\n }\n\n return decoded.sub as string;\n }\n\n getEmail(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.email === 'undefined') {\n throw new Error('No email found');\n }\n\n return decoded.email as string;\n }\n\n getEmailVerified(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.email_verified === 'undefined') {\n throw new Error('No email verification found');\n }\n\n return decoded.email_verified as boolean;\n }\n\n getName(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.name === 'undefined') {\n return null;\n }\n\n return decoded.name as string;\n }\n\n getPremium(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.premium === 'undefined') {\n return false;\n }\n\n return decoded.premium as boolean;\n }\n\n getIssuer(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.iss === 'undefined') {\n throw new Error('No issuer found');\n }\n\n return decoded.iss as string;\n }\n\n private async storeTokenValue(key: string, value: string) {\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(key, value);\n }\n\n private async skipTokenStorage(): Promise {\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n return timeout != null && action === 'logOut';\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TotpService as TotpServiceAbstraction } from '../abstractions/totp.service';\n\nimport { Utils } from '../misc/utils';\n\nconst B32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nconst SteamChars = '23456789BCDFGHJKMNPQRTVWXY';\n\nexport class TotpService implements TotpServiceAbstraction {\n constructor(private storageService: StorageService, private cryptoFunctionService: CryptoFunctionService) { }\n\n async getCode(key: string): Promise {\n if (key == null) {\n return null;\n }\n let period = 30;\n let alg: 'sha1' | 'sha256' | 'sha512' = 'sha1';\n let digits = 6;\n let keyB32 = key;\n const isOtpAuth = key.toLowerCase().indexOf('otpauth://') === 0;\n const isSteamAuth = !isOtpAuth && key.toLowerCase().indexOf('steam://') === 0;\n if (isOtpAuth) {\n const params = Utils.getQueryParams(key);\n if (params.has('digits') && params.get('digits') != null) {\n try {\n const digitParams = parseInt(params.get('digits').trim(), null);\n if (digitParams > 10) {\n digits = 10;\n } else if (digitParams > 0) {\n digits = digitParams;\n }\n } catch { }\n }\n if (params.has('period') && params.get('period') != null) {\n try {\n const periodParam = parseInt(params.get('period').trim(), null);\n if (periodParam > 0) {\n period = periodParam;\n }\n } catch { }\n }\n if (params.has('secret') && params.get('secret') != null) {\n keyB32 = params.get('secret');\n }\n if (params.has('algorithm') && params.get('algorithm') != null) {\n const algParam = params.get('algorithm').toLowerCase();\n if (algParam === 'sha1' || algParam === 'sha256' || algParam === 'sha512') {\n alg = algParam;\n }\n }\n } else if (isSteamAuth) {\n keyB32 = key.substr('steam://'.length);\n digits = 5;\n }\n\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const timeHex = this.leftPad(this.decToHex(Math.floor(epoch / period)), 16, '0');\n const timeBytes = Utils.fromHexToArray(timeHex);\n const keyBytes = this.b32ToBytes(keyB32);\n\n if (!keyBytes.length || !timeBytes.length) {\n return null;\n }\n\n const hash = await this.sign(keyBytes, timeBytes, alg);\n if (hash.length === 0) {\n return null;\n }\n\n /* tslint:disable */\n const offset = (hash[hash.length - 1] & 0xf);\n const binary = ((hash[offset] & 0x7f) << 24) | ((hash[offset + 1] & 0xff) << 16) |\n ((hash[offset + 2] & 0xff) << 8) | (hash[offset + 3] & 0xff);\n /* tslint:enable */\n\n let otp = '';\n if (isSteamAuth) {\n // tslint:disable-next-line\n let fullCode = binary & 0x7fffffff;\n for (let i = 0; i < digits; i++) {\n otp += SteamChars[fullCode % SteamChars.length];\n fullCode = Math.trunc(fullCode / SteamChars.length);\n }\n } else {\n otp = (binary % Math.pow(10, digits)).toString();\n otp = this.leftPad(otp, digits, '0');\n }\n\n return otp;\n }\n\n getTimeInterval(key: string): number {\n let period = 30;\n if (key != null && key.toLowerCase().indexOf('otpauth://') === 0) {\n const params = Utils.getQueryParams(key);\n if (params.has('period') && params.get('period') != null) {\n try {\n period = parseInt(params.get('period').trim(), null);\n } catch { }\n }\n }\n return period;\n }\n\n async isAutoCopyEnabled(): Promise {\n return !(await this.storageService.get(ConstantsService.disableAutoTotpCopyKey));\n }\n\n // Helpers\n\n private leftPad(s: string, l: number, p: string): string {\n if (l + 1 >= s.length) {\n s = Array(l + 1 - s.length).join(p) + s;\n }\n return s;\n }\n\n private decToHex(d: number): string {\n return (d < 15.5 ? '0' : '') + Math.round(d).toString(16);\n }\n\n private b32ToHex(s: string): string {\n s = s.toUpperCase();\n let cleanedInput = '';\n\n for (let i = 0; i < s.length; i++) {\n if (B32Chars.indexOf(s[i]) < 0) {\n continue;\n }\n\n cleanedInput += s[i];\n }\n s = cleanedInput;\n\n let bits = '';\n let hex = '';\n for (let i = 0; i < s.length; i++) {\n const byteIndex = B32Chars.indexOf(s.charAt(i));\n if (byteIndex < 0) {\n continue;\n }\n bits += this.leftPad(byteIndex.toString(2), 5, '0');\n }\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4);\n hex = hex + parseInt(chunk, 2).toString(16);\n }\n return hex;\n }\n\n private b32ToBytes(s: string): Uint8Array {\n return Utils.fromHexToArray(this.b32ToHex(s));\n }\n\n private async sign(keyBytes: Uint8Array, timeBytes: Uint8Array, alg: 'sha1' | 'sha256' | 'sha512') {\n const signature = await this.cryptoFunctionService.hmac(timeBytes.buffer, keyBytes.buffer, alg);\n return new Uint8Array(signature);\n }\n}\n","import { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService as UserServiceAbstraction } from '../abstractions/user.service';\n\nimport { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\nimport { ProviderData } from '../models/data/providerData';\nimport { Provider } from '../models/domain/provider';\n\nconst Keys = {\n userId: 'userId',\n userEmail: 'userEmail',\n stamp: 'securityStamp',\n kdf: 'kdf',\n kdfIterations: 'kdfIterations',\n organizationsPrefix: 'organizations_',\n providersPrefix: 'providers_',\n emailVerified: 'emailVerified',\n forcePasswordReset: 'forcePasswordReset',\n};\n\nexport class UserService implements UserServiceAbstraction {\n private userId: string;\n private email: string;\n private stamp: string;\n private kdf: KdfType;\n private kdfIterations: number;\n private emailVerified: boolean;\n private forcePasswordReset: boolean;\n\n constructor(private tokenService: TokenService, private storageService: StorageService) { }\n\n async setInformation(userId: string, email: string, kdf: KdfType, kdfIterations: number): Promise {\n this.email = email;\n this.userId = userId;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n\n await this.storageService.save(Keys.userEmail, email);\n await this.storageService.save(Keys.userId, userId);\n await this.storageService.save(Keys.kdf, kdf);\n await this.storageService.save(Keys.kdfIterations, kdfIterations);\n }\n\n setSecurityStamp(stamp: string): Promise {\n this.stamp = stamp;\n return this.storageService.save(Keys.stamp, stamp);\n }\n\n setEmailVerified(emailVerified: boolean) {\n this.emailVerified = emailVerified;\n return this.storageService.save(Keys.emailVerified, emailVerified);\n }\n\n setForcePasswordReset(forcePasswordReset: boolean) {\n this.forcePasswordReset = forcePasswordReset;\n return this.storageService.save(Keys.forcePasswordReset, forcePasswordReset);\n }\n\n async getUserId(): Promise {\n if (this.userId == null) {\n this.userId = await this.storageService.get(Keys.userId);\n }\n return this.userId;\n }\n\n async getEmail(): Promise {\n if (this.email == null) {\n this.email = await this.storageService.get(Keys.userEmail);\n }\n return this.email;\n }\n\n async getSecurityStamp(): Promise {\n if (this.stamp == null) {\n this.stamp = await this.storageService.get(Keys.stamp);\n }\n return this.stamp;\n }\n\n async getKdf(): Promise {\n if (this.kdf == null) {\n this.kdf = await this.storageService.get(Keys.kdf);\n }\n return this.kdf;\n }\n\n async getKdfIterations(): Promise {\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.storageService.get(Keys.kdfIterations);\n }\n return this.kdfIterations;\n }\n\n async getEmailVerified(): Promise {\n if (this.emailVerified == null) {\n this.emailVerified = await this.storageService.get(Keys.emailVerified);\n }\n return this.emailVerified;\n }\n\n async getForcePasswordReset(): Promise {\n if (this.forcePasswordReset == null) {\n this.forcePasswordReset = await this.storageService.get(Keys.forcePasswordReset);\n }\n return this.forcePasswordReset;\n }\n\n async clear(): Promise {\n const userId = await this.getUserId();\n\n await this.storageService.remove(Keys.userId);\n await this.storageService.remove(Keys.userEmail);\n await this.storageService.remove(Keys.stamp);\n await this.storageService.remove(Keys.kdf);\n await this.storageService.remove(Keys.kdfIterations);\n await this.storageService.remove(Keys.forcePasswordReset);\n await this.clearOrganizations(userId);\n await this.clearProviders(userId);\n\n this.userId = this.email = this.stamp = null;\n this.kdf = null;\n this.kdfIterations = null;\n }\n\n async isAuthenticated(): Promise {\n const token = await this.tokenService.getToken();\n if (token == null) {\n return false;\n }\n\n const userId = await this.getUserId();\n return userId != null;\n }\n\n async canAccessPremium(): Promise {\n const authed = await this.isAuthenticated();\n if (!authed) {\n return false;\n }\n\n const tokenPremium = this.tokenService.getPremium();\n if (tokenPremium) {\n return true;\n }\n\n const orgs = await this.getAllOrganizations();\n for (let i = 0; i < orgs.length; i++) {\n if (orgs[i].usersGetPremium && orgs[i].enabled) {\n return true;\n }\n }\n return false;\n }\n\n async getOrganization(id: string): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n if (organizations == null || !organizations.hasOwnProperty(id)) {\n return null;\n }\n\n return new Organization(organizations[id]);\n }\n\n async getOrganizationByIdentifier(identifier: string): Promise {\n const organizations = await this.getAllOrganizations();\n if (organizations == null || organizations.length === 0) {\n return null;\n }\n\n return organizations.find(o => o.identifier === identifier);\n }\n\n async getAllOrganizations(): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n const response: Organization[] = [];\n for (const id in organizations) {\n if (organizations.hasOwnProperty(id) && !organizations[id].isProviderUser) {\n response.push(new Organization(organizations[id]));\n }\n }\n return response;\n }\n\n async replaceOrganizations(organizations: { [id: string]: OrganizationData; }): Promise {\n const userId = await this.getUserId();\n await this.storageService.save(Keys.organizationsPrefix + userId, organizations);\n }\n\n async clearOrganizations(userId: string): Promise {\n await this.storageService.remove(Keys.organizationsPrefix + userId);\n }\n\n async getProvider(id: string): Promise {\n const userId = await this.getUserId();\n const providers = await this.storageService.get<{ [id: string]: ProviderData; }>(\n Keys.providersPrefix + userId);\n if (providers == null || !providers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Provider(providers[id]);\n }\n\n async getAllProviders(): Promise {\n const userId = await this.getUserId();\n const providers = await this.storageService.get<{ [id: string]: ProviderData; }>(\n Keys.providersPrefix + userId);\n const response: Provider[] = [];\n for (const id in providers) {\n if (providers.hasOwnProperty(id)) {\n response.push(new Provider(providers[id]));\n }\n }\n return response;\n }\n\n async replaceProviders(providers: { [id: string]: ProviderData; }): Promise {\n const userId = await this.getUserId();\n await this.storageService.save(Keys.providersPrefix + userId, providers);\n }\n\n async clearProviders(userId: string): Promise {\n await this.storageService.remove(Keys.providersPrefix + userId);\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from '../abstractions/vaultTimeout.service';\n\nimport { EncString } from '../models/domain/encString';\n\nexport class VaultTimeoutService implements VaultTimeoutServiceAbstraction {\n pinProtectedKey: EncString = null;\n biometricLocked: boolean = true;\n everBeenUnlocked: boolean = false;\n\n private inited = false;\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private collectionService: CollectionService, private cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService, private storageService: StorageService,\n private messagingService: MessagingService, private searchService: SearchService,\n private userService: UserService, private tokenService: TokenService,\n private lockedCallback: () => Promise = null, private loggedOutCallback: () => Promise = null) {\n }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.startCheck();\n }\n }\n\n startCheck() {\n this.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\n\n // Keys aren't stored for a device that is locked or logged out.\n async isLocked(): Promise {\n // Handle never lock startup situation\n if (await this.cryptoService.hasKeyStored('auto') && !this.everBeenUnlocked) {\n await this.cryptoService.getKey('auto');\n }\n\n return !this.cryptoService.hasKeyInMemory();\n }\n\n async checkVaultTimeout(): Promise {\n if (await this.platformUtilsService.isViewOpen()) {\n // Do not lock\n return;\n }\n\n // \"is logged out check\" - similar to isLocked, below\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n if (await this.isLocked()) {\n return;\n }\n\n // This has the potential to be removed. Evaluate after all platforms complete with auto-logout\n let vaultTimeout = this.platformUtilsService.lockTimeout();\n if (vaultTimeout == null) {\n vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n }\n\n if (vaultTimeout == null || vaultTimeout < 0) {\n return;\n }\n\n const lastActive = await this.storageService.get(ConstantsService.lastActiveKey);\n if (lastActive == null) {\n return;\n }\n\n const vaultTimeoutSeconds = vaultTimeout * 60;\n const diffSeconds = ((new Date()).getTime() - lastActive) / 1000;\n if (diffSeconds >= vaultTimeoutSeconds) {\n // Pivot based on the saved vault timeout action\n const timeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n timeoutAction === 'logOut' ? await this.logOut() : await this.lock(true);\n }\n }\n\n async lock(allowSoftLock = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n this.biometricLocked = true;\n this.everBeenUnlocked = true;\n await this.cryptoService.clearKey(false);\n await this.cryptoService.clearOrgKeys(true);\n await this.cryptoService.clearKeyPair(true);\n await this.cryptoService.clearEncKey(true);\n\n this.folderService.clearCache();\n this.cipherService.clearCache();\n this.collectionService.clearCache();\n this.searchService.clearIndex();\n this.messagingService.send('locked');\n if (this.lockedCallback != null) {\n await this.lockedCallback();\n }\n }\n\n async logOut(): Promise {\n if (this.loggedOutCallback != null) {\n await this.loggedOutCallback();\n }\n }\n\n async setVaultTimeoutOptions(timeout: number, action: string): Promise {\n await this.storageService.save(ConstantsService.vaultTimeoutKey, timeout);\n await this.storageService.save(ConstantsService.vaultTimeoutActionKey, action);\n await this.cryptoService.toggleKey();\n await this.tokenService.toggleTokens();\n }\n\n async isPinLockSet(): Promise<[boolean, boolean]> {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n return [protectedPin != null, pinProtectedKey != null];\n }\n\n async isBiometricLockSet(): Promise {\n return await this.storageService.get(ConstantsService.biometricUnlockKey);\n }\n\n clear(): Promise {\n this.everBeenUnlocked = false;\n this.pinProtectedKey = null;\n return this.storageService.remove(ConstantsService.protectedPin);\n }\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nimport { LogService as LogServiceAbstraction } from '../abstractions/log.service';\n\nimport * as hrtime from 'browser-hrtime';\n\nexport class ConsoleLogService implements LogServiceAbstraction {\n protected timersMap: Map = new Map();\n\n constructor(protected isDev: boolean, protected filter: (level: LogLevelType) => boolean = null) { }\n\n debug(message: string) {\n if (!this.isDev) {\n return;\n }\n this.write(LogLevelType.Debug, message);\n }\n\n info(message: string) {\n this.write(LogLevelType.Info, message);\n }\n\n warning(message: string) {\n this.write(LogLevelType.Warning, message);\n }\n\n error(message: string) {\n this.write(LogLevelType.Error, message);\n }\n\n write(level: LogLevelType, message: string) {\n if (this.filter != null && this.filter(level)) {\n return;\n }\n\n switch (level) {\n case LogLevelType.Debug:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Info:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Warning:\n // tslint:disable-next-line\n console.warn(message);\n break;\n case LogLevelType.Error:\n // tslint:disable-next-line\n console.error(message);\n break;\n default:\n break;\n }\n }\n\n time(label: string = 'default') {\n if (!this.timersMap.has(label)) {\n this.timersMap.set(label, hrtime());\n }\n }\n\n timeEnd(label: string = 'default'): [number, number] {\n const elapsed = hrtime(this.timersMap.get(label));\n this.timersMap.delete(label);\n this.write(LogLevelType.Info, `${label}: ${elapsed[0] * 1000 + elapsed[1] / 10e6}ms`);\n return elapsed;\n }\n}\n","export enum LogLevelType {\n Debug,\n Info,\n Warning,\n Error,\n}\n","import { Cipher } from './cipher';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\n\nexport class CipherWithIds extends Cipher {\n id: string;\n collectionIds: string[];\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.id = o.id;\n super.build(o);\n this.collectionIds = o.collectionIds;\n }\n}\n","import { Collection } from './collection';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport { Collection as CollectionDomain } from '../domain/collection';\n\nexport class CollectionWithId extends Collection {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { Folder } from './folder';\n\nimport { FolderView } from '../view/folderView';\n\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class FolderWithId extends Folder {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { ImportResult } from '../../models/domain/importResult';\nimport { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { CipherView } from '../../models/view';\nimport { CipherImportContext } from './cipherImportContext';\n\nexport const IgnoredProperties = ['ainfo', 'autosubmit', 'notesplain', 'ps', 'scope', 'tags', 'title', 'uuid', 'notes'];\n\nexport abstract class OnePasswordCsvImporter extends BaseImporter implements Importer {\n protected loginPropertyParsers = [this.setLoginUsername, this.setLoginPassword, this.setLoginUris];\n protected creditCardPropertyParsers = [this.setCreditCardNumber, this.setCreditCardVerification, this.setCreditCardCardholderName, this.setCreditCardExpiry];\n protected identityPropertyParsers = [this.setIdentityFirstName, this.setIdentityInitial, this.setIdentityLastName, this.setIdentityUserName, this.setIdentityEmail, this.setIdentityPhone, this.setIdentityCompany];\n\n abstract setCipherType(value: any, cipher: CipherView): void;\n\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true, {\n quoteChar: '\"',\n escapeChar: '\\\\',\n });\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(this.getProp(value, 'title'))) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.getProp(value, 'title'), '--');\n\n this.setNotes(value, cipher);\n\n this.setCipherType(value, cipher);\n\n let altUsername: string = null;\n for (const property in value) {\n if (!value.hasOwnProperty(property) || this.isNullOrWhitespace(value[property])) {\n continue;\n }\n\n const context = new CipherImportContext(value, property, cipher);\n if (cipher.type === CipherType.Login && this.setKnownLoginValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Card && this.setKnownCreditCardValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Identity && this.setKnownIdentityValue(context)) {\n continue;\n }\n\n altUsername = this.setUnknownValue(context, altUsername);\n }\n\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(altUsername) &&\n this.isNullOrWhitespace(cipher.login.username) && altUsername.indexOf('://') === -1) {\n cipher.login.username = altUsername;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n protected getProp(obj: any, name: string): any {\n const lowerObj = Object.entries(obj).reduce((agg: any, entry: [string, any]) => {\n agg[entry[0].toLowerCase()] = entry[1];\n return agg;\n }, {});\n return lowerObj[name.toLowerCase()];\n }\n\n protected getPropByRegexp(obj: any, regexp: RegExp): any {\n const matchingKeys = Object.keys(obj).reduce((agg: string[], key: string) => {\n if (key.match(regexp)) {\n agg.push(key);\n }\n return agg;\n }, []);\n if (matchingKeys.length === 0) {\n return null;\n } else {\n return obj[matchingKeys[0]];\n }\n }\n\n protected getPropIncluding(obj: any, name: string): any {\n const includesMap = Object.keys(obj).reduce((agg: string[], entry: string) => {\n if (entry.toLowerCase().includes(name.toLowerCase())) {\n agg.push(entry);\n }\n return agg;\n }, []);\n if (includesMap.length === 0) {\n return null;\n } else {\n return obj[includesMap[0]];\n }\n }\n\n protected setNotes(importRecord: any, cipher: CipherView) {\n cipher.notes = this.getValueOrDefault(this.getProp(importRecord, 'notesPlain'), '') + '\\n' +\n this.getValueOrDefault(this.getProp(importRecord, 'notes'), '') + '\\n';\n cipher.notes.trim();\n\n }\n\n protected setKnownLoginValue(context: CipherImportContext): boolean {\n return this.loginPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownCreditCardValue(context: CipherImportContext): boolean {\n return this.creditCardPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownIdentityValue(context: CipherImportContext): boolean {\n return this.identityPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setUnknownValue(context: CipherImportContext, altUsername: string): string {\n if (IgnoredProperties.indexOf(context.lowerProperty) === -1 && !context.lowerProperty.startsWith('section:') &&\n !context.lowerProperty.startsWith('section ')) {\n if (altUsername == null && context.lowerProperty === 'email') {\n return context.importRecord[context.property];\n }\n else if (context.lowerProperty === 'created date' || context.lowerProperty === 'modified date') {\n const readableDate = new Date(parseInt(context.importRecord[context.property], 10) * 1000).toUTCString();\n this.processKvp(context.cipher, '1Password ' + context.property, readableDate);\n return null;\n }\n if (context.lowerProperty.includes('password') || context.lowerProperty.includes('key') || context.lowerProperty.includes('secret')) {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property], FieldType.Hidden);\n } else {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property]);\n }\n }\n return null;\n }\n\n protected setIdentityFirstName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.firstName) && context.lowerProperty.includes('first name')) {\n context.cipher.identity.firstName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityInitial(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.middleName) && context.lowerProperty.includes('initial')) {\n context.cipher.identity.middleName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityLastName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.lastName) && context.lowerProperty.includes('last name')) {\n context.cipher.identity.lastName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityUserName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.username) && context.lowerProperty.includes('username')) {\n context.cipher.identity.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityCompany(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.company) && context.lowerProperty.includes('company')) {\n context.cipher.identity.company = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityPhone(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.phone) && context.lowerProperty.includes('default phone')) {\n context.cipher.identity.phone = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityEmail(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.email) && context.lowerProperty.includes('email')) {\n context.cipher.identity.email = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardNumber(context: CipherImportContext): boolean {\n if (this.isNullOrWhitespace(context.cipher.card.number) && context.lowerProperty.includes('number')) {\n context.cipher.card.number = context.importRecord[context.property];\n context.cipher.card.brand = this.getCardBrand(context.cipher.card.number);\n return true;\n }\n return false;\n }\n\n protected setCreditCardVerification(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.code) && context.lowerProperty.includes('verification number')) {\n context.cipher.card.code = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardCardholderName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.cardholderName) && context.lowerProperty.includes('cardholder name')) {\n context.cipher.card.cardholderName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date') &&\n context.importRecord[context.property].length === 7) {\n context.cipher.card.expMonth = (context.importRecord[context.property] as string).substr(0, 2);\n if (context.cipher.card.expMonth[0] === '0') {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = (context.importRecord[context.property] as string).substr(3, 4);\n return true;\n }\n return false;\n }\n\n protected setLoginPassword(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.password) && context.lowerProperty === 'password') {\n context.cipher.login.password = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUsername(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.username) && context.lowerProperty === 'username') {\n context.cipher.login.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUris(context: CipherImportContext) {\n if ((context.cipher.login.uris == null || context.cipher.login.uris.length === 0) && context.lowerProperty === 'urls') {\n const urls = context.importRecord[context.property].split(this.newLineRegex);\n context.cipher.login.uris = this.makeUriArray(urls);\n return true;\n } else if ((context.lowerProperty === 'url')) {\n if (context.cipher.login.uris == null) {\n context.cipher.login.uris = [];\n }\n context.cipher.login.uris.concat(this.makeUriArray(context.importRecord[context.property]));\n return true;\n }\n return false;\n }\n}\n","export { AttachmentView } from './attachmentView';\nexport { CardView } from './cardView';\nexport { CipherView } from './cipherView';\nexport { FieldView } from './fieldView';\nexport { IdentityView } from './identityView';\nexport { LoginUriView } from './loginUriView';\nexport { LoginView } from './loginView';\nexport { SecureNoteView } from './secureNoteView';\nexport { View } from './view';\n","export enum NotificationType {\n SyncCipherUpdate = 0,\n SyncCipherCreate = 1,\n SyncLoginDelete = 2,\n SyncFolderDelete = 3,\n SyncCiphers = 4,\n\n SyncVault = 5,\n SyncOrgKeys = 6,\n SyncFolderCreate = 7,\n SyncFolderUpdate = 8,\n SyncCipherDelete = 9,\n SyncSettings = 10,\n\n LogOut = 11,\n\n SyncSendCreate = 12,\n SyncSendUpdate = 13,\n SyncSendDelete = 14,\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport 'bootstrap';\nimport 'jquery';\nimport 'popper.js';\n\n// tslint:disable-next-line\nrequire('src/scss/styles.scss');\n\nimport { AppModule } from './app.module';\n\nif (process.env.NODE_ENV === 'production') {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true });\n","// extracted by mini-css-extract-plugin\nexport {};","import { ToasterModule } from 'angular2-toaster';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { AppRoutingModule } from './app-routing.module';\n\nimport { AppComponent } from 'src/app/app.component';\nimport { OssRoutingModule } from 'src/app/oss-routing.module';\nimport { OssModule } from 'src/app/oss.module';\nimport { ServicesModule } from 'src/app/services/services.module';\n\n@NgModule({\n imports: [\n OssModule,\n BrowserAnimationsModule,\n FormsModule,\n ServicesModule,\n ToasterModule.forRoot(),\n InfiniteScrollModule,\n DragDropModule,\n AppRoutingModule,\n OssRoutingModule,\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule { }\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n {\n path: 'providers',\n loadChildren: async () => (await import('./providers/providers.module')).ProvidersModule,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule { }\n","import { CommonModule } from '@angular/common';\nimport { ComponentFactoryResolver } from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { ProviderGuardService } from './services/provider-guard.service';\nimport { ProviderTypeGuardService } from './services/provider-type-guard.service';\nimport { ProviderService } from './services/provider.service';\n\nimport { ProvidersLayoutComponent } from './providers-layout.component';\nimport { ProvidersRoutingModule } from './providers-routing.module';\n\nimport { AddOrganizationComponent } from './clients/add-organization.component';\nimport { ClientsComponent } from './clients/clients.component';\nimport { CreateOrganizationComponent } from './clients/create-organization.component';\n\nimport { AcceptProviderComponent } from './manage/accept-provider.component';\nimport { BulkConfirmComponent } from './manage/bulk/bulk-confirm.component';\nimport { BulkRemoveComponent } from './manage/bulk/bulk-remove.component';\nimport { EventsComponent } from './manage/events.component';\nimport { ManageComponent } from './manage/manage.component';\nimport { PeopleComponent } from './manage/people.component';\nimport { UserAddEditComponent } from './manage/user-add-edit.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { SettingsComponent } from './settings/settings.component';\n\nimport { SetupProviderComponent } from './setup/setup-provider.component';\nimport { SetupComponent } from './setup/setup.component';\n\nimport { OssModule } from 'src/app/oss.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n OssModule,\n ProvidersRoutingModule,\n ],\n declarations: [\n AcceptProviderComponent,\n AccountComponent,\n AddOrganizationComponent,\n BulkConfirmComponent,\n BulkRemoveComponent,\n ClientsComponent,\n CreateOrganizationComponent,\n EventsComponent,\n ManageComponent,\n PeopleComponent,\n ProvidersLayoutComponent,\n SettingsComponent,\n SetupComponent,\n SetupProviderComponent,\n UserAddEditComponent,\n ],\n providers: [\n ProviderService,\n ProviderGuardService,\n ProviderTypeGuardService,\n ],\n})\nexport class ProvidersModule {\n constructor(modalService: ModalService, componentFactoryResolver: ComponentFactoryResolver) {\n modalService.registerComponentFactoryResolver(AddOrganizationComponent, componentFactoryResolver);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\n\nimport { ModalService } from '../../services/modal.service';\n\nimport { ModalRef } from './modal.ref';\n\n@Component({\n selector: 'app-modal',\n template: '',\n})\nexport class DynamicModalComponent implements AfterViewInit, OnDestroy {\n componentRef: ComponentRef;\n\n @ViewChild('modalContent', { read: ViewContainerRef, static: true }) modalContentRef: ViewContainerRef;\n\n childComponentType: Type;\n setComponentParameters: (component: any) => void;\n\n constructor(private modalService: ModalService, private cd: ChangeDetectorRef,\n private el: ElementRef, public modalRef: ModalRef) {}\n\n ngAfterViewInit() {\n this.loadChildComponent(this.childComponentType);\n if (this.setComponentParameters != null) {\n this.setComponentParameters(this.componentRef.instance);\n }\n this.cd.detectChanges();\n\n this.modalRef.created(this.el.nativeElement);\n }\n\n loadChildComponent(componentType: Type) {\n const componentFactory = this.modalService.resolveComponentFactory(componentType);\n\n this.modalContentRef.clear();\n this.componentRef = this.modalContentRef.createComponent(componentFactory);\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n close() {\n this.modalRef.close();\n }\n}\n","import {\n InjectFlags,\n InjectionToken,\n Injector,\n Type\n} from '@angular/core';\n\nexport class ModalInjector implements Injector {\n constructor(private _parentInjector: Injector, private _additionalTokens: WeakMap) {}\n\n get(token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags): T;\n get(token: any, notFoundValue?: any, flags?: any) {\n return this._additionalTokens.get(token) ?? this._parentInjector.get(token, notFoundValue);\n }\n}\n","export class ProviderAddOrganizationRequest {\n organizationId: string;\n key: string;\n}\n","export function getDomain(host: string): string | null {\n return null;\n}\n\nexport function isValid(host: string): boolean {\n return true;\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { AuthGuardService } from 'jslib-angular/services/auth-guard.service';\nimport { Permissions } from 'jslib-common/enums/permissions';\n\nimport { AddOrganizationComponent } from './clients/add-organization.component';\nimport { ClientsComponent } from './clients/clients.component';\nimport { CreateOrganizationComponent } from './clients/create-organization.component';\nimport { AcceptProviderComponent } from './manage/accept-provider.component';\nimport { EventsComponent } from './manage/events.component';\nimport { ManageComponent } from './manage/manage.component';\nimport { PeopleComponent } from './manage/people.component';\nimport { ProvidersLayoutComponent } from './providers-layout.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { SetupProviderComponent } from './setup/setup-provider.component';\nimport { SetupComponent } from './setup/setup.component';\n\nimport { FrontendLayoutComponent } from 'src/app/layouts/frontend-layout.component';\n\nimport { ProvidersComponent } from 'src/app/providers/providers.component';\nimport { ProviderGuardService } from './services/provider-guard.service';\nimport { ProviderTypeGuardService } from './services/provider-type-guard.service';\nimport { AccountComponent } from './settings/account.component';\n\nconst routes: Routes = [\n {\n path: '',\n canActivate: [AuthGuardService],\n component: ProvidersComponent,\n },\n {\n path: '',\n component: FrontendLayoutComponent,\n children: [\n {\n path: 'setup-provider',\n component: SetupProviderComponent,\n data: { titleId: 'setupProvider' },\n },\n {\n path: 'accept-provider',\n component: AcceptProviderComponent,\n data: { titleId: 'acceptProvider' },\n },\n ],\n },\n {\n path: '',\n canActivate: [AuthGuardService],\n children: [\n {\n path: 'setup',\n component: SetupComponent,\n },\n {\n path: ':providerId',\n component: ProvidersLayoutComponent,\n canActivate: [ProviderGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'clients' },\n { path: 'clients/create', component: CreateOrganizationComponent },\n { path: 'clients', component: ClientsComponent, data: { titleId: 'clients' } },\n {\n path: 'manage',\n component: ManageComponent,\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'people',\n },\n {\n path: 'people',\n component: PeopleComponent,\n canActivate: [ProviderTypeGuardService],\n data: {\n titleId: 'people',\n permissions: [Permissions.ManageUsers],\n },\n },\n {\n path: 'events',\n component: EventsComponent,\n canActivate: [ProviderTypeGuardService],\n data: {\n titleId: 'eventLogs',\n permissions: [Permissions.AccessEventLogs],\n },\n },\n ],\n },\n {\n path: 'settings',\n component: SettingsComponent,\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'account',\n },\n {\n path: 'account',\n component: AccountComponent,\n canActivate: [ProviderTypeGuardService],\n data: {\n titleId: 'myProvider',\n permissions: [Permissions.ManageProvider],\n },\n },\n ],\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class ProvidersRoutingModule { }\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { PlanType } from '../../enums/planType';\n\nimport { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationCreateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n planType: PlanType;\n key: string;\n keys: OrganizationKeysRequest;\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n collectionName: string;\n taxIdNumber: string;\n billingAddressLine1: string;\n billingAddressLine2: string;\n billingAddressCity: string;\n billingAddressState: string;\n billingAddressPostalCode: string;\n billingAddressCountry: string;\n}\n","import { PlanType } from '../../enums/planType';\n\nimport { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationUpgradeRequest {\n businessName: string;\n planType: PlanType;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n billingAddressCountry: string;\n billingAddressPostalCode: string;\n keys: OrganizationKeysRequest;\n}\n","import { OrganizationCreateRequest } from '../organizationCreateRequest';\n\nexport class ProviderOrganizationCreateRequest {\n constructor(public clientOwnerEmail: string, public organizationCreateRequest: OrganizationCreateRequest) { }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class PasswordHistoryResponse extends BaseResponse {\n password: string;\n lastUsedDate: string;\n\n constructor(response: any) {\n super(response);\n this.password = this.getResponseProperty('Password');\n this.lastUsedDate = this.getResponseProperty('LastUsedDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { DeviceType } from '../../enums/deviceType';\n\nexport class DeviceResponse extends BaseResponse {\n id: string;\n name: number;\n identifier: string;\n type: DeviceType;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.identifier = this.getResponseProperty('Identifier');\n this.type = this.getResponseProperty('Type');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class ProfileProviderOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n hasPublicAndPrivateKeys: boolean;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n providerId: string;\n providerName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.usePolicies = this.getResponseProperty('UsePolicies');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useBusinessPortal = this.getResponseProperty('UseBusinessPortal');\n this.useSso = this.getResponseProperty('UseSso');\n this.useResetPassword = this.getResponseProperty('UseResetPassword');\n this.selfHost = this.getResponseProperty('SelfHost');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.key = this.getResponseProperty('Key');\n this.hasPublicAndPrivateKeys = this.getResponseProperty('HasPublicAndPrivateKeys');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n this.ssoBound = this.getResponseProperty('SsoBound');\n this.identifier = this.getResponseProperty('Identifier');\n this.permissions = new PermissionsApi(this.getResponseProperty('permissions'));\n this.resetPasswordEnrolled = this.getResponseProperty('ResetPasswordEnrolled');\n this.userId = this.getResponseProperty('UserId');\n this.providerId = this.getResponseProperty('ProviderId');\n this.providerName = this.getResponseProperty('ProviderName');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { ProviderUserStatusType } from '../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../enums/providerUserType';\n\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class ProfileProviderResponse extends BaseResponse {\n id: string;\n name: string;\n key: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n permissions: PermissionsApi;\n userId: string;\n useEvents: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.key = this.getResponseProperty('Key');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n this.permissions = new PermissionsApi(this.getResponseProperty('permissions'));\n this.userId = this.getResponseProperty('UserId');\n this.useEvents = this.getResponseProperty('UseEvents');\n }\n}\n","export class ProviderUserAcceptRequest {\n token: string;\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventView {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: EventType;\n\n constructor(data: Required) {\n this.message = data.message;\n this.humanReadableMessage = data.humanReadableMessage;\n this.appIcon = data.appIcon;\n this.appName = data.appName;\n this.userId = data.userId;\n this.userName = data.userName;\n this.userEmail = data.userEmail;\n this.date = data.date;\n this.ip = data.ip;\n this.type = data.type;\n }\n}\n","export abstract class AppIdService {\n getAppId: () => Promise;\n getAnonymousAppId: () => Promise;\n}\n","export class ProviderUserConfirmRequest {\n key: string;\n}\n","type ProviderUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class ProviderUserBulkConfirmRequest {\n keys: ProviderUserBulkRequestEntry[];\n\n constructor(keys: ProviderUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","type OrganizationUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class OrganizationUserBulkConfirmRequest {\n keys: OrganizationUserBulkRequestEntry[];\n\n constructor(keys: OrganizationUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","import { ProviderUserType } from '../../../enums/providerUserType';\n\nexport class ProviderUserInviteRequest {\n emails: string[] = [];\n type: ProviderUserType;\n}\n","import { ProviderUserType } from '../../../enums/providerUserType';\n\nexport class ProviderUserUpdateRequest {\n type: ProviderUserType;\n}\n","export class ProviderSetupRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n token: string;\n key: string;\n}\n","export class ProviderUpdateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n}\n","import { BroadcasterService as BroadcasterServiceAbstraction } from '../abstractions/broadcaster.service';\n\nexport class BroadcasterService implements BroadcasterServiceAbstraction {\n subscribers: Map any> = new Map any>();\n\n send(message: any, id?: string) {\n if (id != null) {\n if (this.subscribers.has(id)) {\n this.subscribers.get(id)(message);\n }\n return;\n }\n\n this.subscribers.forEach(value => {\n value(message);\n });\n }\n\n subscribe(id: string, messageCallback: (message: any) => any) {\n this.subscribers.set(id, messageCallback);\n }\n\n unsubscribe(id: string) {\n if (this.subscribers.has(id)) {\n this.subscribers.delete(id);\n }\n }\n}\n","import { PolicyType } from '../../enums/policyType';\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\n}\n","export class EmergencyAccessAcceptRequest {\n token: string;\n}\n","export class OrganizationUserAcceptRequest {\n token: string;\n}\n","import { Router } from '@angular/router';\n\nimport { PasswordHintRequest } from 'jslib-common/models/request/passwordHintRequest';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nexport class HintComponent {\n email: string = '';\n formPromise: Promise;\n\n protected successRoute = 'login';\n protected onSuccessfulSubmit: () => void;\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected apiService: ApiService, protected platformUtilsService: PlatformUtilsService) { }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n\n try {\n this.formPromise = this.apiService.postPasswordHint(new PasswordHintRequest(this.email));\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('masterPassSent'));\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n } catch { }\n }\n}\n","export class PasswordHintRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { PasswordVerificationRequest } from 'jslib-common/models/request/passwordVerificationRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\n\n@Directive()\nexport class LockComponent implements OnInit {\n masterPassword: string = '';\n pin: string = '';\n showPassword: boolean = false;\n email: string;\n pinLock: boolean = false;\n webVaultHostname: string = '';\n formPromise: Promise;\n supportsBiometric: boolean;\n biometricLock: boolean;\n biometricText: string;\n\n protected successRoute: string = 'vault';\n protected onSuccessfulSubmit: () => void;\n\n private invalidPinAttempts = 0;\n private pinSet: [boolean, boolean];\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected messagingService: MessagingService,\n protected userService: UserService, protected cryptoService: CryptoService,\n protected storageService: StorageService, protected vaultTimeoutService: VaultTimeoutService,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected apiService: ApiService) { }\n\n async ngOnInit() {\n this.pinSet = await this.vaultTimeoutService.isPinLockSet();\n this.pinLock = (this.pinSet[0] && this.vaultTimeoutService.pinProtectedKey != null) || this.pinSet[1];\n this.supportsBiometric = await this.platformUtilsService.supportsBiometric();\n this.biometricLock = await this.vaultTimeoutService.isBiometricLockSet() &&\n (await this.cryptoService.hasKeyStored('biometric') || !this.platformUtilsService.supportsSecureStorage());\n this.biometricText = await this.storageService.get(ConstantsService.biometricText);\n this.email = await this.userService.getEmail();\n\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n const vaultUrl = webVaultUrl === 'https://vault.bitwarden.com' ? 'https://bitwarden.com' : webVaultUrl;\n this.webVaultHostname = Utils.getHostname(vaultUrl);\n }\n\n async submit() {\n if (this.pinLock && (this.pin == null || this.pin === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('pinRequired'));\n return;\n }\n if (!this.pinLock && (this.masterPassword == null || this.masterPassword === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n\n if (this.pinLock) {\n let failed = true;\n try {\n if (this.pinSet[0]) {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations,\n this.vaultTimeoutService.pinProtectedKey);\n const encKey = await this.cryptoService.getEncKey(key);\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const decPin = await this.cryptoService.decryptToUtf8(new EncString(protectedPin), encKey);\n failed = decPin !== this.pin;\n if (!failed) {\n await this.setKeyAndContinue(key);\n }\n } else {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations);\n failed = false;\n await this.setKeyAndContinue(key);\n }\n } catch {\n failed = true;\n }\n\n if (failed) {\n this.invalidPinAttempts++;\n if (this.invalidPinAttempts >= 5) {\n this.messagingService.send('logout');\n return;\n }\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidPin'));\n }\n } else {\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const storedKeyHash = await this.cryptoService.getKeyHash();\n\n let passwordValid = false;\n\n if (storedKeyHash != null) {\n passwordValid = await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, key);\n } else {\n const request = new PasswordVerificationRequest();\n const serverKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.ServerAuthorization);\n request.masterPasswordHash = serverKeyHash;\n try {\n this.formPromise = this.apiService.postAccountVerifyPassword(request);\n await this.formPromise;\n passwordValid = true;\n const localKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.LocalAuthorization);\n await this.cryptoService.setKeyHash(localKeyHash);\n } catch { }\n }\n\n if (passwordValid) {\n if (this.pinSet[0]) {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const encKey = await this.cryptoService.getEncKey(key);\n const decPin = await this.cryptoService.decryptToUtf8(new EncString(protectedPin), encKey);\n const pinKey = await this.cryptoService.makePinKey(decPin, this.email, kdf, kdfIterations);\n this.vaultTimeoutService.pinProtectedKey = await this.cryptoService.encrypt(key.key, pinKey);\n }\n this.setKeyAndContinue(key);\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n async unlockBiometric() {\n if (!this.biometricLock) {\n return;\n }\n\n const success = (await this.cryptoService.getKey('biometric')) != null;\n\n if (success) {\n await this.doContinue();\n }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById(this.pinLock ? 'pin' : 'masterPassword').focus();\n }\n\n private async setKeyAndContinue(key: SymmetricCryptoKey) {\n await this.cryptoService.setKey(key);\n this.doContinue();\n }\n\n private async doContinue() {\n this.vaultTimeoutService.biometricLocked = false;\n this.vaultTimeoutService.everBeenUnlocked = true;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n this.messagingService.send('unlocked');\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n }\n}\n","import {\n Directive,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { Router } from '@angular/router';\n\nimport { AuthResult } from 'jslib-common/models/domain/authResult';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { CaptchaProtectedComponent } from './captchaProtected.component';\n\nconst Keys = {\n rememberedEmail: 'rememberedEmail',\n rememberEmail: 'rememberEmail',\n};\n\n@Directive()\nexport class LoginComponent extends CaptchaProtectedComponent implements OnInit {\n @Input() email: string = '';\n @Input() rememberEmail = true;\n\n masterPassword: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n platformUtilsService: PlatformUtilsService, i18nService: I18nService,\n protected stateService: StateService, environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected cryptoFunctionService: CryptoFunctionService, private storageService: StorageService) {\n super(environmentService, i18nService, platformUtilsService);\n }\n\n async ngOnInit() {\n if (this.email == null || this.email === '') {\n this.email = await this.storageService.get(Keys.rememberedEmail);\n if (this.email == null) {\n this.email = '';\n }\n }\n this.rememberEmail = await this.storageService.get(Keys.rememberEmail);\n if (this.rememberEmail == null) {\n this.rememberEmail = true;\n }\n if (Utils.isBrowser && !Utils.isNode) {\n this.focusInput();\n }\n }\n\n async submit() {\n await this.setupCaptcha();\n\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.authService.logIn(this.email, this.masterPassword, this.captchaToken);\n const response = await this.formPromise;\n await this.storageService.save(Keys.rememberEmail, this.rememberEmail);\n if (this.rememberEmail) {\n await this.storageService.save(Keys.rememberedEmail, this.email);\n } else {\n await this.storageService.remove(Keys.rememberedEmail);\n }\n if (this.handleCaptchaRequired(response)) {\n return;\n } else if (response.twoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute]);\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch { }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n async launchSsoBrowser(clientId: string, ssoRedirectUri: string) {\n // Generate necessary sso params\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n const state = await this.passwordGenerationService.generatePassword(passwordOptions);\n const ssoCodeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(ssoCodeVerifier, 'sha256');\n const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n\n // Save sso params\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, ssoCodeVerifier);\n\n // Build URI\n const webUrl = this.environmentService.getWebVaultUrl();\n\n // Launch browser\n this.platformUtilsService.launchUri(webUrl + '/#/sso?clientId=' + clientId +\n '&redirectUri=' + encodeURIComponent(ssoRedirectUri) +\n '&state=' + state + '&codeChallenge=' + codeChallenge);\n }\n\n protected focusInput() {\n document.getElementById(this.email == null || this.email === '' ? 'email' : 'masterPassword').focus();\n }\n}\n","import { I18nService } from '../abstractions/i18n.service';\nimport { IFrameComponent } from './iframe_component';\n\nexport class CaptchaIFrame extends IFrameComponent {\n constructor(win: Window, webVaultUrl: string,\n private i18nService: I18nService, successCallback: (message: string) => any, errorCallback: (message: string) => any,\n infoCallback: (message: string) => any) {\n super(win, webVaultUrl, 'captcha-connector.html', 'hcaptcha_iframe', successCallback, errorCallback, (message: string) => {\n const parsedMessage = JSON.parse(message);\n if (typeof (parsedMessage) !== 'string') {\n this.iframe.height = (parsedMessage.height).toString();\n this.iframe.width = (parsedMessage.width).toString();\n } else {\n infoCallback(parsedMessage);\n }\n });\n }\n\n init(siteKey: string): void {\n super.initComponent(this.createParams({ siteKey: siteKey, locale: this.i18nService.translationLocale }, 1));\n }\n}\n","import { I18nService } from '../abstractions/i18n.service';\n\nexport abstract class IFrameComponent {\n iframe: HTMLIFrameElement;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(private win: Window, protected webVaultUrl: string, private path: string, private iframeId: string,\n public successCallback?: (message: string) => any,\n public errorCallback?: (message: string) => any, public infoCallback?: (message: string) => any) {\n this.connectorLink = win.document.createElement('a');\n }\n\n stop() {\n this.sendMessage('stop');\n }\n\n start() {\n this.sendMessage('start');\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(('0x' + p1) as any);\n }));\n }\n\n cleanup() {\n this.win.removeEventListener('message', this.parseFunction, false);\n }\n\n protected createParams(data: any, version: number) {\n return new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n v: version.toString(),\n });\n }\n\n protected initComponent(params: URLSearchParams): void {\n this.connectorLink.href = `${this.webVaultUrl}/${this.path}?${params}`;\n this.iframe = this.win.document.getElementById(this.iframeId) as HTMLIFrameElement;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener('message', this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split('|');\n if (parts[0] === 'success' && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === 'error' && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === 'info' && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (event.origin == null || event.origin === '' || event.origin !== (this.connectorLink as any).origin ||\n event.data == null || typeof (event.data) !== 'string') {\n return false;\n }\n\n return event.data.indexOf('success|') === 0 || event.data.indexOf('error|') === 0 ||\n event.data.indexOf('info|') === 0;\n }\n}\n","export class DeleteRecoverRequest {\n email: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class TwoFactorRecoveryRequest extends PasswordVerificationRequest {\n recoveryCode: string;\n email: string;\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { KeysRequest } from 'jslib-common/models/request/keysRequest';\nimport { ReferenceEventRequest } from 'jslib-common/models/request/referenceEventRequest';\nimport { RegisterRequest } from 'jslib-common/models/request/registerRequest';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\nimport { CaptchaProtectedComponent } from './captchaProtected.component';\n\n@Directive()\nexport class RegisterComponent extends CaptchaProtectedComponent implements OnInit {\n name: string = '';\n email: string = '';\n masterPassword: string = '';\n confirmMasterPassword: string = '';\n hint: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n masterPasswordScore: number;\n referenceData: ReferenceEventRequest;\n showTerms = false;\n acceptPolicies: boolean = false;\n\n protected successRoute = 'login';\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected authService: AuthService, protected router: Router,\n i18nService: I18nService, protected cryptoService: CryptoService,\n protected apiService: ApiService, protected stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n protected passwordGenerationService: PasswordGenerationService, environmentService: EnvironmentService) {\n super(environmentService, i18nService, platformUtilsService);\n this.showTerms = false;\n }\n\n async ngOnInit() {\n this.setupCaptcha();\n }\n\n get masterPasswordScoreWidth() {\n return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20;\n }\n\n get masterPasswordScoreColor() {\n switch (this.masterPasswordScore) {\n case 4:\n return 'success';\n case 3:\n return 'primary';\n case 2:\n return 'warning';\n default:\n return 'danger';\n }\n }\n\n get masterPasswordScoreText() {\n switch (this.masterPasswordScore) {\n case 4:\n return this.i18nService.t('strong');\n case 3:\n return this.i18nService.t('good');\n case 2:\n return this.i18nService.t('weak');\n default:\n return this.masterPasswordScore != null ? this.i18nService.t('weak') : null;\n }\n }\n\n async submit() {\n if (typeof crypto.subtle === 'undefined') {\n this.platformUtilsService.showToast('error', \"This browser requires HTTPS to use the web vault\",\n \"Check the Vaultwarden wiki for details on how to enable it\");\n return;\n }\n\n if (!this.acceptPolicies && this.showTerms) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('acceptPoliciesError'));\n return;\n }\n\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return;\n }\n if (this.masterPassword !== this.confirmMasterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return;\n }\n }\n\n if (this.hint === this.masterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), this.i18nService.t('hintEqualsPassword'));\n return;\n }\n\n this.name = this.name === '' ? null : this.name;\n this.email = this.email.trim().toLowerCase();\n const kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n const kdfIterations = useLowerKdf ? 10000 : 100000;\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const encKey = await this.cryptoService.makeEncKey(key);\n const hashedPassword = await this.cryptoService.hashPassword(this.masterPassword, key);\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new RegisterRequest(this.email, this.name, hashedPassword,\n this.hint, encKey[1].encryptedString, kdf, kdfIterations, this.referenceData, this.captchaToken);\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n const orgInvite = await this.stateService.get('orgInvitation');\n if (orgInvite != null && orgInvite.token != null && orgInvite.organizationUserId != null) {\n request.token = orgInvite.token;\n request.organizationUserId = orgInvite.organizationUserId;\n }\n\n try {\n this.formPromise = this.apiService.postRegister(request);\n try {\n await this.formPromise;\n } catch (e) {\n if (this.handleCaptchaRequired(e)) {\n return;\n } else {\n throw e;\n }\n }\n this.platformUtilsService.showToast('success', null, this.i18nService.t('newAccountCreated'));\n this.router.navigate([this.successRoute], { queryParams: { email: this.email } });\n } catch { }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","import { KeysRequest } from './keysRequest';\nimport { ReferenceEventRequest } from './referenceEventRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nimport { CaptchaProtectedRequest } from './captchaProtectedRequest';\n\nexport class RegisterRequest implements CaptchaProtectedRequest {\n masterPasswordHint: string;\n keys: KeysRequest;\n token: string;\n organizationUserId: string;\n\n\n constructor(public email: string, public name: string, public masterPasswordHash: string,\n masterPasswordHint: string, public key: string, public kdf: KdfType, public kdfIterations: number,\n public referenceData: ReferenceEventRequest, public captchaResponse: string) {\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","export class ReferenceEventRequest {\n id: string;\n layout: string;\n flow: string;\n}\n","import { Directive } from '@angular/core';\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { KeysRequest } from 'jslib-common/models/request/keysRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { SetPasswordRequest } from 'jslib-common/models/request/setPasswordRequest';\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from './change-password.component';\n\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\nimport { KdfType } from 'jslib-common/enums/kdfType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class SetPasswordComponent extends BaseChangePasswordComponent {\n syncLoading: boolean = true;\n showPassword: boolean = false;\n hint: string = '';\n identifier: string = null;\n orgId: string;\n resetPasswordAutoEnroll = false;\n\n onSuccessfulChangePassword: () => Promise;\n successRoute = 'vault';\n\n constructor(i18nService: I18nService, cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, protected router: Router,\n private apiService: ApiService, private syncService: SyncService, private route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n this.syncLoading = false;\n\n const queryParamsSub = this.route.queryParams.subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n\n if (queryParamsSub != null) {\n queryParamsSub.unsubscribe();\n }\n });\n\n // Automatic Enrollment Detection\n if (this.identifier != null) {\n try {\n const response = await this.apiService.getOrganizationAutoEnrollStatus(this.identifier);\n this.orgId = response.id;\n this.resetPasswordAutoEnroll = response.resetPasswordEnabled;\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n super.ngOnInit();\n }\n\n async setupSubmitActions() {\n this.kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n this.kdfIterations = useLowerKdf ? 10000 : 100000;\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new SetPasswordRequest(\n masterPasswordHash,\n encKey[1].encryptedString,\n this.hint,\n this.kdf,\n this.kdfIterations,\n this.identifier,\n new KeysRequest(keys[0], keys[1].encryptedString)\n );\n try {\n if (this.resetPasswordAutoEnroll) {\n this.formPromise = this.apiService.setPassword(request).then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n return this.apiService.getOrganizationKeys(this.orgId);\n }).then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n const userId = await this.userService.getUserId();\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const userEncKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(userEncKey.key, publicKey.buffer);\n\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(this.orgId, userId, resetRequest);\n });\n } else {\n this.formPromise = this.apiService.setPassword(request).then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n });\n }\n\n await this.formPromise;\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.router.navigate([this.successRoute]);\n }\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n private async onSetPasswordSuccess(key: SymmetricCryptoKey, encKey: [SymmetricCryptoKey, EncString], keys: [string, EncString]) {\n await this.userService.setInformation(await this.userService.getUserId(), await this.userService.getEmail(),\n this.kdf, this.kdfIterations);\n await this.cryptoService.setKey(key);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n await this.cryptoService.setEncPrivateKey(keys[1].encryptedString);\n\n const localKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.LocalAuthorization);\n await this.cryptoService.setKeyHash(localKeyHash);\n }\n}\n","import { KeysRequest } from './keysRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class SetPasswordRequest {\n masterPasswordHash: string;\n key: string;\n masterPasswordHint: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n\n constructor(masterPasswordHash: string, key: string, masterPasswordHint: string, kdf: KdfType,\n kdfIterations: number, orgIdentifier: string, keys: KeysRequest) {\n this.masterPasswordHash = masterPasswordHash;\n this.key = key;\n this.masterPasswordHint = masterPasswordHint;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.orgIdentifier = orgIdentifier;\n this.keys = keys;\n }\n}\n","import {\n Directive,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Directive()\nexport class TwoFactorOptionsComponent implements OnInit {\n @Output() onProviderSelected = new EventEmitter();\n @Output() onRecoverSelected = new EventEmitter();\n\n providers: any[] = [];\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected win: Window) { }\n\n ngOnInit() {\n this.providers = this.authService.getSupportedTwoFactorProviders(this.win);\n }\n\n choose(p: any) {\n this.onProviderSelected.emit(p.type);\n }\n\n recover() {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/lost-two-step-device/');\n this.onRecoverSelected.emit();\n }\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorEmailRequest } from 'jslib-common/models/request/twoFactorEmailRequest';\n\nimport { AuthResult } from 'jslib-common/models/domain';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { TwoFactorProviders } from 'jslib-common/services/auth.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport * as DuoWebSDK from 'duo_web_sdk';\nimport { WebAuthnIFrame } from 'jslib-common/misc/webauthn_iframe';\n\n@Directive()\nexport class TwoFactorComponent implements OnInit, OnDestroy {\n token: string = '';\n remember: boolean = false;\n webAuthnReady: boolean = false;\n webAuthnNewTab: boolean = false;\n providers = TwoFactorProviders;\n providerType = TwoFactorProviderType;\n selectedProviderType: TwoFactorProviderType = TwoFactorProviderType.Authenticator;\n webAuthnSupported: boolean = false;\n webAuthn: WebAuthnIFrame = null;\n title: string = '';\n twoFactorEmail: string = null;\n formPromise: Promise;\n emailPromise: Promise;\n identifier: string = null;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n\n get webAuthnAllow(): string {\n return `publickey-credentials-get ${this.environmentService.getWebVaultUrl()}`;\n }\n\n protected loginRoute = 'login';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService, protected win: Window,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected storageService: StorageService, protected route: ActivatedRoute) {\n this.webAuthnSupported = this.platformUtilsService.supportsWebAuthn(win);\n }\n\n async ngOnInit() {\n if (!this.authing || this.authService.twoFactorProvidersData == null) {\n this.router.navigate([this.loginRoute]);\n return;\n }\n\n this.route.queryParams.pipe(first()).subscribe(qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n });\n\n if (this.needsLock) {\n this.successRoute = 'lock';\n }\n\n if (this.win != null && this.webAuthnSupported) {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n this.webAuthn = new WebAuthnIFrame(this.win, webVaultUrl, this.webAuthnNewTab, this.platformUtilsService,\n this.i18nService, (token: string) => {\n this.token = token;\n this.submit();\n }, (error: string) => {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), error);\n }, (info: string) => {\n if (info === 'ready') {\n this.webAuthnReady = true;\n }\n }\n );\n }\n\n this.selectedProviderType = this.authService.getDefaultTwoFactorProvider(this.webAuthnSupported);\n await this.init();\n }\n\n ngOnDestroy(): void {\n this.cleanupWebAuthn();\n this.webAuthn = null;\n }\n\n async init() {\n if (this.selectedProviderType == null) {\n this.title = this.i18nService.t('loginUnavailable');\n return;\n }\n\n this.cleanupWebAuthn();\n this.title = (TwoFactorProviders as any)[this.selectedProviderType].name;\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n switch (this.selectedProviderType) {\n case TwoFactorProviderType.WebAuthn:\n if (!this.webAuthnNewTab) {\n setTimeout(() => {\n this.authWebAuthn();\n }, 500);\n }\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n setTimeout(() => {\n DuoWebSDK.init({\n iframe: undefined,\n host: providerData.Host,\n sig_request: providerData.Signature,\n submit_callback: async (f: HTMLFormElement) => {\n const sig = f.querySelector('input[name=\"sig_response\"]') as HTMLInputElement;\n if (sig != null) {\n this.token = sig.value;\n await this.submit();\n }\n },\n });\n }, 0);\n break;\n case TwoFactorProviderType.Email:\n this.twoFactorEmail = providerData.Email;\n if (this.authService.twoFactorProvidersData.size > 1) {\n await this.sendEmail(false);\n }\n break;\n default:\n break;\n }\n }\n\n async submit() {\n if (this.token == null || this.token === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verificationCodeRequired'));\n return;\n }\n\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn) {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n } else {\n return;\n }\n } else if (this.selectedProviderType === TwoFactorProviderType.Email ||\n this.selectedProviderType === TwoFactorProviderType.Authenticator) {\n this.token = this.token.replace(' ', '').trim();\n }\n\n try {\n await this.doSubmit();\n } catch {\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn && this.webAuthn != null) {\n this.webAuthn.start();\n }\n }\n }\n\n async doSubmit() {\n this.formPromise = this.authService.logInTwoFactor(this.selectedProviderType, this.token, this.remember);\n const response: AuthResult = await this.formPromise;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (response.resetMasterPassword) {\n this.successRoute = 'set-password';\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n\n async sendEmail(doToast: boolean) {\n if (this.selectedProviderType !== TwoFactorProviderType.Email) {\n return;\n }\n\n if (this.emailPromise != null) {\n return;\n }\n\n try {\n const request = new TwoFactorEmailRequest(this.authService.email, this.authService.masterPasswordHash);\n this.emailPromise = this.apiService.postTwoFactorEmail(request);\n await this.emailPromise;\n if (doToast) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('verificationCodeEmailSent', this.twoFactorEmail));\n }\n } catch { }\n\n this.emailPromise = null;\n }\n\n authWebAuthn() {\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n\n if (!this.webAuthnSupported || this.webAuthn == null) {\n return;\n }\n\n this.webAuthn.init(providerData);\n }\n\n private cleanupWebAuthn() {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n this.webAuthn.cleanup();\n }\n }\n\n get authing(): boolean {\n return this.authService.authingWithPassword() || this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n\n get needsLock(): boolean {\n return this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n}\n","import { DeviceType } from '../../enums/deviceType';\n\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class DeviceRequest {\n type: DeviceType;\n name: string;\n identifier: string;\n pushToken?: string;\n\n constructor(appId: string, platformUtilsService: PlatformUtilsService) {\n this.type = platformUtilsService.getDevice();\n this.name = platformUtilsService.getDeviceString();\n this.identifier = appId;\n this.pushToken = null;\n }\n}\n","export class PreloginRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { CaptchaProtectedRequest } from './captchaProtectedRequest';\nimport { DeviceRequest } from './deviceRequest';\n\nimport { Utils } from '../../misc/utils';\n\nexport class TokenRequest implements CaptchaProtectedRequest {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n redirectUri: string;\n clientId: string;\n clientSecret: string;\n device?: DeviceRequest;\n\n constructor(credentials: string[], codes: string[], clientIdClientSecret: string[], public provider: TwoFactorProviderType,\n public token: string, public remember: boolean, public captchaResponse: string, device?: DeviceRequest) {\n if (credentials != null && credentials.length > 1) {\n this.email = credentials[0];\n this.masterPasswordHash = credentials[1];\n } else if (codes != null && codes.length > 2) {\n this.code = codes[0];\n this.codeVerifier = codes[1];\n this.redirectUri = codes[2];\n } else if (clientIdClientSecret != null && clientIdClientSecret.length > 1) {\n this.clientId = clientIdClientSecret[0];\n this.clientSecret = clientIdClientSecret[1];\n }\n this.device = device != null ? device : null;\n }\n\n toIdentityToken(clientId: string) {\n const obj: any = {\n scope: 'api offline_access',\n client_id: clientId,\n };\n\n if (this.clientSecret != null) {\n obj.scope = clientId.startsWith('organization') ? 'api.organization' : 'api';\n obj.grant_type = 'client_credentials';\n obj.client_secret = this.clientSecret;\n } else if (this.masterPasswordHash != null && this.email != null) {\n obj.grant_type = 'password';\n obj.username = this.email;\n obj.password = this.masterPasswordHash;\n } else if (this.code != null && this.codeVerifier != null && this.redirectUri != null) {\n obj.grant_type = 'authorization_code';\n obj.code = this.code;\n obj.code_verifier = this.codeVerifier;\n obj.redirect_uri = this.redirectUri;\n } else {\n throw new Error('must provide credentials or codes');\n }\n\n if (this.device) {\n obj.deviceType = this.device.type;\n obj.deviceIdentifier = this.device.identifier;\n obj.deviceName = this.device.name;\n // no push tokens for browser apps yet\n // obj.devicePushToken = this.device.pushToken;\n }\n\n if (this.token && this.provider != null) {\n obj.twoFactorToken = this.token;\n obj.twoFactorProvider = this.provider;\n obj.twoFactorRemember = this.remember ? '1' : '0';\n }\n\n if (this.captchaResponse != null) {\n obj.captchaResponse = this.captchaResponse;\n }\n\n\n return obj;\n }\n\n alterIdentityTokenHeaders(headers: Headers) {\n if (this.clientSecret == null && this.masterPasswordHash != null && this.email != null) {\n headers.set('Auth-Email', Utils.fromUtf8ToUrlB64(this.email));\n }\n }\n}\n","import { I18nService } from '../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nexport class WebAuthnIFrame {\n private iframe: HTMLIFrameElement = null;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(private win: Window, private webVaultUrl: string, private webAuthnNewTab: boolean,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private successCallback: Function, private errorCallback: Function, private infoCallback: Function) {\n this.connectorLink = win.document.createElement('a');\n }\n\n init(data: any): void {\n const params = new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n btnText: encodeURIComponent(this.i18nService.t('webAuthnAuthenticate')),\n v: '1',\n });\n\n if (this.webAuthnNewTab) {\n // Firefox fallback which opens the webauthn page in a new tab\n params.append('locale', this.i18nService.translationLocale);\n this.platformUtilsService.launchUri(`${this.webVaultUrl}/webauthn-fallback-connector.html?${params}`);\n } else {\n this.connectorLink.href = `${this.webVaultUrl}/webauthn-connector.html?${params}`;\n this.iframe = this.win.document.getElementById('webauthn_iframe') as HTMLIFrameElement;\n this.iframe.allow = 'publickey-credentials-get ' + new URL(this.webVaultUrl).origin;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener('message', this.parseFunction, false);\n }\n }\n\n stop() {\n this.sendMessage('stop');\n }\n\n start() {\n this.sendMessage('start');\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(('0x' + p1) as any);\n }));\n }\n\n cleanup() {\n this.win.removeEventListener('message', this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split('|');\n if (parts[0] === 'success' && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === 'error' && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === 'info' && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (event.origin == null || event.origin === '' || event.origin !== (this.connectorLink as any).origin ||\n event.data == null || typeof (event.data) !== 'string') {\n return false;\n }\n\n return event.data.indexOf('success|') === 0 || event.data.indexOf('error|') === 0 ||\n event.data.indexOf('info|') === 0;\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from './change-password.component';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { UpdateTempPasswordRequest } from 'jslib-common/models/request/updateTempPasswordRequest';\n\n@Directive()\nexport class UpdateTempPasswordComponent extends BaseChangePasswordComponent {\n hint: string;\n key: string;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n showPassword: boolean = false;\n\n onSuccessfulChangePassword: () => Promise;\n\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, policyService: PolicyService,\n cryptoService: CryptoService, userService: UserService,\n messagingService: MessagingService, private apiService: ApiService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n async setupSubmitActions(): Promise {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n this.email = await this.userService.getEmail();\n this.kdf = await this.userService.getKdf();\n this.kdfIterations = await this.userService.getKdfIterations();\n return true;\n }\n\n async submit() {\n // Validation\n if (!await this.strongPassword()) {\n return;\n }\n\n if (!await this.setupSubmitActions()) {\n return;\n }\n\n try {\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(this.masterPassword, this.email.trim().toLowerCase(),\n this.kdf, this.kdfIterations);\n const newPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n\n // Grab user's current enc key\n const userEncKey = await this.cryptoService.getEncKey();\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n await this.performSubmitActions(newPasswordHash, newKey, newEncKey);\n } catch { }\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n try {\n // Create request\n const request = new UpdateTempPasswordRequest();\n request.key = encKey[1].encryptedString;\n request.newMasterPasswordHash = masterPasswordHash;\n request.masterPasswordHint = this.hint;\n\n // Update user's password\n this.formPromise = this.apiService.putUpdateTempPassword(request);\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('updatedMasterPassword'));\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.messagingService.send('logout');\n }\n } catch { }\n }\n}\n","import { OrganizationUserResetPasswordRequest } from './organizationUserResetPasswordRequest';\n\nexport class UpdateTempPasswordRequest extends OrganizationUserResetPasswordRequest {\n masterPasswordHint: string;\n}\n","export class VerifyEmailRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","export class VerifyDeleteRecoverRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","export class OrganizationUserConfirmRequest {\n key: string;\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\n}\n","import { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationUpdateRequest {\n name: string;\n identifier: string;\n businessName: string;\n billingEmail: string;\n keys: OrganizationKeysRequest;\n}\n","export class SeatRequest {\n seatAdjustment: number;\n}\n","export enum TransactionType {\n Charge = 0,\n Credit = 1,\n PromotionalCredit = 2,\n ReferralCredit = 3,\n Refund = 4,\n}\n","export class VerifyBankRequest {\n amount1: number;\n amount2: number;\n}\n","export class BitPayInvoiceRequest {\n userId: string;\n organizationId: string;\n credit: boolean;\n amount: number;\n returnUrl: string;\n name: string;\n email: string;\n}\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { OrganizationTaxInfoUpdateRequest } from '../request/organizationTaxInfoUpdateRequest';\n\nexport class PaymentRequest extends OrganizationTaxInfoUpdateRequest {\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n}\n","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorDuoRequest extends PasswordVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderRequest extends PasswordVerificationRequest {\n type: TwoFactorProviderType;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorAuthenticatorRequest extends PasswordVerificationRequest {\n token: string;\n key: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorEmailRequest extends PasswordVerificationRequest {\n token: string;\n email: string;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorWebAuthnDeleteRequest extends PasswordVerificationRequest {\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorWebAuthnRequest extends PasswordVerificationRequest {\n deviceResponse: PublicKeyCredential;\n name: string;\n id: number;\n}\n","import { PasswordVerificationRequest } from './passwordVerificationRequest';\n\nexport class UpdateTwoFactorYubioOtpRequest extends PasswordVerificationRequest {\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n}\n","import {\n Directive,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\n\n@Directive()\nexport class ExportComponent {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n masterPassword: string;\n format: 'json' | 'encrypted_json' | 'csv' = 'json';\n showPassword = false;\n\n constructor(protected cryptoService: CryptoService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected exportService: ExportService,\n protected eventService: EventService, protected win: Window) { }\n\n get encryptedFormat() {\n return this.format === 'encrypted_json';\n }\n\n async submit() {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n return;\n }\n\n const acceptedWarning = await this.warningDialog();\n if (!acceptedWarning) {\n return;\n }\n\n const passwordValid = await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, null);\n if (passwordValid) {\n try {\n this.formPromise = this.getExportData();\n const data = await this.formPromise;\n this.downloadFile(data);\n this.saved();\n await this.collectEvent();\n } catch { }\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n\n async warningDialog() {\n if (this.encryptedFormat) {\n return await this.platformUtilsService.showDialog(\n '

' + this.i18nService.t('encExportKeyWarningDesc') +\n '

' + this.i18nService.t('encExportAccountWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning',\n true);\n } else {\n return await this.platformUtilsService.showDialog(\n this.i18nService.t('exportWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning');\n }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n protected saved() {\n this.onSaved.emit();\n }\n\n protected getExportData() {\n return this.exportService.getExport(this.format);\n }\n\n protected getFileName(prefix?: string) {\n let extension = this.format;\n if (this.format === 'encrypted_json') {\n if (prefix == null) {\n prefix = 'encrypted';\n } else {\n prefix = 'encrypted_' + prefix;\n }\n extension = 'json';\n }\n return this.exportService.getFileName(prefix, extension);\n }\n\n protected async collectEvent(): Promise {\n await this.eventService.collect(EventType.User_ClientExportedVault);\n }\n\n private downloadFile(csv: string): void {\n const fileName = this.getFileName();\n this.platformUtilsService.saveFile(this.win, csv, { type: 'text/plain' }, fileName);\n }\n}\n","export class AttachmentRequest {\n fileName: string;\n key: string;\n fileSize: number;\n adminRequest: boolean;\n}\n","import {\n CdkDragDrop,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { FieldType } from 'jslib-common/enums/fieldType';\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SecureNoteType } from 'jslib-common/enums/secureNoteType';\nimport { UriMatchType } from 'jslib-common/enums/uriMatchType';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CardView } from 'jslib-common/models/view/cardView';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\nimport { FieldView } from 'jslib-common/models/view/fieldView';\nimport { FolderView } from 'jslib-common/models/view/folderView';\nimport { IdentityView } from 'jslib-common/models/view/identityView';\nimport { LoginUriView } from 'jslib-common/models/view/loginUriView';\nimport { LoginView } from 'jslib-common/models/view/loginView';\nimport { SecureNoteView } from 'jslib-common/models/view/secureNoteView';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() cloneMode: boolean = false;\n @Input() folderId: string = null;\n @Input() cipherId: string;\n @Input() type: CipherType;\n @Input() collectionIds: string[];\n @Input() organizationId: string = null;\n @Output() onSavedCipher = new EventEmitter();\n @Output() onDeletedCipher = new EventEmitter();\n @Output() onRestoredCipher = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n @Output() onEditAttachments = new EventEmitter();\n @Output() onShareCipher = new EventEmitter();\n @Output() onEditCollections = new EventEmitter();\n @Output() onGeneratePassword = new EventEmitter();\n\n editMode: boolean = false;\n cipher: CipherView;\n folders: FolderView[];\n collections: CollectionView[] = [];\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n restorePromise: Promise;\n checkPasswordPromise: Promise;\n showPassword: boolean = false;\n showCardNumber: boolean = false;\n showCardCode: boolean = false;\n cipherType = CipherType;\n fieldType = FieldType;\n addFieldType: FieldType = FieldType.Text;\n typeOptions: any[];\n cardBrandOptions: any[];\n cardExpMonthOptions: any[];\n identityTitleOptions: any[];\n addFieldTypeOptions: any[];\n uriMatchOptions: any[];\n ownershipOptions: any[] = [];\n autofillOnPageLoadOptions: any[];\n currentDate = new Date();\n allowPersonal = true;\n reprompt: boolean = false;\n\n protected writeableCollections: CollectionView[];\n private previousCipherId: string;\n\n constructor(protected cipherService: CipherService, protected folderService: FolderService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected auditService: AuditService, protected stateService: StateService,\n protected userService: UserService, protected collectionService: CollectionService,\n protected messagingService: MessagingService, protected eventService: EventService,\n protected policyService: PolicyService) {\n this.typeOptions = [\n { name: i18nService.t('typeLogin'), value: CipherType.Login },\n { name: i18nService.t('typeCard'), value: CipherType.Card },\n { name: i18nService.t('typeIdentity'), value: CipherType.Identity },\n { name: i18nService.t('typeSecureNote'), value: CipherType.SecureNote },\n ];\n this.cardBrandOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: 'Visa', value: 'Visa' },\n { name: 'Mastercard', value: 'Mastercard' },\n { name: 'American Express', value: 'Amex' },\n { name: 'Discover', value: 'Discover' },\n { name: 'Diners Club', value: 'Diners Club' },\n { name: 'JCB', value: 'JCB' },\n { name: 'Maestro', value: 'Maestro' },\n { name: 'UnionPay', value: 'UnionPay' },\n { name: i18nService.t('other'), value: 'Other' },\n ];\n this.cardExpMonthOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: '01 - ' + i18nService.t('january'), value: '1' },\n { name: '02 - ' + i18nService.t('february'), value: '2' },\n { name: '03 - ' + i18nService.t('march'), value: '3' },\n { name: '04 - ' + i18nService.t('april'), value: '4' },\n { name: '05 - ' + i18nService.t('may'), value: '5' },\n { name: '06 - ' + i18nService.t('june'), value: '6' },\n { name: '07 - ' + i18nService.t('july'), value: '7' },\n { name: '08 - ' + i18nService.t('august'), value: '8' },\n { name: '09 - ' + i18nService.t('september'), value: '9' },\n { name: '10 - ' + i18nService.t('october'), value: '10' },\n { name: '11 - ' + i18nService.t('november'), value: '11' },\n { name: '12 - ' + i18nService.t('december'), value: '12' },\n ];\n this.identityTitleOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('mr'), value: i18nService.t('mr') },\n { name: i18nService.t('mrs'), value: i18nService.t('mrs') },\n { name: i18nService.t('ms'), value: i18nService.t('ms') },\n { name: i18nService.t('dr'), value: i18nService.t('dr') },\n ];\n this.addFieldTypeOptions = [\n { name: i18nService.t('cfTypeText'), value: FieldType.Text },\n { name: i18nService.t('cfTypeHidden'), value: FieldType.Hidden },\n { name: i18nService.t('cfTypeBoolean'), value: FieldType.Boolean },\n ];\n this.uriMatchOptions = [\n { name: i18nService.t('defaultMatchDetection'), value: null },\n { name: i18nService.t('baseDomain'), value: UriMatchType.Domain },\n { name: i18nService.t('host'), value: UriMatchType.Host },\n { name: i18nService.t('startsWith'), value: UriMatchType.StartsWith },\n { name: i18nService.t('regEx'), value: UriMatchType.RegularExpression },\n { name: i18nService.t('exact'), value: UriMatchType.Exact },\n { name: i18nService.t('never'), value: UriMatchType.Never },\n ];\n this.autofillOnPageLoadOptions = [\n { name: i18nService.t('autoFillOnPageLoadUseDefault'), value: null },\n { name: i18nService.t('autoFillOnPageLoadYes'), value: true },\n { name: i18nService.t('autoFillOnPageLoadNo'), value: false },\n ];\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n async init() {\n const myEmail = await this.userService.getEmail();\n this.ownershipOptions.push({ name: myEmail, value: null });\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name')).forEach(o => {\n if (o.enabled && o.status === OrganizationUserStatusType.Confirmed) {\n this.ownershipOptions.push({ name: o.name, value: o.id });\n }\n });\n\n if (this.allowPersonal && await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership)) {\n this.allowPersonal = false;\n this.ownershipOptions.splice(0, 1);\n }\n\n this.writeableCollections = await this.loadCollections();\n }\n\n async load() {\n this.editMode = this.cipherId != null;\n if (this.editMode) {\n this.editMode = true;\n if (this.cloneMode) {\n this.cloneMode = true;\n this.title = this.i18nService.t('addItem');\n } else {\n this.title = this.i18nService.t('editItem');\n }\n } else {\n this.title = this.i18nService.t('addItem');\n }\n\n const addEditCipherInfo: any = await this.stateService.get('addEditCipherInfo');\n if (addEditCipherInfo != null) {\n this.cipher = addEditCipherInfo.cipher;\n this.collectionIds = addEditCipherInfo.collectionIds;\n }\n await this.stateService.remove('addEditCipherInfo');\n\n if (this.cipher == null) {\n if (this.editMode) {\n const cipher = await this.loadCipher();\n this.cipher = await cipher.decrypt();\n\n // Adjust Cipher Name if Cloning\n if (this.cloneMode) {\n this.cipher.name += ' - ' + this.i18nService.t('clone');\n // If not allowing personal ownership, update cipher's org Id to prompt downstream changes\n if (this.cipher.organizationId == null && !this.allowPersonal) {\n this.cipher.organizationId = this.organizationId;\n }\n }\n } else {\n this.cipher = new CipherView();\n this.cipher.organizationId = this.organizationId == null ? null : this.organizationId;\n this.cipher.folderId = this.folderId;\n this.cipher.type = this.type == null ? CipherType.Login : this.type;\n this.cipher.login = new LoginView();\n this.cipher.login.uris = [new LoginUriView()];\n this.cipher.card = new CardView();\n this.cipher.identity = new IdentityView();\n this.cipher.secureNote = new SecureNoteView();\n this.cipher.secureNote.type = SecureNoteType.Generic;\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n if (this.cipher != null && (!this.editMode || addEditCipherInfo != null || this.cloneMode)) {\n await this.organizationChanged();\n if (this.collectionIds != null && this.collectionIds.length > 0 && this.collections.length > 0) {\n this.collections.forEach(c => {\n if (this.collectionIds.indexOf(c.id) > -1) {\n (c as any).checked = true;\n }\n });\n }\n }\n\n this.folders = await this.folderService.getAllDecrypted();\n\n if (this.editMode && this.previousCipherId !== this.cipherId) {\n this.eventService.collect(EventType.Cipher_ClientViewed, this.cipherId);\n }\n this.previousCipherId = this.cipherId;\n this.reprompt = this.cipher.reprompt !== CipherRepromptType.None;\n }\n\n async submit(): Promise {\n if (this.cipher.isDeleted) {\n return this.restore();\n }\n\n if (this.cipher.name == null || this.cipher.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && !this.allowPersonal && this.cipher.organizationId == null) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('personalOwnershipSubmitError'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && this.cipher.type === CipherType.Login &&\n this.cipher.login.uris != null && this.cipher.login.uris.length === 1 &&\n (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === '')) {\n this.cipher.login.uris = null;\n }\n\n // Allows saving of selected collections during \"Add\" and \"Clone\" flows\n if ((!this.editMode || this.cloneMode) && this.cipher.organizationId != null) {\n this.cipher.collectionIds = this.collections == null ? [] :\n this.collections.filter(c => (c as any).checked).map(c => c.id);\n }\n\n // Clear current Cipher Id to trigger \"Add\" cipher flow\n if (this.cloneMode) {\n this.cipher.id = null;\n }\n\n const cipher = await this.encryptCipher();\n try {\n this.formPromise = this.saveCipher(cipher);\n await this.formPromise;\n this.cipher.id = cipher.id;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode && !this.cloneMode ? 'editedItem' : 'addedItem'));\n this.onSavedCipher.emit(this.cipher);\n this.messagingService.send(this.editMode && !this.cloneMode ? 'editedCipher' : 'addedCipher');\n return true;\n } catch { }\n\n return false;\n }\n\n addUri() {\n if (this.cipher.type !== CipherType.Login) {\n return;\n }\n\n if (this.cipher.login.uris == null) {\n this.cipher.login.uris = [];\n }\n\n this.cipher.login.uris.push(new LoginUriView());\n }\n\n removeUri(uri: LoginUriView) {\n if (this.cipher.type !== CipherType.Login || this.cipher.login.uris == null) {\n return;\n }\n\n const i = this.cipher.login.uris.indexOf(uri);\n if (i > -1) {\n this.cipher.login.uris.splice(i, 1);\n }\n }\n\n addField() {\n if (this.cipher.fields == null) {\n this.cipher.fields = [];\n }\n\n const f = new FieldView();\n f.type = this.addFieldType;\n f.newField = true;\n this.cipher.fields.push(f);\n }\n\n removeField(field: FieldView) {\n const i = this.cipher.fields.indexOf(field);\n if (i > -1) {\n this.cipher.fields.splice(i, 1);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n cancel() {\n this.onCancelled.emit(this.cipher);\n }\n\n attachments() {\n this.onEditAttachments.emit(this.cipher);\n }\n\n share() {\n this.onShareCipher.emit(this.cipher);\n }\n\n editCollections() {\n this.onEditCollections.emit(this.cipher);\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t('deleteItem'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.deleteCipher();\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeletedItem' : 'deletedItem'));\n this.onDeletedCipher.emit(this.cipher);\n this.messagingService.send(this.cipher.isDeleted ? 'permanentlyDeletedCipher' : 'deletedCipher');\n } catch { }\n\n return true;\n }\n\n async restore(): Promise {\n if (!this.cipher.isDeleted) {\n return false;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'), this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.restorePromise = this.restoreCipher();\n await this.restorePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('restoredItem'));\n this.onRestoredCipher.emit(this.cipher);\n this.messagingService.send('restoredCipher');\n } catch { }\n\n return true;\n }\n\n async generatePassword(): Promise {\n if (this.cipher.login != null && this.cipher.login.password != null && this.cipher.login.password.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('overwritePasswordConfirmation'), this.i18nService.t('overwritePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'));\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGeneratePassword.emit();\n return true;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('loginPassword').focus();\n if (this.editMode && this.showPassword) {\n this.eventService.collect(EventType.Cipher_ClientToggledPasswordVisible, this.cipherId);\n }\n }\n\n async toggleCardNumber() {\n this.showCardNumber = !this.showCardNumber;\n if (this.showCardNumber) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardNumberVisible, this.cipherId);\n }\n }\n\n toggleCardCode() {\n this.showCardCode = !this.showCardCode;\n document.getElementById('cardCode').focus();\n if (this.editMode && this.showCardCode) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId);\n }\n }\n\n toggleFieldValue(field: FieldView) {\n const f = (field as any);\n f.showValue = !f.showValue;\n if (this.editMode && f.showValue) {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n }\n }\n\n toggleUriOptions(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null && uri.match != null ? false : !u.showOptions;\n }\n\n loginUriMatchChanged(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null ? true : u.showOptions;\n }\n\n drop(event: CdkDragDrop) {\n moveItemInArray(this.cipher.fields, event.previousIndex, event.currentIndex);\n }\n\n async organizationChanged() {\n if (this.writeableCollections != null) {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n }\n if (this.cipher.organizationId != null) {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.cipher.organizationId);\n const org = await this.userService.getOrganization(this.cipher.organizationId);\n if (org != null) {\n this.cipher.organizationUseTotp = org.useTotp;\n }\n } else {\n this.collections = [];\n }\n }\n\n async checkPassword() {\n if (this.checkPasswordPromise != null) {\n return;\n }\n\n if (this.cipher.login == null || this.cipher.login.password == null || this.cipher.login.password === '') {\n return;\n }\n\n this.checkPasswordPromise = this.auditService.passwordLeaked(this.cipher.login.password);\n const matches = await this.checkPasswordPromise;\n this.checkPasswordPromise = null;\n\n if (matches > 0) {\n this.platformUtilsService.showToast('warning', null,\n this.i18nService.t('passwordExposed', matches.toString()));\n } else {\n this.platformUtilsService.showToast('success', null, this.i18nService.t('passwordSafe'));\n }\n }\n\n repromptChanged() {\n this.reprompt = !this.reprompt;\n if (this.reprompt) {\n this.cipher.reprompt = CipherRepromptType.Password;\n } else {\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly);\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected encryptCipher() {\n return this.cipherService.encrypt(this.cipher);\n }\n\n protected saveCipher(cipher: Cipher) {\n return this.cipherService.saveWithServer(cipher);\n }\n\n protected deleteCipher() {\n return this.cipher.isDeleted ? this.cipherService.deleteWithServer(this.cipher.id)\n : this.cipherService.softDeleteWithServer(this.cipher.id);\n }\n\n protected restoreCipher() {\n return this.cipherService.restoreWithServer(this.cipher.id);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { SearchService } from 'jslib-common/abstractions/search.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Directive()\nexport class CiphersComponent {\n @Input() activeCipherId: string = null;\n @Output() onCipherClicked = new EventEmitter();\n @Output() onCipherRightClicked = new EventEmitter();\n @Output() onAddCipher = new EventEmitter();\n @Output() onAddCipherOptions = new EventEmitter();\n\n loaded: boolean = false;\n ciphers: CipherView[] = [];\n searchText: string;\n searchPlaceholder: string = null;\n filter: (cipher: CipherView) => boolean = null;\n deleted: boolean = false;\n\n protected searchPending = false;\n\n private searchTimeout: any = null;\n\n constructor(protected searchService: SearchService) { }\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.deleted = deleted || false;\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async reload(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.loaded = false;\n this.ciphers = [];\n await this.load(filter, deleted);\n }\n\n async refresh() {\n await this.reload(this.filter, this.deleted);\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null, indexedCiphers?: CipherView[]) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n await this.doSearch(indexedCiphers);\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n await this.doSearch(indexedCiphers);\n this.searchPending = false;\n }, timeout);\n }\n\n selectCipher(cipher: CipherView) {\n this.onCipherClicked.emit(cipher);\n }\n\n rightClickCipher(cipher: CipherView) {\n this.onCipherRightClicked.emit(cipher);\n }\n\n addCipher() {\n this.onAddCipher.emit();\n }\n\n addCipherOptions() {\n this.onAddCipherOptions.emit();\n }\n\n isSearching() {\n return !this.searchPending && this.searchService.isSearchable(this.searchText);\n }\n\n protected deletedFilter: (cipher: CipherView) => boolean = c => c.isDeleted === this.deleted;\n\n protected async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, this.deletedFilter], indexedCiphers);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\n@Directive()\nexport class CollectionsComponent implements OnInit {\n @Input() cipherId: string;\n @Input() allowSelectNone = false;\n @Output() onSavedCollections = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collectionIds: string[];\n collections: CollectionView[] = [];\n\n protected cipherDomain: Cipher;\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.cipherDomain = await this.loadCipher();\n this.collectionIds = this.loadCipherCollections();\n this.cipher = await this.cipherDomain.decrypt();\n this.collections = await this.loadCollections();\n\n this.collections.forEach(c => (c as any).checked = false);\n if (this.collectionIds != null) {\n this.collections.forEach(c => {\n (c as any).checked = this.collectionIds != null && this.collectionIds.indexOf(c.id) > -1;\n });\n }\n }\n\n async submit() {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (!this.allowSelectNone && selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n this.cipherDomain.collectionIds = selectedCollectionIds;\n try {\n this.formPromise = this.saveCollections();\n await this.formPromise;\n this.onSavedCollections.emit();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('editedItem'));\n } catch { }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected loadCipherCollections() {\n return this.cipherDomain.collectionIds;\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly && c.organizationId === this.cipher.organizationId);\n }\n\n protected saveCollections() {\n return this.cipherService.saveCollectionsWithServer(this.cipherDomain);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\nimport { TreeNode } from 'jslib-common/models/domain/treeNode';\n\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\n@Directive()\nexport class GroupingsComponent {\n @Input() showFolders = true;\n @Input() showCollections = true;\n @Input() showFavorites = true;\n @Input() showTrash = true;\n\n @Output() onAllClicked = new EventEmitter();\n @Output() onFavoritesClicked = new EventEmitter();\n @Output() onTrashClicked = new EventEmitter();\n @Output() onCipherTypeClicked = new EventEmitter();\n @Output() onFolderClicked = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n @Output() onCollectionClicked = new EventEmitter();\n\n folders: FolderView[];\n nestedFolders: TreeNode[];\n collections: CollectionView[];\n nestedCollections: TreeNode[];\n loaded: boolean = false;\n cipherType = CipherType;\n selectedAll: boolean = false;\n selectedFavorites: boolean = false;\n selectedTrash: boolean = false;\n selectedType: CipherType = null;\n selectedFolder: boolean = false;\n selectedFolderId: string = null;\n selectedCollectionId: string = null;\n\n private collapsedGroupings: Set;\n private collapsedGroupingsKey: string;\n\n constructor(protected collectionService: CollectionService, protected folderService: FolderService,\n protected storageService: StorageService, protected userService: UserService) { }\n\n async load(setLoaded = true) {\n const userId = await this.userService.getUserId();\n this.collapsedGroupingsKey = ConstantsService.collapsedGroupingsKey + '_' + userId;\n const collapsedGroupings = await this.storageService.get(this.collapsedGroupingsKey);\n if (collapsedGroupings == null) {\n this.collapsedGroupings = new Set();\n } else {\n this.collapsedGroupings = new Set(collapsedGroupings);\n }\n\n await this.loadFolders();\n await this.loadCollections();\n\n if (setLoaded) {\n this.loaded = true;\n }\n }\n\n async loadCollections(organizationId?: string) {\n if (!this.showCollections) {\n return;\n }\n const collections = await this.collectionService.getAllDecrypted();\n if (organizationId != null) {\n this.collections = collections.filter(c => c.organizationId === organizationId);\n } else {\n this.collections = collections;\n }\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n async loadFolders() {\n if (!this.showFolders) {\n return;\n }\n this.folders = await this.folderService.getAllDecrypted();\n this.nestedFolders = await this.folderService.getAllNested();\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.onAllClicked.emit();\n }\n\n selectFavorites() {\n this.clearSelections();\n this.selectedFavorites = true;\n this.onFavoritesClicked.emit();\n }\n\n selectTrash() {\n this.clearSelections();\n this.selectedTrash = true;\n this.onTrashClicked.emit();\n }\n\n selectType(type: CipherType) {\n this.clearSelections();\n this.selectedType = type;\n this.onCipherTypeClicked.emit(type);\n }\n\n selectFolder(folder: FolderView) {\n this.clearSelections();\n this.selectedFolder = true;\n this.selectedFolderId = folder.id;\n this.onFolderClicked.emit(folder);\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n selectCollection(collection: CollectionView) {\n this.clearSelections();\n this.selectedCollectionId = collection.id;\n this.onCollectionClicked.emit(collection);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedFavorites = false;\n this.selectedTrash = false;\n this.selectedType = null;\n this.selectedFolder = false;\n this.selectedFolderId = null;\n this.selectedCollectionId = null;\n }\n\n collapse(grouping: FolderView | CollectionView, idPrefix = '') {\n if (grouping.id == null) {\n return;\n }\n const id = idPrefix + grouping.id;\n if (this.isCollapsed(grouping, idPrefix)) {\n this.collapsedGroupings.delete(id);\n } else {\n this.collapsedGroupings.add(id);\n }\n this.storageService.save(this.collapsedGroupingsKey, this.collapsedGroupings);\n }\n\n isCollapsed(grouping: FolderView | CollectionView, idPrefix = '') {\n return this.collapsedGroupings.has(idPrefix + grouping.id);\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccessResponse } from '../response/sendAccessResponse';\n\nimport { SendAccessView } from '../view/sendAccessView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SendAccess extends Domain {\n id: string;\n type: SendType;\n name: EncString;\n file: SendFile;\n text: SendText;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(obj?: SendAccessResponse, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n expirationDate: null,\n creatorIdentifier: null,\n }, alreadyEncrypted, ['id', 'expirationDate', 'creatorIdentifier']);\n\n this.type = obj.type;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const model = new SendAccessView(this);\n\n await this.decryptObj(model, {\n name: null,\n }, null, key);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(key);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(key);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccess } from '../domain/sendAccess';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendAccessView implements View {\n id: string = null;\n name: string = null;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n expirationDate: Date = null;\n creatorIdentifier: string = null;\n\n constructor(s?: SendAccess) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.type = s.type;\n this.expirationDate = s.expirationDate;\n this.creatorIdentifier = s.creatorIdentifier;\n }\n}\n","export class SendAccessRequest {\n password: string;\n}\n","import { DatePipe } from '@angular/common';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SendType } from 'jslib-common/enums/sendType';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { SendFileView } from 'jslib-common/models/view/sendFileView';\nimport { SendTextView } from 'jslib-common/models/view/sendTextView';\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { EncArrayBuffer } from 'jslib-common/models/domain/encArrayBuffer';\nimport { Send } from 'jslib-common/models/domain/send';\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() sendId: string;\n @Input() type: SendType;\n\n @Output() onSavedSend = new EventEmitter();\n @Output() onDeletedSend = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n\n copyLink = false;\n disableSend = false;\n disableHideEmail = false;\n send: SendView;\n deletionDate: string;\n expirationDate: string;\n hasPassword: boolean;\n password: string;\n showPassword = false;\n formPromise: Promise;\n deletePromise: Promise;\n sendType = SendType;\n typeOptions: any[];\n canAccessPremium = true;\n emailVerified = true;\n alertShown = false;\n showOptions = false;\n\n private sendLinkBaseUrl: string;\n\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService, protected datePipe: DatePipe,\n protected sendService: SendService, protected userService: UserService,\n protected messagingService: MessagingService, protected policyService: PolicyService) {\n this.typeOptions = [\n { name: i18nService.t('sendTypeFile'), value: SendType.File },\n { name: i18nService.t('sendTypeText'), value: SendType.Text },\n ];\n this.sendLinkBaseUrl = this.environmentService.getSendUrl();\n }\n\n get link(): string {\n if (this.send.id != null && this.send.accessId != null) {\n return this.sendLinkBaseUrl + this.send.accessId + '/' + this.send.urlB64Key;\n }\n return null;\n }\n\n get isSafari() {\n return this.platformUtilsService.isSafari();\n }\n\n get isDateTimeLocalSupported(): boolean {\n return !(this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari());\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n get editMode(): boolean {\n return this.sendId != null;\n }\n\n get title(): string {\n return this.i18nService.t(\n this.editMode ?\n 'editSend' :\n 'createSend'\n );\n }\n\n setDates(event: {deletionDate: string, expirationDate: string}) {\n this.deletionDate = event.deletionDate;\n this.expirationDate = event.expirationDate;\n }\n\n async load() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n this.disableHideEmail = await this.policyService.policyAppliesToUser(PolicyType.SendOptions,\n p => p.data.disableHideEmail);\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n this.emailVerified = await this.userService.getEmailVerified();\n if (!this.canAccessPremium || !this.emailVerified) {\n this.type = SendType.Text;\n }\n\n if (this.send == null) {\n if (this.editMode) {\n const send = await this.loadSend();\n this.send = await send.decrypt();\n } else {\n this.send = new SendView();\n this.send.type = this.type == null ? SendType.File : this.type;\n this.send.file = new SendFileView();\n this.send.text = new SendTextView();\n this.send.deletionDate = new Date();\n this.send.deletionDate.setDate(this.send.deletionDate.getDate() + 7);\n }\n }\n\n this.hasPassword = this.send.password != null && this.send.password.trim() !== '';\n }\n\n async submit(): Promise {\n if (this.disableSend) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('sendDisabledWarning'));\n return false;\n }\n\n if (this.send.name == null || this.send.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n let file: File = null;\n if (this.send.type === SendType.File && !this.editMode) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n file = files[0];\n if (files[0].size > 524288000) { // 500 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n }\n\n if (this.password != null && this.password.trim() === '') {\n this.password = null;\n }\n\n this.formPromise = this.encryptSend(file)\n .then(async encSend => {\n const uploadPromise = this.sendService.saveWithServer(encSend);\n await uploadPromise;\n if (this.send.id == null) {\n this.send.id = encSend[0].id;\n }\n if (this.send.accessId == null) {\n this.send.accessId = encSend[0].accessId;\n }\n this.onSavedSend.emit(this.send);\n if (this.copyLink && this.link != null) {\n const copySuccess = await this.copyLinkToClipboard(this.link);\n if (copySuccess ?? true) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedSend' : 'createdSend'));\n } else {\n await this.platformUtilsService.showDialog(\n this.i18nService.t(this.editMode ? 'editedSend' : 'createdSend'), null,\n this.i18nService.t('ok'), null, 'success', null);\n await this.copyLinkToClipboard(this.link);\n }\n }\n });\n try {\n await this.formPromise;\n return true;\n } catch { }\n return false;\n }\n\n async copyLinkToClipboard(link: string): Promise {\n return Promise.resolve(this.platformUtilsService.copyToClipboard(link));\n }\n\n async delete(): Promise {\n if (this.deletePromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.sendService.deleteWithServer(this.send.id);\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.load();\n this.onDeletedSend.emit(this.send);\n return true;\n } catch { }\n\n return false;\n }\n\n typeChanged() {\n if (this.send.type === SendType.File && !this.alertShown) {\n if (!this.canAccessPremium) {\n this.alertShown = true;\n this.messagingService.send('premiumRequired');\n } else if (!this.emailVerified) {\n this.alertShown = true;\n this.messagingService.send('emailVerificationRequired');\n }\n }\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n protected async loadSend(): Promise {\n return this.sendService.get(this.sendId);\n }\n\n protected async encryptSend(file: File): Promise<[Send, EncArrayBuffer]> {\n const sendData = await this.sendService.encrypt(this.send, file, this.password, null);\n\n // Parse dates\n try {\n sendData[0].deletionDate = this.deletionDate == null ? null : new Date(this.deletionDate);\n } catch {\n sendData[0].deletionDate = null;\n }\n try {\n sendData[0].expirationDate = this.expirationDate == null ? null : new Date(this.expirationDate);\n } catch {\n sendData[0].expirationDate = null;\n }\n\n return sendData;\n }\n\n protected togglePasswordVisible() {\n this.showPassword = !this.showPassword;\n document.getElementById('password').focus();\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n// Different BrowserPath = different controls.\nenum BrowserPath {\n // Native datetime-locale.\n // We are happy.\n Default = 'default',\n\n // Native date and time inputs, but no datetime-locale.\n // We use individual date and time inputs and create a datetime programatically on submit.\n Firefox = 'firefox',\n\n // No native date, time, or datetime-locale inputs.\n // We use a polyfill for dates and a dropdown for times.\n Safari = 'safari',\n}\n\nenum DateField {\n DeletionDate = 'deletion',\n ExpriationDate = 'expiration',\n}\n\n// Value = hours\nenum DatePreset {\n OneHour = 1,\n OneDay = 24,\n TwoDays = 48,\n ThreeDays = 72,\n SevenDays = 168,\n ThirtyDays = 720,\n Custom = 0,\n Never = null,\n}\n\n// TimeOption is used for the dropdown implementation of custom times\n// twelveHour = displayed time; twentyFourHour = time used in logic\ninterface TimeOption {\n twelveHour: string;\n twentyFourHour: string;\n}\n\n@Directive()\nexport class EffluxDatesComponent implements OnInit {\n @Input() readonly initialDeletionDate: Date;\n @Input() readonly initialExpirationDate: Date;\n @Input() readonly editMode: boolean;\n @Input() readonly disabled: boolean;\n\n @Output() datesChanged = new EventEmitter<{deletionDate: string, expirationDate: string}>();\n\n get browserPath(): BrowserPath {\n if (this.platformUtilsService.isFirefox()) {\n return BrowserPath.Firefox;\n } else if (this.platformUtilsService.isSafari()) {\n return BrowserPath.Safari;\n }\n return BrowserPath.Default;\n }\n\n datesForm = new FormGroup({\n selectedDeletionDatePreset: new FormControl(),\n selectedExpirationDatePreset: new FormControl(),\n defaultDeletionDateTime: new FormControl(),\n defaultExpirationDateTime: new FormControl(),\n fallbackDeletionDate: new FormControl(),\n fallbackDeletionTime: new FormControl(),\n fallbackExpirationDate: new FormControl(),\n fallbackExpirationTime: new FormControl(),\n });\n\n deletionDatePresets: any[] = [\n { name: this.i18nService.t('oneHour'), value: DatePreset.OneHour },\n { name: this.i18nService.t('oneDay'), value: DatePreset.OneDay },\n { name: this.i18nService.t('days', '2'), value: DatePreset.TwoDays },\n { name: this.i18nService.t('days', '3'), value: DatePreset.ThreeDays },\n { name: this.i18nService.t('days', '7'), value: DatePreset.SevenDays },\n { name: this.i18nService.t('days', '30'), value: DatePreset.ThirtyDays },\n { name: this.i18nService.t('custom'), value: DatePreset.Custom },\n ];\n\n expirationDatePresets: any[] = [\n { name: this.i18nService.t('never'), value: DatePreset.Never },\n ].concat([...this.deletionDatePresets]);\n\n get selectedDeletionDatePreset(): FormControl {\n return this.datesForm.get('selectedDeletionDatePreset') as FormControl;\n }\n\n get selectedExpirationDatePreset(): FormControl {\n return this.datesForm.get('selectedExpirationDatePreset') as FormControl;\n }\n\n get defaultDeletionDateTime(): FormControl {\n return this.datesForm.get('defaultDeletionDateTime') as FormControl;\n }\n\n get defaultExpirationDateTime(): FormControl {\n return this.datesForm.get('defaultExpirationDateTime') as FormControl;\n }\n\n get fallbackDeletionDate(): FormControl {\n return this.datesForm.get('fallbackDeletionDate') as FormControl;\n }\n\n get fallbackDeletionTime(): FormControl {\n return this.datesForm.get('fallbackDeletionTime') as FormControl;\n }\n\n get fallbackExpirationDate(): FormControl {\n return this.datesForm.get('fallbackExpirationDate') as FormControl;\n }\n\n get fallbackExpirationTime(): FormControl {\n return this.datesForm.get('fallbackExpirationTime') as FormControl;\n }\n\n // Should be able to call these at any time and compute a submitable value\n get formattedDeletionDate(): string {\n switch (this.selectedDeletionDatePreset.value as DatePreset) {\n case DatePreset.Never:\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n return this.formattedDeletionDate;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n return this.fallbackDeletionDate.value + 'T' + this.fallbackDeletionTime.value;\n default:\n return this.defaultDeletionDateTime.value;\n }\n default:\n const now = new Date();\n const miliseconds = now.setTime(now.getTime() +\n (this.selectedDeletionDatePreset.value as number * 60 * 60 * 1000)) ;\n return new Date(miliseconds).toString();\n }\n }\n\n get formattedExpirationDate(): string {\n switch (this.selectedExpirationDatePreset.value as DatePreset) {\n case DatePreset.Never:\n return null;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n if ((!this.fallbackExpirationDate.value || !this.fallbackExpirationTime.value) &&\n this.editMode) {\n return null;\n }\n return this.fallbackExpirationDate.value + 'T' + this.fallbackExpirationTime.value;\n default:\n if (!this.defaultExpirationDateTime.value) {\n return null;\n }\n return this.defaultExpirationDateTime.value;\n }\n default:\n const now = new Date();\n const miliseconds = now.setTime(now.getTime() +\n (this.selectedExpirationDatePreset.value as number * 60 * 60 * 1000));\n return new Date(miliseconds).toString();\n }\n }\n //\n\n get safariDeletionTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.DeletionDate);\n }\n\n get safariExpirationTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.ExpriationDate);\n }\n\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe) {\n }\n\n ngOnInit(): void {\n this.setInitialFormValues();\n this.emitDates();\n this.datesForm.valueChanges.subscribe(() => {\n this.emitDates();\n });\n }\n\n onDeletionDatePresetSelect(value: DatePreset) {\n this.selectedDeletionDatePreset.setValue(value);\n }\n\n clearExpiration() {\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackExpirationDate.setValue(null);\n this.fallbackExpirationTime.setValue(null);\n break;\n case BrowserPath.Default:\n this.defaultExpirationDateTime.setValue(null);\n break;\n }\n }\n\n protected emitDates() {\n this.datesChanged.emit({\n deletionDate: this.formattedDeletionDate,\n expirationDate: this.formattedExpirationDate,\n });\n }\n\n protected setInitialFormValues() {\n if (this.editMode) {\n this.selectedDeletionDatePreset.setValue(DatePreset.Custom);\n this.selectedExpirationDatePreset.setValue(DatePreset.Custom);\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackDeletionDate.setValue(this.initialDeletionDate.toISOString().slice(0, 10));\n this.fallbackDeletionTime.setValue(this.initialDeletionDate.toTimeString().slice(0, 5));\n if (this.initialExpirationDate != null) {\n this.fallbackExpirationDate.setValue(this.initialExpirationDate.toISOString().slice(0, 10));\n this.fallbackExpirationTime.setValue(this.initialExpirationDate.toTimeString().slice(0, 5));\n }\n break;\n case BrowserPath.Default:\n if (this.initialExpirationDate) {\n this.defaultExpirationDateTime.setValue(\n this.datePipe.transform(new Date(this.initialExpirationDate), 'yyyy-MM-ddTHH:mm'));\n }\n this.defaultDeletionDateTime.setValue(this.datePipe.transform(new Date(this.initialDeletionDate), 'yyyy-MM-ddTHH:mm'));\n break;\n }\n } else {\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n this.selectedExpirationDatePreset.setValue(DatePreset.Never);\n }\n }\n\n protected safariTimePresetOptions(field: DateField): TimeOption[] {\n // init individual arrays for major sort groups\n const noon: TimeOption[] = [];\n const midnight: TimeOption[] = [];\n const ams: TimeOption[] = [];\n const pms: TimeOption[] = [];\n\n // determine minute skip (5 min, 10 min, 15 min, etc.)\n const minuteIncrementer = 15;\n\n // loop through each hour on a 12 hour system\n for (let h = 1; h <= 12; h++) {\n // loop through each minute in the hour using the skip to incriment\n for (let m = 0; m < 60; m += minuteIncrementer) {\n // init the final strings that will be added to the lists\n let hour = h.toString();\n let minutes = m.toString();\n\n // add prepending 0s to single digit hours/minutes\n if (h < 10) {\n hour = '0' + hour;\n }\n if (m < 10) {\n minutes = '0' + minutes;\n }\n\n // build time strings and push to relevant sort groups\n if (h === 12) {\n const midnightOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `00:${minutes}`,\n };\n midnight.push(midnightOption);\n\n const noonOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n noon.push(noonOption);\n } else {\n const amOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n ams.push(amOption);\n\n const pmOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${h + 12}:${minutes}`,\n };\n pms.push(pmOption);\n }\n }\n }\n\n // bring all the arrays together in the right order\n const validTimes = [...midnight, ...ams, ...noon, ...pms];\n\n // determine if an unsupported value already exists on the send & add that to the top of the option list\n // example: if the Send was created with a different client\n if (field === DateField.ExpriationDate && this.initialExpirationDate != null && this.editMode) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialExpirationDate, 'hh:mm a'),\n twentyFourHour: this.datePipe.transform(this.initialExpirationDate, 'HH:mm'),\n };\n return [previousValue, { twelveHour: null, twentyFourHour: null }, ...validTimes];\n } else if (field === DateField.DeletionDate && this.initialDeletionDate != null && this.editMode) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialDeletionDate, 'hh:mm a'),\n twentyFourHour: this.datePipe.transform(this.initialDeletionDate, 'HH:mm'),\n };\n return [previousValue, ...validTimes];\n } else {\n return [{ twelveHour: null, twentyFourHour: null }, ...validTimes];\n }\n }\n}\n","import {\n Directive,\n NgZone,\n OnInit,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SendType } from 'jslib-common/enums/sendType';\n\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Directive()\nexport class SendComponent implements OnInit {\n\n disableSend = false;\n sendType = SendType;\n loaded = false;\n loading = true;\n refreshing = false;\n expired: boolean = false;\n type: SendType = null;\n sends: SendView[] = [];\n filteredSends: SendView[] = [];\n searchText: string;\n selectedType: SendType;\n selectedAll: boolean;\n searchPlaceholder: string;\n filter: (cipher: SendView) => boolean;\n searchPending = false;\n hasSearched = false; // search() function called - returns true if text qualifies for search\n\n actionPromise: any;\n onSuccessfulRemovePassword: () => Promise;\n onSuccessfulDelete: () => Promise;\n onSuccessfulLoad: () => Promise;\n\n private searchTimeout: any;\n\n constructor(protected sendService: SendService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected environmentService: EnvironmentService,\n protected ngZone: NgZone, protected searchService: SearchService,\n protected policyService: PolicyService, protected userService: UserService) { }\n\n async ngOnInit() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n }\n\n async load(filter: (send: SendView) => boolean = null) {\n this.loading = true;\n const sends = await this.sendService.getAllDecrypted();\n this.sends = sends;\n if (this.onSuccessfulLoad != null) {\n await this.onSuccessfulLoad();\n } else {\n // Default action\n this.selectAll();\n }\n this.loading = false;\n this.loaded = true;\n }\n\n async reload(filter: (send: SendView) => boolean = null) {\n this.loaded = false;\n this.sends = [];\n await this.load(filter);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (send: SendView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n this.searchPending = false;\n }, timeout);\n }\n\n async removePassword(s: SendView): Promise {\n if (this.actionPromise != null || s.password == null) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('removePasswordConfirmation'),\n this.i18nService.t('removePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.removePasswordWithServer(s.id);\n await this.actionPromise;\n if (this.onSuccessfulRemovePassword != null) {\n this.onSuccessfulRemovePassword();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('removedPassword'));\n await this.load();\n }\n } catch { }\n this.actionPromise = null;\n }\n\n async delete(s: SendView): Promise {\n if (this.actionPromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.deleteWithServer(s.id);\n await this.actionPromise;\n\n if (this.onSuccessfulDelete != null) {\n this.onSuccessfulDelete();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.refresh();\n }\n } catch { }\n this.actionPromise = null;\n return true;\n }\n\n copy(s: SendView) {\n const sendLinkBaseUrl = this.environmentService.getSendUrl();\n const link = sendLinkBaseUrl + s.accessId + '/' + s.urlB64Key;\n this.platformUtilsService.copyToClipboard(link);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendLink')));\n }\n\n searchTextChanged() {\n this.search(200);\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.applyFilter(null);\n }\n\n selectType(type: SendType) {\n this.clearSelections();\n this.selectedType = type;\n this.applyFilter(s => s.type === type);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedType = null;\n }\n\n private applyTextSearch() {\n if (this.searchText != null) {\n this.filteredSends = this.searchService.searchSends(this.filteredSends, this.searchText);\n }\n }\n}\n","export class UpdateProfileRequest {\n name: string;\n masterPasswordHint: string;\n culture = 'en-US'; // deprecated\n\n constructor(name: string, masterPasswordHint: string) {\n this.name = name;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","import { EmailTokenRequest } from './emailTokenRequest';\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\n}\n","import { SendRequest } from './sendRequest';\n\nimport { Send } from '../domain/send';\n\nexport class SendWithIdRequest extends SendRequest {\n id: string;\n\n constructor(send: Send) {\n super(send);\n this.id = send.id;\n }\n}\n","import { PasswordRequest } from './passwordRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\n}\n","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessInviteRequest {\n email: string;\n type: EmergencyAccessType;\n waitTimeDays: number;\n}\n","export class EmergencyAccessPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","export { AttachmentData } from './attachmentData';\nexport { CardData } from './cardData';\nexport { CipherData } from './cipherData';\nexport { CollectionData } from './collectionData';\nexport { FieldData } from './fieldData';\nexport { FolderData } from './folderData';\nexport { IdentityData } from './identityData';\nexport { LoginData } from './loginData';\nexport { LoginUriData } from './loginUriData';\nexport { SecureNoteData } from './secureNoteData';\n","export { Attachment } from './attachment';\nexport { AuthResult } from './authResult';\nexport { Card } from './card';\nexport { Cipher } from './cipher';\nexport { EncString } from './encString';\nexport { Collection } from './collection';\nexport { EncryptedObject } from './encryptedObject';\nexport { EnvironmentUrls } from './environmentUrls';\nexport { Field } from './field';\nexport { Folder } from './folder';\nexport { Identity } from './identity';\nexport { Login } from './login';\nexport { LoginUri } from './loginUri';\nexport { GeneratedPasswordHistory } from './generatedPasswordHistory';\nexport { SecureNote } from './secureNote';\nexport { SymmetricCryptoKey } from './symmetricCryptoKey';\n","export class EmergencyAccessConfirmRequest {\n key: string;\n}\n","import { Directive, OnInit } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { GeneratedPasswordHistory } from 'jslib-common/models/domain/generatedPasswordHistory';\n\n@Directive()\nexport class PasswordGeneratorHistoryComponent implements OnInit {\n history: GeneratedPasswordHistory[] = [];\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n this.history = await this.passwordGenerationService.getHistory();\n }\n\n clear() {\n this.history = [];\n this.passwordGenerationService.clear();\n }\n\n copy(password: string) {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PasswordGeneratorPolicyOptions } from 'jslib-common/models/domain/passwordGeneratorPolicyOptions';\n\n@Directive()\nexport class PasswordGeneratorComponent implements OnInit {\n @Input() showSelect: boolean = false;\n @Output() onSelected = new EventEmitter();\n\n passTypeOptions: any[];\n options: any = {};\n password: string = '-';\n showOptions = false;\n avoidAmbiguous = false;\n enforcedPolicyOptions: PasswordGeneratorPolicyOptions;\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) {\n this.passTypeOptions = [\n { name: i18nService.t('password'), value: 'password' },\n { name: i18nService.t('passphrase'), value: 'passphrase' },\n ];\n }\n\n async ngOnInit() {\n const optionsResponse = await this.passwordGenerationService.getOptions();\n this.options = optionsResponse[0];\n this.enforcedPolicyOptions = optionsResponse[1];\n this.avoidAmbiguous = !this.options.ambiguous;\n this.options.type = this.options.type === 'passphrase' ? 'passphrase' : 'password';\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderChanged() {\n this.saveOptions(false);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderInput() {\n this.normalizeOptions();\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n }\n\n async saveOptions(regenerate: boolean = true) {\n this.normalizeOptions();\n await this.passwordGenerationService.saveOptions(this.options);\n\n if (regenerate) {\n await this.regenerate();\n }\n }\n\n async regenerate() {\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n copy() {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(this.password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n select() {\n this.onSelected.emit(this.password);\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n private normalizeOptions() {\n // Application level normalize options depedent on class variables\n this.options.ambiguous = !this.avoidAmbiguous;\n\n if (!this.options.uppercase && !this.options.lowercase && !this.options.number && !this.options.special) {\n this.options.lowercase = true;\n if (this.win != null) {\n const lowercase = this.win.document.querySelector('#lowercase') as HTMLInputElement;\n if (lowercase) {\n lowercase.checked = true;\n }\n }\n }\n\n this.passwordGenerationService.normalizeOptions(this.options, this.enforcedPolicyOptions);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\n@Directive()\nexport class FolderAddEditComponent implements OnInit {\n @Input() folderId: string;\n @Output() onSavedFolder = new EventEmitter();\n @Output() onDeletedFolder = new EventEmitter();\n\n editMode: boolean = false;\n folder: FolderView = new FolderView();\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(protected folderService: FolderService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit(): Promise {\n if (this.folder.name == null || this.folder.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n try {\n const folder = await this.folderService.encrypt(this.folder);\n this.formPromise = this.folderService.saveWithServer(folder);\n await this.formPromise;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedFolder' : 'addedFolder'));\n this.onSavedFolder.emit(this.folder);\n return true;\n } catch { }\n\n return false;\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteFolderConfirmation'), this.i18nService.t('deleteFolder'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.folderService.deleteWithServer(this.folder.id);\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedFolder'));\n this.onDeletedFolder.emit(this.folder);\n } catch { }\n\n return true;\n }\n\n protected async init() {\n this.editMode = this.folderId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editFolder');\n const folder = await this.folderService.get(this.folderId);\n this.folder = await folder.decrypt();\n } else {\n this.title = this.i18nService.t('addFolder');\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class ShareComponent implements OnInit {\n @Input() cipherId: string;\n @Input() organizationId: string;\n @Output() onSharedCipher = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n\n protected writeableCollections: CollectionView[] = [];\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected userService: UserService,\n protected cipherService: CipherService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.map(c => c).filter(c => !c.readOnly);\n const orgs = await this.userService.getAllOrganizations();\n this.organizations = orgs.sort(Utils.getSortFunction(this.i18nService, 'name'))\n .filter(o => o.enabled && o.status === OrganizationUserStatusType.Confirmed);\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n this.cipher = await cipherDomain.decrypt();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n filterCollections() {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit(): Promise {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n const cipherView = await cipherDomain.decrypt();\n const orgName = this.organizations.find(o => o.id === this.organizationId)?.name ?? this.i18nService.t('organization');\n\n try {\n this.formPromise = this.cipherService.shareWithServer(cipherView, this.organizationId,\n selectedCollectionIds).then(async () => {\n this.onSharedCipher.emit();\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('movedItemToOrg', cipherView.name, orgName));\n });\n await this.formPromise;\n return true;\n } catch { }\n return false;\n }\n\n get canSave() {\n if (this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n OnInit,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBoxRow]',\n})\nexport class BoxRowDirective implements OnInit {\n el: HTMLElement = null;\n formEls: Element[];\n\n constructor(private elRef: ElementRef) {\n this.el = elRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.formEls = Array.from(this.el.querySelectorAll('input:not([type=\"hidden\"]), select, textarea'));\n this.formEls.forEach(formEl => {\n formEl.addEventListener('focus', (event: Event) => {\n this.el.classList.add('active');\n }, false);\n\n formEl.addEventListener('blur', (event: Event) => {\n this.el.classList.remove('active');\n }, false);\n });\n }\n\n @HostListener('click', ['$event']) onClick(event: Event) {\n const target = event.target as HTMLElement;\n if (target !== this.el && !target.classList.contains('progress') &&\n !target.classList.contains('progress-bar')) {\n return;\n }\n\n if (this.formEls.length > 0) {\n const formEl = (this.formEls[0] as HTMLElement);\n if (formEl.tagName.toLowerCase() === 'input') {\n const inputEl = (formEl as HTMLInputElement);\n if (inputEl.type != null && inputEl.type.toLowerCase() === 'checkbox') {\n inputEl.click();\n return;\n }\n }\n formEl.focus();\n }\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Pipe({\n name: 'searchCiphers',\n})\nexport class SearchCiphersPipe implements PipeTransform {\n transform(ciphers: CipherView[], searchText: string, deleted: boolean = false): CipherView[] {\n if (ciphers == null || ciphers.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return ciphers.filter(c => {\n return deleted !== c.isDeleted;\n });\n }\n\n searchText = searchText.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (searchText.length >= 8 && c.id.startsWith(searchText)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n\n return false;\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n RouterModule,\n Routes,\n} from '@angular/router';\n\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { UpdateTempPasswordComponent } from './accounts/update-temp-password.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingsComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { VaultComponent } from './vault/vault.component';\n\nimport { OrganizationGuardService } from './services/organization-guard.service';\nimport { OrganizationTypeGuardService } from './services/organization-type-guard.service';\n\nimport { AuthGuardService } from 'jslib-angular/services/auth-guard.service';\nimport { LockGuardService } from 'jslib-angular/services/lock-guard.service';\nimport { UnauthGuardService } from 'jslib-angular/services/unauth-guard.service';\n\nimport { Permissions } from 'jslib-common/enums/permissions';\n\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: FrontendLayoutComponent,\n children: [\n { path: '', pathMatch: 'full', component: LoginComponent, canActivate: [UnauthGuardService] },\n { path: '2fa', component: TwoFactorComponent, canActivate: [UnauthGuardService] },\n {\n path: 'register', component: RegisterComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'createAccount' },\n },\n {\n path: 'sso', component: SsoComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'enterpriseSingleSignOn' },\n },\n {\n path: 'set-password', component: SetPasswordComponent,\n data: { titleId: 'setMasterPassword' },\n },\n {\n path: 'hint', component: HintComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'passwordHint' },\n },\n {\n path: 'lock',\n component: LockComponent,\n canActivate: [LockGuardService],\n },\n { path: 'verify-email', component: VerifyEmailTokenComponent },\n {\n path: 'accept-organization',\n component: AcceptOrganizationComponent,\n data: { titleId: 'joinOrganization' },\n },\n {\n path: 'accept-emergency',\n component: AcceptEmergencyComponent,\n data: { titleId: 'acceptEmergency' },\n },\n { path: 'recover', pathMatch: 'full', redirectTo: 'recover-2fa' },\n {\n path: 'recover-2fa',\n component: RecoverTwoFactorComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'recoverAccountTwoStep' },\n },\n {\n path: 'recover-delete',\n component: RecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'verify-recover-delete',\n component: VerifyRecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'send/:sendId/:key',\n component: AccessComponent,\n data: { title: 'Bitwarden Send' },\n },\n {\n path: 'update-temp-password',\n component: UpdateTempPasswordComponent,\n canActivate: [AuthGuardService],\n data: { titleId: 'updateTempPassword' },\n },\n ],\n },\n {\n path: '',\n component: UserLayoutComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: 'vault', component: VaultComponent, data: { titleId: 'myVault' } },\n { path: 'sends', component: SendComponent, data: { title: 'Send' } },\n {\n path: 'settings',\n component: SettingsComponent,\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: AccountComponent, data: { titleId: 'myAccount' } },\n { path: 'options', component: OptionsComponent, data: { titleId: 'options' } },\n { path: 'domain-rules', component: DomainRulesComponent, data: { titleId: 'domainRules' } },\n { path: 'two-factor', component: TwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n { path: 'premium', component: PremiumComponent, data: { titleId: 'goPremium' } },\n { path: 'billing', component: UserBillingComponent, data: { titleId: 'billing' } },\n {\n path: 'subscription',\n component: UserSubscriptionComponent,\n data: { titleId: 'premiumMembership' },\n },\n { path: 'organizations', component: OrganizationsComponent, data: { titleId: 'organizations' } },\n {\n path: 'create-organization',\n component: CreateOrganizationComponent,\n data: { titleId: 'newOrganization' },\n },\n {\n path: 'emergency-access',\n children: [\n {\n path: '',\n component: EmergencyAccessComponent,\n data: { titleId: 'emergencyAccess' },\n },\n {\n path: ':id',\n component: EmergencyAccessViewComponent,\n data: { titleId: 'emergencyAccess' },\n },\n ],\n },\n ],\n },\n {\n path: 'tools',\n component: ToolsComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'generator' },\n { path: 'import', component: ImportComponent, data: { titleId: 'importData' } },\n { path: 'export', component: ExportComponent, data: { titleId: 'exportVault' } },\n {\n path: 'generator',\n component: PasswordGeneratorComponent,\n data: { titleId: 'passwordGenerator' },\n },\n { path: 'breach-report', component: BreachReportComponent, data: { titleId: 'dataBreachReport' } },\n {\n path: 'reused-passwords-report',\n component: ReusedPasswordsReportComponent,\n data: { titleId: 'reusedPasswordsReport' },\n },\n {\n path: 'unsecured-websites-report',\n component: UnsecuredWebsitesReportComponent,\n data: { titleId: 'unsecuredWebsitesReport' },\n },\n {\n path: 'weak-passwords-report',\n component: WeakPasswordsReportComponent,\n data: { titleId: 'weakPasswordsReport' },\n },\n {\n path: 'exposed-passwords-report',\n component: ExposedPasswordsReportComponent,\n data: { titleId: 'exposedPasswordsReport' },\n },\n {\n path: 'inactive-two-factor-report',\n component: InactiveTwoFactorReportComponent,\n data: { titleId: 'inactive2faReport' },\n },\n ],\n },\n ],\n },\n {\n path: 'organizations/:organizationId',\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuardService, OrganizationGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'vault' },\n { path: 'vault', component: OrgVaultComponent, data: { titleId: 'vault' } },\n {\n path: 'tools',\n component: OrgToolsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.AccessImportExport, Permissions.AccessReports] },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'import',\n },\n {\n path: 'import',\n component: OrgImportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'importData',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'export',\n component: OrgExportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exportVault',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'exposed-passwords-report',\n component: OrgExposedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exposedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'inactive-two-factor-report',\n component: OrgInactiveTwoFactorReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'inactive2faReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'reused-passwords-report',\n component: OrgReusedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'reusedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'unsecured-websites-report',\n component: OrgUnsecuredWebsitesReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'unsecuredWebsitesReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'weak-passwords-report',\n component: OrgWeakPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'weakPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n ],\n },\n {\n path: 'manage',\n component: OrgManageComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n permissions: [\n Permissions.ManageAssignedCollections,\n Permissions.ManageAllCollections,\n Permissions.AccessEventLogs,\n Permissions.ManageGroups,\n Permissions.ManageUsers,\n Permissions.ManagePolicies,\n ],\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'people',\n },\n {\n path: 'collections',\n component: OrgManageCollectionsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'collections',\n permissions: [Permissions.ManageAssignedCollections, Permissions.ManageAllCollections],\n },\n },\n {\n path: 'events',\n component: OrgEventsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'eventLogs',\n permissions: [Permissions.AccessEventLogs],\n },\n },\n {\n path: 'groups',\n component: OrgGroupsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'groups',\n permissions: [Permissions.ManageGroups],\n },\n },\n {\n path: 'people',\n component: OrgPeopleComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'people',\n permissions: [Permissions.ManageUsers, Permissions.ManageUsersPassword],\n },\n },\n {\n path: 'policies',\n component: OrgPoliciesComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'policies',\n permissions: [Permissions.ManagePolicies],\n },\n },\n ],\n },\n {\n path: 'settings',\n component: OrgSettingsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.ManageOrganization] },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: OrgAccountComponent, data: { titleId: 'myOrganization' } },\n { path: 'two-factor', component: OrgTwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n {\n path: 'billing',\n component: OrganizationBillingComponent,\n data: { titleId: 'billing' },\n },\n {\n path: 'subscription',\n component: OrganizationSubscriptionComponent,\n data: { titleId: 'subscription' },\n },\n ],\n },\n ],\n },\n { path: '**', redirectTo: '' },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {\n useHash: true,\n paramsInheritanceStrategy: 'always',\n /*enableTracing: true,*/\n })],\n exports: [RouterModule],\n})\nexport class OssRoutingModule { }\n","import {\n APP_INITIALIZER,\n LOCALE_ID,\n NgModule,\n} from '@angular/core';\n\nimport { ToasterModule } from 'angular2-toaster';\n\nimport { BroadcasterMessagingService } from '../../services/broadcasterMessaging.service';\nimport { HtmlStorageService } from '../../services/htmlStorage.service';\nimport { I18nService } from '../../services/i18n.service';\nimport { MemoryStorageService } from '../../services/memoryStorage.service';\nimport { PasswordRepromptService } from '../../services/passwordReprompt.service';\nimport { WebPlatformUtilsService } from '../../services/webPlatformUtils.service';\n\nimport { EventService } from './event.service';\nimport { OrganizationGuardService } from './organization-guard.service';\nimport { OrganizationTypeGuardService } from './organization-type-guard.service';\nimport { PolicyListService } from './policy-list.service';\nimport { RouterService } from './router.service';\n\nimport { AuthGuardService } from 'jslib-angular/services/auth-guard.service';\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { LockGuardService } from 'jslib-angular/services/lock-guard.service';\nimport { ModalService as ModalServiceAbstraction } from 'jslib-angular/services/modal.service';\nimport { UnauthGuardService } from 'jslib-angular/services/unauth-guard.service';\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ApiService } from 'jslib-common/services/api.service';\nimport { AppIdService } from 'jslib-common/services/appId.service';\nimport { AuditService } from 'jslib-common/services/audit.service';\nimport { AuthService } from 'jslib-common/services/auth.service';\nimport { CipherService } from 'jslib-common/services/cipher.service';\nimport { CollectionService } from 'jslib-common/services/collection.service';\nimport { ConsoleLogService } from 'jslib-common/services/consoleLog.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\nimport { ContainerService } from 'jslib-common/services/container.service';\nimport { CryptoService } from 'jslib-common/services/crypto.service';\nimport { EnvironmentService } from 'jslib-common/services/environment.service';\nimport { EventService as EventLoggingService } from 'jslib-common/services/event.service';\nimport { ExportService } from 'jslib-common/services/export.service';\nimport { FileUploadService } from 'jslib-common/services/fileUpload.service';\nimport { FolderService } from 'jslib-common/services/folder.service';\nimport { ImportService } from 'jslib-common/services/import.service';\nimport { NotificationsService } from 'jslib-common/services/notifications.service';\nimport { PasswordGenerationService } from 'jslib-common/services/passwordGeneration.service';\nimport { PolicyService } from 'jslib-common/services/policy.service';\nimport { SearchService } from 'jslib-common/services/search.service';\nimport { SendService } from 'jslib-common/services/send.service';\nimport { SettingsService } from 'jslib-common/services/settings.service';\nimport { StateService } from 'jslib-common/services/state.service';\nimport { SyncService } from 'jslib-common/services/sync.service';\nimport { TokenService } from 'jslib-common/services/token.service';\nimport { TotpService } from 'jslib-common/services/totp.service';\nimport { UserService } from 'jslib-common/services/user.service';\nimport { VaultTimeoutService } from 'jslib-common/services/vaultTimeout.service';\nimport { WebCryptoFunctionService } from 'jslib-common/services/webCryptoFunction.service';\n\nimport { ApiService as ApiServiceAbstraction } from 'jslib-common/abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from 'jslib-common/abstractions/audit.service';\nimport { AuthService as AuthServiceAbstraction } from 'jslib-common/abstractions/auth.service';\nimport { CipherService as CipherServiceAbstraction } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService as CollectionServiceAbstraction } from 'jslib-common/abstractions/collection.service';\nimport { CryptoService as CryptoServiceAbstraction } from 'jslib-common/abstractions/crypto.service';\nimport { CryptoFunctionService as CryptoFunctionServiceAbstraction } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction, Urls } from 'jslib-common/abstractions/environment.service';\nimport { EventService as EventLoggingServiceAbstraction } from 'jslib-common/abstractions/event.service';\nimport { ExportService as ExportServiceAbstraction } from 'jslib-common/abstractions/export.service';\nimport { FileUploadService as FileUploadServiceAbstraction } from 'jslib-common/abstractions/fileUpload.service';\nimport { FolderService as FolderServiceAbstraction } from 'jslib-common/abstractions/folder.service';\nimport { I18nService as I18nServiceAbstraction } from 'jslib-common/abstractions/i18n.service';\nimport { ImportService as ImportServiceAbstraction } from 'jslib-common/abstractions/import.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService as MessagingServiceAbstraction } from 'jslib-common/abstractions/messaging.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from 'jslib-common/abstractions/notifications.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService as PolicyServiceAbstraction } from 'jslib-common/abstractions/policy.service';\nimport { SearchService as SearchServiceAbstraction } from 'jslib-common/abstractions/search.service';\nimport { SendService as SendServiceAbstraction } from 'jslib-common/abstractions/send.service';\nimport { SettingsService as SettingsServiceAbstraction } from 'jslib-common/abstractions/settings.service';\nimport { StateService as StateServiceAbstraction } from 'jslib-common/abstractions/state.service';\nimport { StorageService as StorageServiceAbstraction } from 'jslib-common/abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from 'jslib-common/abstractions/sync.service';\nimport { TokenService as TokenServiceAbstraction } from 'jslib-common/abstractions/token.service';\nimport { TotpService as TotpServiceAbstraction } from 'jslib-common/abstractions/totp.service';\nimport { UserService as UserServiceAbstraction } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from 'jslib-common/abstractions/vaultTimeout.service';\nimport { ModalService } from './modal.service';\n\nconst i18nService = new I18nService(window.navigator.language, 'locales');\nconst stateService = new StateService();\nconst broadcasterService = new BroadcasterService();\nconst messagingService = new BroadcasterMessagingService(broadcasterService);\nconst consoleLogService = new ConsoleLogService(false);\nconst platformUtilsService = new WebPlatformUtilsService(i18nService, messagingService, consoleLogService);\nconst storageService: StorageServiceAbstraction = new HtmlStorageService(platformUtilsService);\nconst secureStorageService: StorageServiceAbstraction = new MemoryStorageService();\nconst cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window,\n platformUtilsService);\nconst cryptoService = new CryptoService(storageService,\n platformUtilsService.isDev() ? storageService : secureStorageService, cryptoFunctionService, platformUtilsService,\n consoleLogService);\nconst tokenService = new TokenService(storageService);\nconst appIdService = new AppIdService(storageService);\nconst environmentService = new EnvironmentService(storageService);\nconst apiService = new ApiService(tokenService, platformUtilsService, environmentService,\n async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst userService = new UserService(tokenService, storageService);\nconst settingsService = new SettingsService(userService, storageService);\nexport let searchService: SearchService = null;\nconst fileUploadService = new FileUploadService(consoleLogService, apiService);\nconst cipherService = new CipherService(cryptoService, userService, settingsService,\n apiService, fileUploadService, storageService, i18nService, () => searchService);\nconst folderService = new FolderService(cryptoService, userService, apiService, storageService,\n i18nService, cipherService);\nconst collectionService = new CollectionService(cryptoService, userService, storageService, i18nService);\nsearchService = new SearchService(cipherService, consoleLogService, i18nService);\nconst policyService = new PolicyService(userService, storageService);\nconst sendService = new SendService(cryptoService, userService, apiService, fileUploadService, storageService,\n i18nService, cryptoFunctionService);\nconst vaultTimeoutService = new VaultTimeoutService(cipherService, folderService, collectionService,\n cryptoService, platformUtilsService, storageService, messagingService, searchService, userService, tokenService,\n null, async () => messagingService.send('logout', { expired: false }));\nconst syncService = new SyncService(userService, apiService, settingsService,\n folderService, cipherService, cryptoService, collectionService, storageService, messagingService, policyService,\n sendService, async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst passwordGenerationService = new PasswordGenerationService(cryptoService, storageService, policyService);\nconst totpService = new TotpService(storageService, cryptoFunctionService);\nconst containerService = new ContainerService(cryptoService);\nconst authService = new AuthService(cryptoService, apiService,\n userService, tokenService, appIdService, i18nService, platformUtilsService, messagingService, vaultTimeoutService,\n consoleLogService);\nconst exportService = new ExportService(folderService, cipherService, apiService, cryptoService);\nconst importService = new ImportService(cipherService, folderService, apiService, i18nService, collectionService,\n platformUtilsService, cryptoService);\nconst notificationsService = new NotificationsService(userService, syncService, appIdService, apiService, vaultTimeoutService,\n environmentService, async () => messagingService.send('logout', { expired: true }), consoleLogService);\nconst auditService = new AuditService(cryptoFunctionService, apiService);\nconst eventLoggingService = new EventLoggingService(storageService, apiService, userService, cipherService);\n\ncontainerService.attachToWindow(window);\n\nexport function initFactory(): Function {\n function getBaseUrl() {\n // If the base URL is `https://bitwarden.example.com/base/path/`,\n // `window.location.href` should have one of the following forms:\n //\n // - `https://bitwarden.example.com/base/path/`\n // - `https://bitwarden.example.com/base/path/#/some/route[?queryParam=...]`\n //\n // We want to get to just `https://bitwarden.example.com/base/path`.\n let baseUrl = window.location.href;\n baseUrl = baseUrl.replace(/#.*/, ''); // Strip off `#` and everything after.\n baseUrl = baseUrl.replace(/\\/+$/, ''); // Trim any trailing `/` chars.\n return baseUrl;\n }\n return async () => {\n await (storageService as HtmlStorageService).init();\n\n environmentService.setUrls({ base: getBaseUrl() }, false);\n\n setTimeout(() => notificationsService.init(), 3000);\n\n vaultTimeoutService.init(true);\n const locale = await storageService.get(ConstantsService.localeKey);\n await i18nService.init(locale);\n eventLoggingService.init(true);\n authService.init();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.add('locale_' + i18nService.translationLocale);\n let theme = await storageService.get(ConstantsService.themeKey);\n if (theme == null) {\n theme = 'light';\n }\n htmlEl.classList.add('theme_' + theme);\n stateService.save(ConstantsService.disableFaviconKey,\n await storageService.get(ConstantsService.disableFaviconKey));\n stateService.save('enableGravatars', await storageService.get('enableGravatars'));\n };\n}\n\n@NgModule({\n imports: [\n ToasterModule,\n ],\n declarations: [],\n providers: [\n ValidationService,\n AuthGuardService,\n OrganizationGuardService,\n OrganizationTypeGuardService,\n UnauthGuardService,\n RouterService,\n EventService,\n LockGuardService,\n PolicyListService,\n { provide: ModalServiceAbstraction, useClass: ModalService },\n { provide: AuditServiceAbstraction, useValue: auditService },\n { provide: AuthServiceAbstraction, useValue: authService },\n { provide: CipherServiceAbstraction, useValue: cipherService },\n { provide: FolderServiceAbstraction, useValue: folderService },\n { provide: LogService, useValue: consoleLogService },\n { provide: CollectionServiceAbstraction, useValue: collectionService },\n { provide: EnvironmentServiceAbstraction, useValue: environmentService },\n { provide: TotpServiceAbstraction, useValue: totpService },\n { provide: TokenServiceAbstraction, useValue: tokenService },\n { provide: I18nServiceAbstraction, useValue: i18nService },\n { provide: CryptoServiceAbstraction, useValue: cryptoService },\n { provide: PlatformUtilsServiceAbstraction, useValue: platformUtilsService },\n { provide: PasswordGenerationServiceAbstraction, useValue: passwordGenerationService },\n { provide: ApiServiceAbstraction, useValue: apiService },\n { provide: FileUploadServiceAbstraction, useValue: fileUploadService },\n { provide: SyncServiceAbstraction, useValue: syncService },\n { provide: UserServiceAbstraction, useValue: userService },\n { provide: MessagingServiceAbstraction, useValue: messagingService },\n { provide: BroadcasterService, useValue: broadcasterService },\n { provide: SettingsServiceAbstraction, useValue: settingsService },\n { provide: VaultTimeoutServiceAbstraction, useValue: vaultTimeoutService },\n { provide: StorageServiceAbstraction, useValue: storageService },\n { provide: StateServiceAbstraction, useValue: stateService },\n { provide: ExportServiceAbstraction, useValue: exportService },\n { provide: SearchServiceAbstraction, useValue: searchService },\n { provide: ImportServiceAbstraction, useValue: importService },\n { provide: NotificationsServiceAbstraction, useValue: notificationsService },\n { provide: CryptoFunctionServiceAbstraction, useValue: cryptoFunctionService },\n { provide: EventLoggingServiceAbstraction, useValue: eventLoggingService },\n { provide: PolicyServiceAbstraction, useValue: policyService },\n { provide: SendServiceAbstraction, useValue: sendService },\n { provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService },\n { provide: LogService, useValue: consoleLogService },\n {\n provide: APP_INITIALIZER,\n useFactory: initFactory,\n deps: [],\n multi: true,\n },\n {\n provide: LOCALE_ID,\n useFactory: () => i18nService.translationLocale,\n deps: [],\n },\n ],\n})\nexport class ServicesModule {\n}\n","import { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nexport class BroadcasterMessagingService implements MessagingService {\n constructor(private broadcasterService: BroadcasterService) { }\n\n send(subscriber: string, arg: any = {}) {\n const message = Object.assign({}, { command: subscriber }, arg);\n this.broadcasterService.send(message);\n }\n}\n","import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { ConstantsService } from 'jslib-common/services';\n\nexport class HtmlStorageService implements StorageService {\n private localStorageKeys = new Set(['appId', 'anonymousAppId', 'rememberedEmail', 'passwordGenerationOptions',\n ConstantsService.disableFaviconKey, 'rememberEmail', 'enableGravatars', 'enableFullWidth',\n ConstantsService.localeKey, ConstantsService.autoConfirmFingerprints,\n ConstantsService.vaultTimeoutKey, ConstantsService.vaultTimeoutActionKey, ConstantsService.ssoCodeVerifierKey,\n ConstantsService.ssoStateKey, 'ssoOrgIdentifier']);\n private localStorageStartsWithKeys = ['twoFactorToken_', ConstantsService.collapsedGroupingsKey + '_'];\n private memoryStorageStartsWithKeys = ['ciphers_', 'folders_', 'collections_', 'settings_', 'lastSync_'];\n private memoryStorage = new Map();\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async init() {\n // LockOption -> VaultTimeout (uses the same legacy string value for backwards compat)\n const vaultTimeout = await this.get(ConstantsService.vaultTimeoutKey);\n if (vaultTimeout == null && !this.platformUtilsService.isDev()) {\n await this.save(ConstantsService.vaultTimeoutKey, 15);\n }\n\n // Default Action to lock\n const vaultTimeoutAction = await this.get(ConstantsService.vaultTimeoutActionKey);\n if (vaultTimeoutAction == null) {\n await this.save(ConstantsService.vaultTimeoutActionKey, 'lock');\n }\n }\n\n get(key: string): Promise {\n let json: string = null;\n if (this.isLocalStorage(key)) {\n json = window.localStorage.getItem(key);\n } else if (this.isMemoryStorage(key)) {\n json = this.memoryStorage.get(key);\n } else {\n json = window.sessionStorage.getItem(key);\n }\n if (json != null) {\n const obj = JSON.parse(json);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return await this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n\n if (obj instanceof Set) {\n obj = Array.from(obj);\n }\n\n const json = JSON.stringify(obj);\n if (this.isLocalStorage(key)) {\n window.localStorage.setItem(key, json);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.set(key, json);\n } else {\n window.sessionStorage.setItem(key, json);\n }\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n if (this.isLocalStorage(key)) {\n window.localStorage.removeItem(key);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.delete(key);\n } else {\n window.sessionStorage.removeItem(key);\n }\n return Promise.resolve();\n }\n\n private isLocalStorage(key: string): boolean {\n if (this.localStorageKeys.has(key)) {\n return true;\n }\n for (const swKey of this.localStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n\n private isMemoryStorage(key: string): boolean {\n for (const swKey of this.memoryStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n}\n","export { ApiService } from './api.service';\nexport { AppIdService } from './appId.service';\nexport { AuditService } from './audit.service';\nexport { AuthService } from './auth.service';\nexport { CipherService } from './cipher.service';\nexport { CollectionService } from './collection.service';\nexport { ConstantsService } from './constants.service';\nexport { ContainerService } from './container.service';\nexport { CryptoService } from './crypto.service';\nexport { EnvironmentService } from './environment.service';\nexport { FolderService } from './folder.service';\nexport { I18nService } from './i18n.service';\nexport { PasswordGenerationService } from './passwordGeneration.service';\nexport { SettingsService } from './settings.service';\nexport { StateService } from './state.service';\nexport { SyncService } from './sync.service';\nexport { TokenService } from './token.service';\nexport { TotpService } from './totp.service';\nexport { UserService } from './user.service';\nexport { VaultTimeoutService } from './vaultTimeout.service';\n","import { BaseResponse } from './baseResponse';\n\nexport class ApiKeyResponse extends BaseResponse {\n apiKey: string;\n\n constructor(response: any) {\n super(response);\n this.apiKey = this.getResponseProperty('ApiKey');\n }\n}\n","import { FileUploadType } from '../../enums/fileUploadType';\nimport { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\n\nexport class AttachmentUploadDataResponse extends BaseResponse {\n attachmentId: string;\n fileUploadType: FileUploadType;\n cipherResponse: CipherResponse;\n cipherMiniResponse: CipherResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.attachmentId = this.getResponseProperty('AttachmentId');\n this.fileUploadType = this.getResponseProperty('FileUploadType');\n const cipherResponse = this.getResponseProperty('CipherResponse');\n const cipherMiniResponse = this.getResponseProperty('CipherMiniResponse');\n this.cipherResponse = cipherResponse == null ? null : new CipherResponse(cipherResponse);\n this.cipherMiniResponse = cipherMiniResponse == null ? null : new CipherResponse(cipherMiniResponse);\n this.url = this.getResponseProperty('Url');\n }\n\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { TransactionType } from '../../enums/transactionType';\n\nexport class BillingResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty('Balance');\n const paymentSource = this.getResponseProperty('PaymentSource');\n const transactions = this.getResponseProperty('Transactions');\n const invoices = this.getResponseProperty('Invoices');\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n}\n\nexport class BillingSourceResponse extends BaseResponse {\n type: PaymentMethodType;\n cardBrand: string;\n description: string;\n needsVerification: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.cardBrand = this.getResponseProperty('CardBrand');\n this.description = this.getResponseProperty('Description');\n this.needsVerification = this.getResponseProperty('NeedsVerification');\n }\n}\n\nexport class BillingInvoiceResponse extends BaseResponse {\n url: string;\n pdfUrl: string;\n number: string;\n paid: boolean;\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.url = this.getResponseProperty('Url');\n this.pdfUrl = this.getResponseProperty('PdfUrl');\n this.number = this.getResponseProperty('Number');\n this.paid = this.getResponseProperty('Paid');\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n\nexport class BillingTransactionResponse extends BaseResponse {\n createdDate: string;\n amount: number;\n refunded: boolean;\n partiallyRefunded: boolean;\n refundedAmount: number;\n type: TransactionType;\n paymentMethodType: PaymentMethodType;\n details: string;\n\n constructor(response: any) {\n super(response);\n this.createdDate = this.getResponseProperty('CreatedDate');\n this.amount = this.getResponseProperty('Amount');\n this.refunded = this.getResponseProperty('Refunded');\n this.partiallyRefunded = this.getResponseProperty('PartiallyRefunded');\n this.refundedAmount = this.getResponseProperty('RefundedAmount');\n this.type = this.getResponseProperty('Type');\n this.paymentMethodType = this.getResponseProperty('PaymentMethodType');\n this.details = this.getResponseProperty('Details');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class BreachAccountResponse extends BaseResponse {\n addedDate: string;\n breachDate: string;\n dataClasses: string[];\n description: string;\n domain: string;\n isActive: boolean;\n isVerified: boolean;\n logoPath: string;\n modifiedDate: string;\n name: string;\n pwnCount: number;\n title: string;\n\n constructor(response: any) {\n super(response);\n this.addedDate = this.getResponseProperty('AddedDate');\n this.breachDate = this.getResponseProperty('BreachDate');\n this.dataClasses = this.getResponseProperty('DataClasses');\n this.description = this.getResponseProperty('Description');\n this.domain = this.getResponseProperty('Domain');\n this.isActive = this.getResponseProperty('IsActive');\n this.isVerified = this.getResponseProperty('IsVerified');\n this.logoPath = this.getResponseProperty('LogoPath');\n this.modifiedDate = this.getResponseProperty('ModifiedDate');\n this.name = this.getResponseProperty('Name');\n this.pwnCount = this.getResponseProperty('PwnCount');\n this.title = this.getResponseProperty('Title');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { DeviceType } from '../../enums/deviceType';\nimport { EventType } from '../../enums/eventType';\n\nexport class EventResponse extends BaseResponse {\n type: EventType;\n userId: string;\n organizationId: string;\n providerId: string;\n cipherId: string;\n collectionId: string;\n groupId: string;\n policyId: string;\n organizationUserId: string;\n providerUserId: string;\n providerOrganizationId: string;\n actingUserId: string;\n date: string;\n deviceType: DeviceType;\n ipAddress: string;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.providerId = this.getResponseProperty('ProviderId');\n this.cipherId = this.getResponseProperty('CipherId');\n this.collectionId = this.getResponseProperty('CollectionId');\n this.groupId = this.getResponseProperty('GroupId');\n this.policyId = this.getResponseProperty('PolicyId');\n this.organizationUserId = this.getResponseProperty('OrganizationUserId');\n this.providerUserId = this.getResponseProperty('ProviderUserId');\n this.providerOrganizationId = this.getResponseProperty('ProviderOrganizationId');\n this.actingUserId = this.getResponseProperty('ActingUserId');\n this.date = this.getResponseProperty('Date');\n this.deviceType = this.getResponseProperty('DeviceType');\n this.ipAddress = this.getResponseProperty('IpAddress');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class GroupResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n accessAll: boolean;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.accessAll = this.getResponseProperty('AccessAll');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class GroupDetailsResponse extends GroupResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationAutoEnrollStatusResponse extends BaseResponse {\n id: string;\n resetPasswordEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.resetPasswordEnabled = this.getResponseProperty('ResetPasswordEnabled');\n }\n}\n","import { KeysResponse } from './keysResponse';\n\nexport class OrganizationKeysResponse extends KeysResponse {\n constructor(response: any) {\n super(response);\n }\n}\n","import { OrganizationResponse } from './organizationResponse';\nimport {\n BillingSubscriptionResponse,\n BillingSubscriptionUpcomingInvoiceResponse,\n} from './subscriptionResponse';\n\nexport class OrganizationSubscriptionResponse extends OrganizationResponse {\n storageName: string;\n storageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n expiration: string;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n const subscription = this.getResponseProperty('Subscription');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n this.expiration = this.getResponseProperty('Expiration');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.error = this.getResponseProperty('Error');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nimport { PermissionsApi } from '../api/permissionsApi';\n\nimport { KdfType } from '../../enums/kdfType';\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.permissions = new PermissionsApi(this.getResponseProperty('Permissions'));\n this.accessAll = this.getResponseProperty('AccessAll');\n this.resetPasswordEnrolled = this.getResponseProperty('ResetPasswordEnrolled');\n }\n}\n\nexport class OrganizationUserUserDetailsResponse extends OrganizationUserResponse {\n name: string;\n email: string;\n twoFactorEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n }\n}\n\nexport class OrganizationUserDetailsResponse extends OrganizationUserResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n\nexport class OrganizationUserResetPasswordDetailsReponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n resetPasswordKey: string;\n encryptedPrivateKey: string;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n this.resetPasswordKey = this.getResponseProperty('ResetPasswordKey');\n this.encryptedPrivateKey = this.getResponseProperty('EncryptedPrivateKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileResponse } from './profileResponse';\n\nexport class PaymentResponse extends BaseResponse {\n userProfile: ProfileResponse;\n paymentIntentClientSecret: string;\n success: boolean;\n\n constructor(response: any) {\n super(response);\n const userProfile = this.getResponseProperty('UserProfile');\n if (userProfile != null) {\n this.userProfile = new ProfileResponse(userProfile);\n }\n this.paymentIntentClientSecret = this.getResponseProperty('PaymentIntentClientSecret');\n this.success = this.getResponseProperty('Success');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class PreloginResponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from '../baseResponse';\n\nexport class ProviderOrganizationResponse extends BaseResponse {\n id: string;\n providerId: string;\n organizationId: string;\n key: string;\n settings: string;\n creationDate: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.providerId = this.getResponseProperty('ProviderId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.key = this.getResponseProperty('Key');\n this.settings = this.getResponseProperty('Settings');\n this.creationDate = this.getResponseProperty('CreationDate');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n }\n}\n\nexport class ProviderOrganizationOrganizationDetailsResponse extends ProviderOrganizationResponse {\n organizationName: string;\n\n constructor(response: any) {\n super(response);\n this.organizationName = this.getResponseProperty('OrganizationName');\n }\n}\n","import { BaseResponse } from '../baseResponse';\n\nexport class ProviderResponse extends BaseResponse {\n id: string;\n name: string;\n businessName: string;\n billingEmail: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.businessName = this.getResponseProperty('BusinessName');\n this.billingEmail = this.getResponseProperty('BillingEmail');\n }\n}\n","import { OrganizationUserBulkPublicKeyResponse } from '../organizationUserBulkPublicKeyResponse';\n\nexport class ProviderUserBulkPublicKeyResponse extends OrganizationUserBulkPublicKeyResponse {\n\n}\n","import { BaseResponse } from '../baseResponse';\n\nexport class ProviderUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.error = this.getResponseProperty('Error');\n }\n}\n","import { BaseResponse } from '../baseResponse';\n\nimport { PermissionsApi } from '../../api/permissionsApi';\n\nimport { ProviderUserStatusType } from '../../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../../enums/providerUserType';\n\nexport class ProviderUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: ProviderUserType;\n status: ProviderUserStatusType;\n permissions: PermissionsApi;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.permissions = new PermissionsApi(this.getResponseProperty('Permissions'));\n }\n}\n\nexport class ProviderUserUserDetailsResponse extends ProviderUserResponse {\n name: string;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendAccessResponse extends BaseResponse {\n id: string;\n type: SendType;\n name: string;\n file: SendFileApi;\n text: SendTextApi;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.creatorIdentifier = this.getResponseProperty('CreatorIdentifier');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SendFileDownloadDataResponse extends BaseResponse {\n\n id: string = null;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n }\n}\n","import { FileUploadType } from '../../enums/fileUploadType';\n\nimport { BaseResponse } from './baseResponse';\nimport { SendResponse } from './sendResponse';\n\nexport class SendFileUploadDataResponse extends BaseResponse {\n\n fileUploadType: FileUploadType;\n sendResponse: SendResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.fileUploadType = this.getResponseProperty('FileUploadType');\n const sendResponse = this.getResponseProperty('SendResponse');\n this.sendResponse = sendResponse == null ? null : new SendResponse(sendResponse);\n this.url = this.getResponseProperty('Url');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxInfoResponse extends BaseResponse {\n taxId: string;\n taxIdType: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n\n constructor(response: any) {\n super(response);\n this.taxId = this.getResponseProperty('TaxIdNumber');\n this.taxIdType = this.getResponseProperty('TaxIdType');\n this.line1 = this.getResponseProperty('Line1');\n this.line2 = this.getResponseProperty('Line2');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxRateResponse extends BaseResponse {\n id: string;\n country: string;\n state: string;\n postalCode: string;\n rate: number;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.country = this.getResponseProperty('Country');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.rate = this.getResponseProperty('Rate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorAuthenticatorResponse extends BaseResponse {\n enabled: boolean;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorDuoResponse extends BaseResponse {\n enabled: boolean;\n host: string;\n secretKey: string;\n integrationKey: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.host = this.getResponseProperty('Host');\n this.secretKey = this.getResponseProperty('SecretKey');\n this.integrationKey = this.getResponseProperty('IntegrationKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorEmailResponse extends BaseResponse {\n enabled: boolean;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.email = this.getResponseProperty('Email');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderResponse extends BaseResponse {\n enabled: boolean;\n type: TwoFactorProviderType;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.type = this.getResponseProperty('Type');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorRecoverResponse extends BaseResponse {\n code: string;\n\n constructor(response: any) {\n super(response);\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorYubiKeyResponse extends BaseResponse {\n enabled: boolean;\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key1 = this.getResponseProperty('Key1');\n this.key2 = this.getResponseProperty('Key2');\n this.key3 = this.getResponseProperty('Key3');\n this.key4 = this.getResponseProperty('Key4');\n this.key5 = this.getResponseProperty('Key5');\n this.nfc = this.getResponseProperty('Nfc');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class UserKeyResponse extends BaseResponse {\n userId: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class IdentityCaptchaResponse extends BaseResponse {\n siteKey: string;\n\n constructor(response: any) {\n super(response);\n this.siteKey = this.getResponseProperty('HCaptcha_SiteKey');\n }\n}\n","/**\n * Use as a Decorator on async functions, it will limit how many times the function can be\n * in-flight at a time.\n *\n * Calls beyond the limit will be queued, and run when one of the active calls finishes\n */\nexport function throttle(limit: number, throttleKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise>) => {\n const originalMethod: () => Promise = descriptor.value;\n const allThrottles = new Map void)[]>>();\n\n const getThrottles = (obj: any) => {\n let throttles = allThrottles.get(obj);\n if (throttles != null) {\n return throttles;\n }\n throttles = new Map void)[]>();\n allThrottles.set(obj, throttles);\n return throttles;\n };\n\n return {\n value: function(...args: any[]) {\n const throttles = getThrottles(this);\n const argsThrottleKey = throttleKey(args);\n let queue = throttles.get(argsThrottleKey);\n if (queue == null) {\n queue = [];\n throttles.set(argsThrottleKey, queue);\n }\n\n return new Promise((resolve, reject) => {\n const exec = () => {\n const onFinally = () => {\n queue.splice(queue.indexOf(exec), 1);\n if (queue.length >= limit) {\n queue[limit - 1]();\n } else if (queue.length === 0) {\n throttles.delete(argsThrottleKey);\n if (throttles.size === 0) {\n allThrottles.delete(this);\n }\n }\n };\n originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n }).then(resolve, reject);\n };\n queue.push(exec);\n if (queue.length <= limit) {\n exec();\n }\n });\n },\n };\n };\n}\n","export class CipherBulkMoveRequest {\n ids: string[];\n folderId: string;\n\n constructor(ids: string[], folderId: string) {\n this.ids = ids == null ? [] : ids;\n this.folderId = folderId;\n }\n}\n","export class CipherBulkRestoreRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherBulkShareRequest {\n ciphers: CipherWithIdRequest[];\n collectionIds: string[];\n\n constructor(ciphers: Cipher[], collectionIds: string[]) {\n if (ciphers != null) {\n this.ciphers = [];\n ciphers.forEach(c => {\n this.ciphers.push(new CipherWithIdRequest(c));\n });\n }\n this.collectionIds = collectionIds;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherShareRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { CipherView } from '../view';\n\nconst CacheTTL = 3000;\n\nexport class SortedCiphersCache {\n private readonly sortedCiphersByUrl: Map = new Map();\n private readonly timeouts: Map = new Map();\n\n constructor(private readonly comparator: (a: CipherView, b: CipherView) => number) { }\n\n isCached(url: string) {\n return this.sortedCiphersByUrl.has(url);\n }\n\n addCiphers(url: string, ciphers: CipherView[]) {\n ciphers.sort(this.comparator);\n this.sortedCiphersByUrl.set(url, new Ciphers(ciphers));\n this.resetTimer(url);\n }\n\n getLastUsed(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastUsed() : null;\n }\n\n getLastLaunched(url: string) {\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastLaunched() : null;\n }\n\n getNext(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getNext() : null;\n }\n\n updateLastUsedIndex(url: string) {\n if (this.isCached(url)) {\n this.sortedCiphersByUrl.get(url).updateLastUsedIndex();\n }\n }\n\n clear() {\n this.sortedCiphersByUrl.clear();\n this.timeouts.clear();\n }\n\n private resetTimer(url: string) {\n clearTimeout(this.timeouts.get(url));\n this.timeouts.set(url, setTimeout(() => {\n this.sortedCiphersByUrl.delete(url);\n this.timeouts.delete(url);\n }, CacheTTL));\n }\n}\n\nclass Ciphers {\n lastUsedIndex = -1;\n\n constructor(private readonly ciphers: CipherView[]) { }\n\n getLastUsed() {\n this.lastUsedIndex = Math.max(this.lastUsedIndex, 0);\n return this.ciphers[this.lastUsedIndex];\n }\n\n getLastLaunched() {\n const usedCiphers = this.ciphers.filter(cipher => cipher.localData?.lastLaunched);\n const sortedCiphers = usedCiphers.sort((x, y) => y.localData.lastLaunched.valueOf() - x.localData.lastLaunched.valueOf());\n return sortedCiphers[0];\n }\n\n getNextIndex() {\n return (this.lastUsedIndex + 1) % this.ciphers.length;\n }\n\n getNext() {\n return this.ciphers[this.getNextIndex()];\n }\n\n updateLastUsedIndex() {\n this.lastUsedIndex = this.getNextIndex();\n }\n}\n","export class TreeNode {\n parent: T;\n node: T;\n children: TreeNode[] = [];\n\n constructor(node: T, name: string, parent: T) {\n this.parent = parent;\n this.node = node;\n this.node.name = name;\n }\n}\n\nexport interface ITreeNodeObject {\n id: string;\n name: string;\n}\n","export class EncArrayBuffer {\n constructor(public buffer: ArrayBuffer) { }\n}\n","import Domain from './domainBase';\n\nexport class PasswordGeneratorPolicyOptions extends Domain {\n defaultType: string = '';\n minLength: number = 0;\n useUppercase: boolean = false;\n useLowercase: boolean = false;\n useNumbers: boolean = false;\n numberCount: number = 0;\n useSpecial: boolean = false;\n specialCount: number = 0;\n minNumberWords: number = 0;\n capitalize: boolean = false;\n includeNumber: boolean = false;\n\n inEffect() {\n return this.defaultType !== '' ||\n this.minLength > 0 ||\n this.numberCount > 0 ||\n this.specialCount > 0 ||\n this.useUppercase ||\n this.useLowercase ||\n this.useNumbers ||\n this.useSpecial ||\n this.minNumberWords > 0 ||\n this.capitalize ||\n this.includeNumber;\n }\n}\n","import { ProfileOrganizationResponse } from '../response/profileOrganizationResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationData {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useBusinessPortal: boolean;\n useSso: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n\n constructor(response: ProfileOrganizationResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.usePolicies = response.usePolicies;\n this.useGroups = response.useGroups;\n this.useDirectory = response.useDirectory;\n this.useEvents = response.useEvents;\n this.useTotp = response.useTotp;\n this.use2fa = response.use2fa;\n this.useApi = response.useApi;\n this.useBusinessPortal = response.useBusinessPortal;\n this.useSso = response.useSso;\n this.useResetPassword = response.useResetPassword;\n this.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n this.ssoBound = response.ssoBound;\n this.identifier = response.identifier;\n this.permissions = response.permissions;\n this.resetPasswordEnrolled = response.resetPasswordEnrolled;\n this.userId = response.userId;\n this.hasPublicAndPrivateKeys = response.hasPublicAndPrivateKeys;\n this.providerId = response.providerId;\n this.providerName = response.providerName;\n }\n}\n","import { ProfileProviderResponse } from '../response/profileProviderResponse';\n\nimport { ProviderUserStatusType } from '../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../enums/providerUserType';\n\nexport class ProviderData {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(response: ProfileProviderResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.userId = response.userId;\n this.useEvents = response.useEvents;\n }\n}\n","import { SendFileApi } from '../api/sendFileApi';\n\nexport class SendFileData {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data?: SendFileApi) {\n if (data == null) {\n return;\n }\n\n this.id = data.id;\n this.fileName = data.fileName;\n this.key = data.key;\n this.size = data.size;\n this.sizeName = data.sizeName;\n }\n}\n","import { SendTextApi } from '../api/sendTextApi';\n\nexport class SendTextData {\n text: string;\n hidden: boolean;\n\n constructor(data?: SendTextApi) {\n if (data == null) {\n return;\n }\n\n this.text = data.text;\n this.hidden = data.hidden;\n }\n}\n","import { ProviderUserStatusType } from '../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../enums/providerUserType';\nimport { ProviderData } from '../data/providerData';\n\nexport class Provider {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(obj?: ProviderData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.userId = obj.userId;\n this.useEvents = obj.useEvents;\n }\n\n get canAccess() {\n if (this.isProviderAdmin) {\n return true;\n }\n return this.enabled && this.status === ProviderUserStatusType.Confirmed;\n }\n\n get canCreateOrganizations() {\n return this.enabled && this.isProviderAdmin;\n }\n\n get canManageUsers() {\n return this.isProviderAdmin;\n }\n\n get canAccessEventLogs() {\n return this.isProviderAdmin;\n }\n\n get isProviderAdmin() {\n return this.type === ProviderUserType.ProviderAdmin;\n }\n}\n","import { I18nService as BaseI18nService } from 'jslib-common/services/i18n.service';\n\nexport class I18nService extends BaseI18nService {\n constructor(systemLanguage: string, localesDirectory: string) {\n super(systemLanguage || 'en-US', localesDirectory, async (formattedLocale: string) => {\n const filePath = this.localesDirectory + '/' + formattedLocale + '/messages.json?cache=' +\n process.env.CACHE_TAG;\n const localesResult = await fetch(filePath);\n const locales = await localesResult.json();\n return locales;\n });\n\n // Please leave 'en' where it is, as it's our fallback language in case no translation can be found\n this.supportedTranslationLocales = [\n 'en', 'az', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'eo', 'en-GB', 'en-IN', 'es', 'et', 'fi', 'fr', 'he', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lv', 'ml', 'nb',\n 'nl', 'pl', 'pt-PT', 'pt-BR', 'ro', 'ru', 'sk', 'sr', 'sv', 'tr', 'uk', 'zh-CN', 'zh-TW',\n ];\n }\n}\n","import { StorageService } from 'jslib-common/abstractions/storage.service';\n\nexport class MemoryStorageService implements StorageService {\n private store = new Map();\n\n get(key: string): Promise {\n if (this.store.has(key)) {\n const obj = this.store.get(key);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n this.store.set(key, obj);\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n this.store.delete(key);\n return Promise.resolve();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { PasswordRepromptService as BasePasswordRepromptService } from 'jslib-angular/services/passwordReprompt.service';\nimport { PasswordRepromptComponent } from '../app/components/password-reprompt.component';\n\n@Injectable()\nexport class PasswordRepromptService extends BasePasswordRepromptService {\n component = PasswordRepromptComponent;\n}\n","import { Injectable } from '@angular/core';\n\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from 'jslib-common/abstractions/passwordReprompt.service';\n\nimport { PasswordRepromptComponent } from '../components/password-reprompt.component';\nimport { ModalService } from './modal.service';\n\n@Injectable()\nexport class PasswordRepromptService implements PasswordRepromptServiceAbstraction {\n protected component = PasswordRepromptComponent;\n\n constructor(private modalService: ModalService) { }\n\n protectedFields() {\n return ['TOTP', 'Password', 'H_Field', 'Card Number', 'Security Code'];\n }\n\n async showPasswordPrompt() {\n const ref = this.modalService.open(this.component, {allowMultipleModals: true});\n\n if (ref == null) {\n return false;\n }\n\n const result = await ref.onClosedPromise();\n return result === true;\n }\n}\n","import Swal, { SweetAlertIcon } from 'sweetalert2';\n\nimport { DeviceType } from 'jslib-common/enums/deviceType';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nexport class WebPlatformUtilsService implements PlatformUtilsService {\n identityClientId: string = 'web';\n\n private browserCache: DeviceType = null;\n\n constructor(private i18nService: I18nService, private messagingService: MessagingService,\n private logService: LogService) { }\n\n getDevice(): DeviceType {\n if (this.browserCache != null) {\n return this.browserCache;\n }\n\n if (navigator.userAgent.indexOf(' Firefox/') !== -1 || navigator.userAgent.indexOf(' Gecko/') !== -1) {\n this.browserCache = DeviceType.FirefoxBrowser;\n } else if (navigator.userAgent.indexOf(' OPR/') >= 0) {\n this.browserCache = DeviceType.OperaBrowser;\n } else if (navigator.userAgent.indexOf(' Edg/') !== -1) {\n this.browserCache = DeviceType.EdgeBrowser;\n } else if (navigator.userAgent.indexOf(' Vivaldi/') !== -1) {\n this.browserCache = DeviceType.VivaldiBrowser;\n } else if (navigator.userAgent.indexOf(' Safari/') !== -1 && navigator.userAgent.indexOf('Chrome') === -1) {\n this.browserCache = DeviceType.SafariBrowser;\n } else if ((window as any).chrome && navigator.userAgent.indexOf(' Chrome/') !== -1) {\n this.browserCache = DeviceType.ChromeBrowser;\n } else if (navigator.userAgent.indexOf(' Trident/') !== -1) {\n this.browserCache = DeviceType.IEBrowser;\n } else {\n this.browserCache = DeviceType.UnknownBrowser;\n }\n\n return this.browserCache;\n }\n\n getDeviceString(): string {\n const device = DeviceType[this.getDevice()].toLowerCase();\n return device.replace('browser', '');\n }\n\n isFirefox(): boolean {\n return this.getDevice() === DeviceType.FirefoxBrowser;\n }\n\n isChrome(): boolean {\n return this.getDevice() === DeviceType.ChromeBrowser;\n }\n\n isEdge(): boolean {\n return this.getDevice() === DeviceType.EdgeBrowser;\n }\n\n isOpera(): boolean {\n return this.getDevice() === DeviceType.OperaBrowser;\n }\n\n isVivaldi(): boolean {\n return this.getDevice() === DeviceType.VivaldiBrowser;\n }\n\n isSafari(): boolean {\n return this.getDevice() === DeviceType.SafariBrowser;\n }\n\n isIE(): boolean {\n return this.getDevice() === DeviceType.IEBrowser;\n }\n\n isMacAppStore(): boolean {\n return false;\n }\n\n isViewOpen(): Promise {\n return Promise.resolve(false);\n }\n\n lockTimeout(): number {\n return null;\n }\n\n launchUri(uri: string, options?: any): void {\n const a = document.createElement('a');\n a.href = uri;\n if (options == null || !options.sameWindow) {\n a.target = '_blank';\n a.rel = 'noreferrer noopener';\n }\n a.classList.add('d-none');\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {\n let blob: Blob = null;\n let type: string = null;\n const fileNameLower = fileName.toLowerCase();\n let doDownload = true;\n if (fileNameLower.endsWith('.pdf')) {\n type = 'application/pdf';\n doDownload = false;\n } else if (fileNameLower.endsWith('.xlsx')) {\n type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n } else if (fileNameLower.endsWith('.docx')) {\n type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n } else if (fileNameLower.endsWith('.pptx')) {\n type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n } else if (fileNameLower.endsWith('.csv')) {\n type = 'text/csv';\n } else if (fileNameLower.endsWith('.png')) {\n type = 'image/png';\n } else if (fileNameLower.endsWith('.jpg') || fileNameLower.endsWith('.jpeg')) {\n type = 'image/jpeg';\n } else if (fileNameLower.endsWith('.gif')) {\n type = 'image/gif';\n }\n if (type != null) {\n blobOptions = blobOptions || {};\n if (blobOptions.type == null) {\n blobOptions.type = type;\n }\n }\n if (blobOptions != null && !this.isIE()) {\n blob = new Blob([blobData], blobOptions);\n } else {\n blob = new Blob([blobData]);\n }\n if (navigator.msSaveOrOpenBlob) {\n navigator.msSaveBlob(blob, fileName);\n } else {\n const a = win.document.createElement('a');\n if (doDownload) {\n a.download = fileName;\n } else if (!this.isSafari()) {\n a.target = '_blank';\n }\n a.href = URL.createObjectURL(blob);\n a.style.position = 'fixed';\n win.document.body.appendChild(a);\n a.click();\n win.document.body.removeChild(a);\n }\n }\n\n getApplicationVersion(): Promise {\n return Promise.resolve(process.env.APPLICATION_VERSION || '-');\n }\n\n supportsWebAuthn(win: Window): boolean {\n return (typeof(PublicKeyCredential) !== 'undefined');\n }\n\n supportsDuo(): boolean {\n return true;\n }\n\n showToast(type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any): void {\n this.messagingService.send('showToast', {\n text: text,\n title: title,\n type: type,\n options: options,\n });\n }\n\n async showDialog(body: string, title?: string, confirmText?: string, cancelText?: string, type?: string,\n bodyIsHtml: boolean = false) {\n let iconClasses: string = null;\n if (type != null) {\n // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed.\n switch (type) {\n case 'success':\n iconClasses = 'fa-check text-success';\n break;\n case 'warning':\n iconClasses = 'fa-warning text-warning';\n break;\n case 'error':\n iconClasses = 'fa-bolt text-danger';\n break;\n case 'info':\n iconClasses = 'fa-info-circle text-info';\n break;\n default:\n break;\n }\n }\n\n const bootstrapModal = document.querySelector('div.modal');\n if (bootstrapModal != null) {\n bootstrapModal.removeAttribute('tabindex');\n }\n\n const iconHtmlStr = iconClasses != null ? `` : undefined;\n const confirmed = await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml.\n iconHtml: iconHtmlStr,\n text: bodyIsHtml ? null : body,\n html: bodyIsHtml ? body : null,\n titleText: title,\n showCancelButton: (cancelText != null),\n cancelButtonText: cancelText,\n showConfirmButton: true,\n confirmButtonText: confirmText == null ? this.i18nService.t('ok') : confirmText,\n });\n\n if (bootstrapModal != null) {\n bootstrapModal.setAttribute('tabindex', '-1');\n }\n\n return confirmed.value;\n }\n\n isDev(): boolean {\n return false;\n }\n\n isSelfHost(): boolean {\n return false;\n }\n\n copyToClipboard(text: string, options?: any): void | boolean {\n let win = window;\n let doc = window.document;\n if (options && (options.window || options.win)) {\n win = options.window || options.win;\n doc = win.document;\n } else if (options && options.doc) {\n doc = options.doc;\n }\n if ((win as any).clipboardData && (win as any).clipboardData.setData) {\n // IE specific code path to prevent textarea being shown while dialog is visible.\n (win as any).clipboardData.setData('Text', text);\n } else if (doc.queryCommandSupported && doc.queryCommandSupported('copy')) {\n const textarea = doc.createElement('textarea');\n textarea.textContent = text;\n // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.position = 'fixed';\n let copyEl = doc.body;\n // For some reason copy command won't work when modal is open if appending to body\n if (doc.body.classList.contains('modal-open')) {\n copyEl = doc.body.querySelector('.modal');\n }\n copyEl.appendChild(textarea);\n textarea.select();\n let success = false;\n try {\n // Security exception may be thrown by some browsers.\n success = doc.execCommand('copy');\n if (!success) {\n this.logService.debug('Copy command unsupported or disabled.');\n }\n } catch (e) {\n // tslint:disable-next-line\n console.warn('Copy to clipboard failed.', e);\n } finally {\n copyEl.removeChild(textarea);\n }\n return success;\n }\n }\n\n readFromClipboard(options?: any): Promise {\n throw new Error('Cannot read from clipboard on web.');\n }\n\n supportsBiometric() {\n return Promise.resolve(false);\n }\n\n authenticateBiometric() {\n return Promise.resolve(false);\n }\n\n supportsSecureStorage() {\n return false;\n }\n\n getDefaultSystemTheme() {\n return Promise.resolve(null as 'light' | 'dark');\n }\n\n onDefaultSystemThemeChange() {\n /* noop */\n }\n}\n","import { EventType } from '../enums/eventType';\n\nimport { EventData } from '../models/data/eventData';\n\nimport { EventRequest } from '../models/request/eventRequest';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { EventService as EventServiceAbstraction } from '../abstractions/event.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nexport class EventService implements EventServiceAbstraction {\n private inited = false;\n\n constructor(private storageService: StorageService, private apiService: ApiService,\n private userService: UserService, private cipherService: CipherService) { }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.uploadEvents();\n setInterval(() => this.uploadEvents(), 60 * 1000); // check every 60 seconds\n }\n }\n\n async collect(eventType: EventType, cipherId: string = null, uploadImmediately = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const organizations = await this.userService.getAllOrganizations();\n if (organizations == null) {\n return;\n }\n const orgIds = new Set(organizations.filter(o => o.useEvents).map(o => o.id));\n if (orgIds.size === 0) {\n return;\n }\n if (cipherId != null) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher == null || cipher.organizationId == null || !orgIds.has(cipher.organizationId)) {\n return;\n }\n }\n let eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null) {\n eventCollection = [];\n }\n const event = new EventData();\n event.type = eventType;\n event.cipherId = cipherId;\n event.date = new Date().toISOString();\n eventCollection.push(event);\n await this.storageService.save(ConstantsService.eventCollectionKey, eventCollection);\n if (uploadImmediately) {\n await this.uploadEvents();\n }\n }\n\n async uploadEvents(): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null || eventCollection.length === 0) {\n return;\n }\n const request = eventCollection.map(e => {\n const req = new EventRequest();\n req.type = e.type;\n req.cipherId = e.cipherId;\n req.date = e.date;\n return req;\n });\n try {\n await this.apiService.postEventsCollect(request);\n this.clearEvents();\n } catch { }\n }\n\n async clearEvents(): Promise {\n await this.storageService.remove(ConstantsService.eventCollectionKey);\n }\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventData {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventRequest {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import * as papa from 'papaparse';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { ExportService as ExportServiceAbstraction } from '../abstractions/export.service';\nimport { FolderService } from '../abstractions/folder.service';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Collection } from '../models/domain/collection';\nimport { Folder } from '../models/domain/folder';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\n\nimport { CipherWithIds as CipherExport } from '../models/export/cipherWithIds';\nimport { CollectionWithId as CollectionExport } from '../models/export/collectionWithId';\nimport { Event } from '../models/export/event';\nimport { FolderWithId as FolderExport } from '../models/export/folderWithId';\nimport { EventView } from '../models/view/eventView';\n\nimport { Utils } from '../misc/utils';\n\nexport class ExportService implements ExportServiceAbstraction {\n constructor(private folderService: FolderService, private cipherService: CipherService,\n private apiService: ApiService, private cryptoService: CryptoService) { }\n\n async getExport(format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getEncryptedExport();\n } else {\n return this.getDecryptedExport(format);\n }\n }\n\n async getOrganizationExport(organizationId: string,\n format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getOrganizationEncryptedExport(organizationId);\n } else {\n return this.getOrganizationDecryptedExport(organizationId, format);\n }\n }\n\n async getEventExport(events: EventView[]): Promise {\n return papa.unparse(events.map(e => new Event(e)));\n }\n\n getFileName(prefix: string = null, extension: string = 'csv'): string {\n const now = new Date();\n const dateString =\n now.getFullYear() + '' + this.padNumber(now.getMonth() + 1, 2) + '' + this.padNumber(now.getDate(), 2) +\n this.padNumber(now.getHours(), 2) + '' + this.padNumber(now.getMinutes(), 2) +\n this.padNumber(now.getSeconds(), 2);\n\n return 'bitwarden' + (prefix ? ('_' + prefix) : '') + '_export_' + dateString + '.' + extension;\n }\n\n private async getDecryptedExport(format: 'json' | 'csv'): Promise {\n let decFolders: FolderView[] = [];\n let decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAllDecrypted().then(folders => {\n decFolders = folders;\n }));\n\n promises.push(this.cipherService.getAllDecrypted().then(ciphers => {\n decCiphers = ciphers.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const foldersMap = new Map();\n decFolders.forEach(f => {\n if (f.id != null) {\n foldersMap.set(f.id, f);\n }\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n if (c.organizationId != null) {\n return;\n }\n\n const cipher: any = {};\n cipher.folder = c.folderId != null && foldersMap.has(c.folderId) ?\n foldersMap.get(c.folderId).name : null;\n cipher.favorite = c.favorite ? 1 : null;\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n folders: [],\n items: [],\n };\n\n decFolders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n decCiphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getEncryptedExport(): Promise {\n let folders: Folder[] = [];\n let ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAll().then(f => {\n folders = f;\n }));\n\n promises.push(this.cipherService.getAll().then(c => {\n ciphers = c.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid());\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n folders: [],\n items: [],\n };\n\n folders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n ciphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private async getOrganizationDecryptedExport(organizationId: string, format: 'json' | 'csv'): Promise {\n const decCollections: CollectionView[] = [];\n const decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(collections => {\n const collectionPromises: any = [];\n if (collections != null && collections.data != null && collections.data.length > 0) {\n collections.data.forEach(c => {\n const collection = new Collection(new CollectionData(c as CollectionDetailsResponse));\n collectionPromises.push(collection.decrypt().then(decCol => {\n decCollections.push(decCol);\n }));\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(ciphers => {\n const cipherPromises: any = [];\n if (ciphers != null && ciphers.data != null && ciphers.data.length > 0) {\n ciphers.data.filter(c => c.deletedDate === null).forEach(c => {\n const cipher = new Cipher(new CipherData(c));\n cipherPromises.push(cipher.decrypt().then(decCipher => {\n decCiphers.push(decCipher);\n }));\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const collectionsMap = new Map();\n decCollections.forEach(c => {\n collectionsMap.set(c.id, c);\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n\n const cipher: any = {};\n cipher.collections = [];\n if (c.collectionIds != null) {\n cipher.collections = c.collectionIds.filter(id => collectionsMap.has(id))\n .map(id => collectionsMap.get(id).name);\n }\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n collections: [],\n items: [],\n };\n\n decCollections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n decCiphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getOrganizationEncryptedExport(organizationId: string): Promise {\n const collections: Collection[] = [];\n const ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(c => {\n const collectionPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.forEach(r => {\n const collection = new Collection(new CollectionData(r as CollectionDetailsResponse));\n collections.push(collection);\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(c => {\n const cipherPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.filter(item => item.deletedDate === null).forEach(item => {\n const cipher = new Cipher(new CipherData(item));\n ciphers.push(cipher);\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid(), orgKey);\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n collections: [],\n items: [],\n };\n\n collections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n ciphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private padNumber(num: number, width: number, padCharacter: string = '0'): string {\n const numString = num.toString();\n return numString.length >= width ? numString :\n new Array(width - numString.length + 1).join(padCharacter) + numString;\n }\n\n private buildCommonCipher(cipher: any, c: CipherView) {\n cipher.type = null;\n cipher.name = c.name;\n cipher.notes = c.notes;\n cipher.fields = null;\n cipher.reprompt = c.reprompt;\n // Login props\n cipher.login_uri = null;\n cipher.login_username = null;\n cipher.login_password = null;\n cipher.login_totp = null;\n\n if (c.fields) {\n c.fields.forEach((f: any) => {\n if (!cipher.fields) {\n cipher.fields = '';\n } else {\n cipher.fields += '\\n';\n }\n\n cipher.fields += ((f.name || '') + ': ' + f.value);\n });\n }\n\n switch (c.type) {\n case CipherType.Login:\n cipher.type = 'login';\n cipher.login_username = c.login.username;\n cipher.login_password = c.login.password;\n cipher.login_totp = c.login.totp;\n\n if (c.login.uris) {\n cipher.login_uri = [];\n c.login.uris.forEach(u => {\n cipher.login_uri.push(u.uri);\n });\n }\n break;\n case CipherType.SecureNote:\n cipher.type = 'note';\n break;\n default:\n return;\n }\n\n return cipher;\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\nimport { EncString } from '../domain/encString';\n\nimport { Card } from './card';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { SecureNote } from './secureNote';\n\nexport class Cipher {\n static template(): Cipher {\n const req = new Cipher();\n req.organizationId = null;\n req.collectionIds = null;\n req.folderId = null;\n req.type = CipherType.Login;\n req.name = 'Item name';\n req.notes = 'Some notes about this item.';\n req.favorite = false;\n req.fields = [];\n req.login = null;\n req.secureNote = null;\n req.card = null;\n req.identity = null;\n req.reprompt = CipherRepromptType.None;\n return req;\n }\n\n static toView(req: Cipher, view = new CipherView()) {\n view.type = req.type;\n view.folderId = req.folderId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n if (view.collectionIds || req.collectionIds) {\n const set = new Set((view.collectionIds ?? []).concat(req.collectionIds ?? []));\n view.collectionIds = Array.from(set.values());\n }\n view.name = req.name;\n view.notes = req.notes;\n view.favorite = req.favorite;\n view.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n view.fields = req.fields.map(f => Field.toView(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n view.login = Login.toView(req.login);\n break;\n case CipherType.SecureNote:\n view.secureNote = SecureNote.toView(req.secureNote);\n break;\n case CipherType.Card:\n view.card = Card.toView(req.card);\n break;\n case CipherType.Identity:\n view.identity = Identity.toView(req.identity);\n break;\n }\n\n return view;\n }\n\n static toDomain(req: Cipher, domain = new CipherDomain()) {\n domain.type = req.type;\n domain.folderId = req.folderId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.notes = req.notes != null ? new EncString(req.notes) : null;\n domain.favorite = req.favorite;\n domain.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n domain.fields = req.fields.map(f => Field.toDomain(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n domain.login = Login.toDomain(req.login);\n break;\n case CipherType.SecureNote:\n domain.secureNote = SecureNote.toDomain(req.secureNote);\n break;\n case CipherType.Card:\n domain.card = Card.toDomain(req.card);\n break;\n case CipherType.Identity:\n domain.identity = Identity.toDomain(req.identity);\n break;\n }\n\n return domain;\n }\n\n type: CipherType;\n folderId: string;\n organizationId: string;\n collectionIds: string[];\n name: string;\n notes: string;\n favorite: boolean;\n fields: Field[];\n login: Login;\n secureNote: SecureNote;\n card: Card;\n identity: Identity;\n reprompt: CipherRepromptType;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n this.reprompt = o.reprompt;\n\n if (o instanceof CipherView) {\n this.name = o.name;\n this.notes = o.notes;\n } else {\n this.name = o.name?.encryptedString;\n this.notes = o.notes?.encryptedString;\n }\n\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n if (o instanceof CipherView) {\n this.fields = o.fields.map(f => new Field(f));\n } else {\n this.fields = o.fields.map(f => new Field(f));\n }\n }\n\n switch (o.type) {\n case CipherType.Login:\n this.login = new Login(o.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(o.secureNote);\n break;\n case CipherType.Card:\n this.card = new Card(o.card);\n break;\n case CipherType.Identity:\n this.identity = new Identity(o.identity);\n break;\n }\n }\n}\n","import { CardView } from '../view/cardView';\n\nimport { Card as CardDomain } from '../domain/card';\nimport { EncString } from '../domain/encString';\n\nexport class Card {\n static template(): Card {\n const req = new Card();\n req.cardholderName = 'John Doe';\n req.brand = 'visa';\n req.number = '4242424242424242';\n req.expMonth = '04';\n req.expYear = '2023';\n req.code = '123';\n return req;\n }\n\n static toView(req: Card, view = new CardView()) {\n view.cardholderName = req.cardholderName;\n view.brand = req.brand;\n view.number = req.number;\n view.expMonth = req.expMonth;\n view.expYear = req.expYear;\n view.code = req.code;\n return view;\n }\n\n static toDomain(req: Card, domain = new CardDomain()) {\n domain.cardholderName = req.cardholderName != null ? new EncString(req.cardholderName) : null;\n domain.brand = req.brand != null ? new EncString(req.brand) : null;\n domain.number = req.number != null ? new EncString(req.number) : null;\n domain.expMonth = req.expMonth != null ? new EncString(req.expMonth) : null;\n domain.expYear = req.expYear != null ? new EncString(req.expYear) : null;\n domain.code = req.code != null ? new EncString(req.code) : null;\n return domain;\n }\n\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView | CardDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof CardView) {\n this.cardholderName = o.cardholderName;\n this.brand = o.brand;\n this.number = o.number;\n this.expMonth = o.expMonth;\n this.expYear = o.expYear;\n this.code = o.code;\n } else {\n this.cardholderName = o.cardholderName?.encryptedString;\n this.brand = o.brand?.encryptedString;\n this.number = o.number?.encryptedString;\n this.expMonth = o.expMonth?.encryptedString;\n this.expYear = o.expYear?.encryptedString;\n this.code = o.code?.encryptedString;\n }\n }\n}\n","import { FieldType } from '../../enums/fieldType';\n\nimport { FieldView } from '../view/fieldView';\n\nimport { EncString } from '../domain/encString';\nimport { Field as FieldDomain } from '../domain/field';\n\nexport class Field {\n static template(): Field {\n const req = new Field();\n req.name = 'Field name';\n req.value = 'Some value';\n req.type = FieldType.Text;\n return req;\n }\n\n static toView(req: Field, view = new FieldView()) {\n view.type = req.type;\n view.value = req.value;\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: Field, domain = new FieldDomain()) {\n domain.type = req.type;\n domain.value = req.value != null ? new EncString(req.value) : null;\n domain.name = req.name != null ? new EncString(req.name) : null;\n return domain;\n }\n\n name: string;\n value: string;\n type: FieldType;\n\n constructor(o?: FieldView | FieldDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof FieldView) {\n this.name = o.name;\n this.value = o.value;\n } else {\n this.name = o.name?.encryptedString;\n this.value = o.value?.encryptedString;\n }\n this.type = o.type;\n }\n}\n","import { IdentityView } from '../view/identityView';\n\nimport { EncString } from '../domain/encString';\nimport { Identity as IdentityDomain } from '../domain/identity';\n\nexport class Identity {\n static template(): Identity {\n const req = new Identity();\n req.title = 'Mr';\n req.firstName = 'John';\n req.middleName = 'William';\n req.lastName = 'Doe';\n req.address1 = '123 Any St';\n req.address2 = 'Apt #123';\n req.address3 = null;\n req.city = 'New York';\n req.state = 'NY';\n req.postalCode = '10001';\n req.country = 'US';\n req.company = 'Acme Inc.';\n req.email = 'john@company.com';\n req.phone = '5555551234';\n req.ssn = '000-123-4567';\n req.username = 'jdoe';\n req.passportNumber = 'US-123456789';\n req.licenseNumber = 'D123-12-123-12333';\n return req;\n }\n\n static toView(req: Identity, view = new IdentityView()) {\n view.title = req.title;\n view.firstName = req.firstName;\n view.middleName = req.middleName;\n view.lastName = req.lastName;\n view.address1 = req.address1;\n view.address2 = req.address2;\n view.address3 = req.address3;\n view.city = req.city;\n view.state = req.state;\n view.postalCode = req.postalCode;\n view.country = req.country;\n view.company = req.company;\n view.email = req.email;\n view.phone = req.phone;\n view.ssn = req.ssn;\n view.username = req.username;\n view.passportNumber = req.passportNumber;\n view.licenseNumber = req.licenseNumber;\n return view;\n }\n\n static toDomain(req: Identity, domain = new IdentityDomain()) {\n domain.title = req.title != null ? new EncString(req.title) : null;\n domain.firstName = req.firstName != null ? new EncString(req.firstName) : null;\n domain.middleName = req.middleName != null ? new EncString(req.middleName) : null;\n domain.lastName = req.lastName != null ? new EncString(req.lastName) : null;\n domain.address1 = req.address1 != null ? new EncString(req.address1) : null;\n domain.address2 = req.address2 != null ? new EncString(req.address2) : null;\n domain.address3 = req.address3 != null ? new EncString(req.address3) : null;\n domain.city = req.city != null ? new EncString(req.city) : null;\n domain.state = req.state != null ? new EncString(req.state) : null;\n domain.postalCode = req.postalCode != null ? new EncString(req.postalCode) : null;\n domain.country = req.country != null ? new EncString(req.country) : null;\n domain.company = req.company != null ? new EncString(req.company) : null;\n domain.email = req.email != null ? new EncString(req.email) : null;\n domain.phone = req.phone != null ? new EncString(req.phone) : null;\n domain.ssn = req.ssn != null ? new EncString(req.ssn) : null;\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.passportNumber = req.passportNumber != null ? new EncString(req.passportNumber) : null;\n domain.licenseNumber = req.licenseNumber != null ? new EncString(req.licenseNumber) : null;\n return domain;\n }\n\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(o?: IdentityView | IdentityDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof IdentityView) {\n this.title = o.title;\n this.firstName = o.firstName;\n this.middleName = o.middleName;\n this.lastName = o.lastName;\n this.address1 = o.address1;\n this.address2 = o.address2;\n this.address3 = o.address3;\n this.city = o.city;\n this.state = o.state;\n this.postalCode = o.postalCode;\n this.country = o.country;\n this.company = o.company;\n this.email = o.email;\n this.phone = o.phone;\n this.ssn = o.ssn;\n this.username = o.username;\n this.passportNumber = o.passportNumber;\n this.licenseNumber = o.licenseNumber;\n } else {\n this.title = o.title?.encryptedString;\n this.firstName = o.firstName?.encryptedString;\n this.middleName = o.middleName?.encryptedString;\n this.lastName = o.lastName?.encryptedString;\n this.address1 = o.address1?.encryptedString;\n this.address2 = o.address2?.encryptedString;\n this.address3 = o.address3?.encryptedString;\n this.city = o.city?.encryptedString;\n this.state = o.state?.encryptedString;\n this.postalCode = o.postalCode?.encryptedString;\n this.country = o.country?.encryptedString;\n this.company = o.company?.encryptedString;\n this.email = o.email?.encryptedString;\n this.phone = o.phone?.encryptedString;\n this.ssn = o.ssn?.encryptedString;\n this.username = o.username?.encryptedString;\n this.passportNumber = o.passportNumber?.encryptedString;\n this.licenseNumber = o.licenseNumber?.encryptedString;\n }\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginView } from '../view/loginView';\n\nimport { EncString } from '../domain/encString';\nimport { Login as LoginDomain } from '../domain/login';\n\nexport class Login {\n static template(): Login {\n const req = new Login();\n req.uris = [];\n req.username = 'jdoe';\n req.password = 'myp@ssword123';\n req.totp = 'JBSWY3DPEHPK3PXP';\n return req;\n }\n\n static toView(req: Login, view = new LoginView()) {\n if (req.uris != null) {\n view.uris = req.uris.map(u => LoginUri.toView(u));\n }\n view.username = req.username;\n view.password = req.password;\n view.totp = req.totp;\n return view;\n }\n\n static toDomain(req: Login, domain = new LoginDomain()) {\n if (req.uris != null) {\n domain.uris = req.uris.map(u => LoginUri.toDomain(u));\n }\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.password = req.password != null ? new EncString(req.password) : null;\n domain.totp = req.totp != null ? new EncString(req.totp) : null;\n return domain;\n }\n\n uris: LoginUri[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView | LoginDomain) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n if (o instanceof LoginView) {\n this.uris = o.uris.map(u => new LoginUri(u));\n } else {\n this.uris = o.uris.map(u => new LoginUri(u));\n }\n }\n\n if (o instanceof LoginView) {\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n } else {\n this.username = o.username?.encryptedString;\n this.password = o.password?.encryptedString;\n this.totp = o.totp?.encryptedString;\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport { EncString } from '../domain/encString';\nimport { LoginUri as LoginUriDomain } from '../domain/loginUri';\n\nexport class LoginUri {\n static template(): LoginUri {\n const req = new LoginUri();\n req.uri = 'https://google.com';\n req.match = null;\n return req;\n }\n\n static toView(req: LoginUri, view = new LoginUriView()) {\n view.uri = req.uri;\n view.match = req.match;\n return view;\n }\n\n static toDomain(req: LoginUri, domain = new LoginUriDomain()) {\n domain.uri = req.uri != null ? new EncString(req.uri) : null;\n domain.match = req.match;\n return domain;\n }\n\n uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView | LoginUriDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof LoginUriView) {\n this.uri = o.uri;\n } else {\n this.uri = o.uri?.encryptedString;\n }\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteView } from '../view/secureNoteView';\n\nimport { SecureNote as SecureNoteDomain } from '../domain/secureNote';\n\nexport class SecureNote {\n static template(): SecureNote {\n const req = new SecureNote();\n req.type = SecureNoteType.Generic;\n return req;\n }\n\n static toView(req: SecureNote, view = new SecureNoteView()) {\n view.type = req.type;\n return view;\n }\n\n static toDomain(req: SecureNote, view = new SecureNoteDomain()) {\n view.type = req.type;\n return view;\n }\n\n type: SecureNoteType;\n\n constructor(o?: SecureNoteView | SecureNoteDomain) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { CollectionView } from '../view/collectionView';\n\nimport { Collection as CollectionDomain } from '../domain/collection';\nimport { EncString } from '../domain/encString';\n\nexport class Collection {\n static template(): Collection {\n const req = new Collection();\n req.organizationId = '00000000-0000-0000-0000-000000000000';\n req.name = 'Collection name';\n req.externalId = null;\n return req;\n }\n\n static toView(req: Collection, view = new CollectionView()) {\n view.name = req.name;\n view.externalId = req.externalId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n return view;\n }\n\n static toDomain(req: Collection, domain = new CollectionDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.externalId = req.externalId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n return domain;\n }\n\n organizationId: string;\n name: string;\n externalId: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.organizationId = o.organizationId;\n if (o instanceof CollectionView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n this.externalId = o.externalId;\n }\n}\n","import { EventType } from '../../enums/eventType';\nimport { EventView } from '../view/eventView';\n\nexport class Event {\n message: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: string;\n\n constructor(event: EventView) {\n this.message = event.humanReadableMessage;\n this.appIcon = event.appIcon;\n this.appName = event.appName;\n this.userId = event.userId;\n this.userName = event.userName;\n this.userEmail = event.userEmail;\n this.date = event.date;\n this.ip = event.ip;\n this.type = EventType[event.type];\n }\n}\n","import { FolderView } from '../view/folderView';\n\nimport { EncString } from '../domain/encString';\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class Folder {\n static template(): Folder {\n const req = new Folder();\n req.name = 'Folder name';\n return req;\n }\n\n static toView(req: Folder, view = new FolderView()) {\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: Folder, domain = new FolderDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n return domain;\n }\n\n name: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n if (o instanceof FolderView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { FileUploadService as FileUploadServiceAbstraction } from '../abstractions/fileUpload.service';\nimport { LogService } from '../abstractions/log.service';\n\nimport { FileUploadType } from '../enums/fileUploadType';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\n\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\n\nimport { AzureFileUploadService } from './azureFileUpload.service';\nimport { BitwardenFileUploadService } from './bitwardenFileUpload.service';\n\nexport class FileUploadService implements FileUploadServiceAbstraction {\n private azureFileUploadService: AzureFileUploadService;\n private bitwardenFileUploadService: BitwardenFileUploadService;\n\n constructor(private logService: LogService, private apiService: ApiService) {\n this.azureFileUploadService = new AzureFileUploadService(logService);\n this.bitwardenFileUploadService = new BitwardenFileUploadService(apiService);\n }\n\n async uploadSendFile(uploadData: SendFileUploadDataResponse, fileName: EncString, encryptedFileData: EncArrayBuffer) {\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(fileName.encryptedString, encryptedFileData,\n fd => this.apiService.postSendFile(uploadData.sendResponse.id, uploadData.sendResponse.file.id, fd));\n break;\n case FileUploadType.Azure:\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewSendFileUploadUrl(uploadData.sendResponse.id,\n uploadData.sendResponse.file.id);\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(uploadData.url, encryptedFileData,\n renewalCallback);\n break;\n default:\n throw new Error('Unknown file upload type');\n }\n } catch (e) {\n await this.apiService.deleteSend(uploadData.sendResponse.id);\n throw e;\n }\n }\n\n async uploadCipherAttachment(admin: boolean, uploadData: AttachmentUploadDataResponse, encryptedFileName: EncString,\n encryptedFileData: EncArrayBuffer) {\n const response = admin ? uploadData.cipherMiniResponse : uploadData.cipherResponse;\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(encryptedFileName.encryptedString, encryptedFileData,\n fd => this.apiService.postAttachmentFile(response.id, uploadData.attachmentId, fd));\n break;\n case FileUploadType.Azure:\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewAttachmentUploadUrl(response.id,\n uploadData.attachmentId);\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(uploadData.url, encryptedFileData, renewalCallback);\n break;\n default:\n throw new Error('Unknown file upload type.');\n }\n } catch (e) {\n if (admin) {\n await this.apiService.deleteCipherAttachmentAdmin(response.id, uploadData.attachmentId);\n } else {\n await this.apiService.deleteCipherAttachment(response.id, uploadData.attachmentId);\n }\n throw e;\n }\n }\n}\n","export enum FileUploadType {\n Direct = 0,\n Azure = 1,\n}\n","import { LogService } from '../abstractions/log.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\n\nconst MAX_SINGLE_BLOB_UPLOAD_SIZE = 256 * 1024 * 1024; // 256 MiB\nconst MAX_BLOCKS_PER_BLOB = 50000;\n\nexport class AzureFileUploadService {\n constructor(private logService: LogService) { }\n\n async upload(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n if (data.buffer.byteLength <= MAX_SINGLE_BLOB_UPLOAD_SIZE) {\n return await this.azureUploadBlob(url, data);\n } else {\n return await this.azureUploadBlocks(url, data, renewalCallback);\n }\n }\n private async azureUploadBlob(url: string, data: EncArrayBuffer) {\n const urlObject = Utils.getUrl(url);\n const headers = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': urlObject.searchParams.get('sv'),\n 'Content-Length': data.buffer.byteLength.toString(),\n 'x-ms-blob-type': 'BlockBlob',\n });\n\n const request = new Request(url, {\n body: data.buffer,\n cache: 'no-store',\n method: 'PUT',\n headers: headers,\n });\n\n const blobResponse = await fetch(request);\n\n if (blobResponse.status !== 201) {\n throw new Error(`Failed to create Azure blob: ${blobResponse.status}`);\n }\n }\n private async azureUploadBlocks(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n const baseUrl = Utils.getUrl(url);\n const blockSize = this.getMaxBlockSize(baseUrl.searchParams.get('sv'));\n let blockIndex = 0;\n const numBlocks = Math.ceil(data.buffer.byteLength / blockSize);\n const blocksStaged: string[] = [];\n\n if (numBlocks > MAX_BLOCKS_PER_BLOB) {\n throw new Error(`Cannot upload file, exceeds maximum size of ${blockSize * MAX_BLOCKS_PER_BLOB}`);\n }\n\n try {\n while (blockIndex < numBlocks) {\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockUrl = Utils.getUrl(url);\n const blockId = this.encodedBlockId(blockIndex);\n blockUrl.searchParams.append('comp', 'block');\n blockUrl.searchParams.append('blockid', blockId);\n const start = blockIndex * blockSize;\n const blockData = data.buffer.slice(start, start + blockSize);\n const blockHeaders = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': blockUrl.searchParams.get('sv'),\n 'Content-Length': blockData.byteLength.toString(),\n });\n\n const blockRequest = new Request(blockUrl.toString(), {\n body: blockData,\n cache: 'no-store',\n method: 'PUT',\n headers: blockHeaders,\n });\n\n const blockResponse = await fetch(blockRequest);\n\n if (blockResponse.status !== 201) {\n const message = `Unsuccessful block PUT. Received status ${blockResponse.status}`;\n this.logService.error(message + '\\n' + await blockResponse.json());\n throw new Error(message);\n }\n\n blocksStaged.push(blockId);\n blockIndex++;\n }\n\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockListUrl = Utils.getUrl(url);\n const blockListXml = this.blockListXml(blocksStaged);\n blockListUrl.searchParams.append('comp', 'blocklist');\n const headers = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': blockListUrl.searchParams.get('sv'),\n 'Content-Length': blockListXml.length.toString(),\n });\n\n const request = new Request(blockListUrl.toString(), {\n body: blockListXml,\n cache: 'no-store',\n method: 'PUT',\n headers: headers,\n });\n\n const response = await fetch(request);\n\n if (response.status !== 201) {\n const message = `Unsuccessful block list PUT. Received status ${response.status}`;\n this.logService.error(message + '\\n' + await response.json());\n throw new Error(message);\n }\n } catch (e) {\n throw e;\n }\n }\n\n private async renewUrlIfNecessary(url: string, renewalCallback: () => Promise): Promise {\n const urlObject = Utils.getUrl(url);\n const expiry = new Date(urlObject.searchParams.get('se') ?? '');\n\n if (isNaN(expiry.getTime())) {\n expiry.setTime(Date.now() + 3600000);\n }\n\n if (expiry.getTime() < Date.now() + 1000) {\n return await renewalCallback();\n }\n return url;\n }\n\n private encodedBlockId(blockIndex: number) {\n // Encoded blockId max size is 64, so pre-encoding max size is 48\n const utfBlockId = ('000000000000000000000000000000000000000000000000' + blockIndex.toString()).slice(-48);\n return Utils.fromUtf8ToB64(utfBlockId);\n }\n\n private blockListXml(blockIdList: string[]) {\n let xml = '';\n blockIdList.forEach(blockId => {\n xml += `${blockId}`;\n });\n xml += '';\n return xml;\n }\n\n private getMaxBlockSize(version: string) {\n if (Version.compare(version, '2019-12-12') >= 0) {\n return 4000 * 1024 * 1024; // 4000 MiB\n } else if (Version.compare(version, '2016-05-31') >= 0) {\n return 100 * 1024 * 1024; // 100 MiB\n } else {\n return 4 * 1024 * 1024; // 4 MiB\n }\n }\n}\n\nclass Version {\n /**\n * Compares two Azure Versions against each other\n * @param a Version to compare\n * @param b Version to compare\n * @returns a number less than zero if b is newer than a, 0 if equal,\n * and greater than zero if a is newer than b\n */\n static compare(a: Required | string, b: Required | string) {\n if (typeof (a) === 'string') {\n a = new Version(a);\n }\n\n if (typeof (b) === 'string') {\n b = new Version(b);\n }\n\n return a.year !== b.year ? a.year - b.year :\n a.month !== b.month ? a.month - b.month :\n a.day !== b.day ? a.day - b.day :\n 0;\n }\n year = 0;\n month = 0;\n day = 0;\n\n constructor(version: string) {\n try {\n const parts = version.split('-').map(v => Number.parseInt(v, 10));\n this.year = parts[0];\n this.month = parts[1];\n this.day = parts[2];\n } catch { }\n }\n /**\n * Compares two Azure Versions against each other\n * @param compareTo Version to compare against\n * @returns a number less than zero if compareTo is newer, 0 if equal,\n * and greater than zero if this is greater than compareTo\n */\n compare(compareTo: Required | string) {\n return Version.compare(this, compareTo);\n }\n}\n","import { ApiService } from '../abstractions/api.service';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\n\nimport { Utils } from '../misc/utils';\n\nexport class BitwardenFileUploadService\n{\n constructor(private apiService: ApiService) { }\n\n async upload(encryptedFileName: string, encryptedFileData: EncArrayBuffer, apiCall: (fd: FormData) => Promise) {\n const fd = new FormData();\n try {\n const blob = new Blob([encryptedFileData.buffer], { type: 'application/octet-stream' });\n fd.append('data', blob, encryptedFileName);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('data', Buffer.from(encryptedFileData.buffer) as any, {\n filepath: encryptedFileName,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n await apiCall(fd);\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport {\n ImportOption,\n ImportService as ImportServiceAbstraction,\n} from '../abstractions/import.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { Utils } from '../misc/utils';\n\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KvpRequest } from '../models/request/kvpRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { CipherView } from '../models/view/cipherView';\n\nimport { AscendoCsvImporter } from '../importers/ascendoCsvImporter';\nimport { AvastCsvImporter } from '../importers/avastCsvImporter';\nimport { AvastJsonImporter } from '../importers/avastJsonImporter';\nimport { AviraCsvImporter } from '../importers/aviraCsvImporter';\nimport { BitwardenCsvImporter } from '../importers/bitwardenCsvImporter';\nimport { BitwardenJsonImporter } from '../importers/bitwardenJsonImporter';\nimport { BlackBerryCsvImporter } from '../importers/blackBerryCsvImporter';\nimport { BlurCsvImporter } from '../importers/blurCsvImporter';\nimport { ButtercupCsvImporter } from '../importers/buttercupCsvImporter';\nimport { ChromeCsvImporter } from '../importers/chromeCsvImporter';\nimport { ClipperzHtmlImporter } from '../importers/clipperzHtmlImporter';\nimport { CodebookCsvImporter } from '../importers/codebookCsvImporter';\nimport { DashlaneJsonImporter } from '../importers/dashlaneJsonImporter';\nimport { EncryptrCsvImporter } from '../importers/encryptrCsvImporter';\nimport { EnpassCsvImporter } from '../importers/enpassCsvImporter';\nimport { EnpassJsonImporter } from '../importers/enpassJsonImporter';\nimport { FirefoxCsvImporter } from '../importers/firefoxCsvImporter';\nimport { FSecureFskImporter } from '../importers/fsecureFskImporter';\nimport { GnomeJsonImporter } from '../importers/gnomeJsonImporter';\nimport { Importer } from '../importers/importer';\nimport { KasperskyTxtImporter } from '../importers/kasperskyTxtImporter';\nimport { KeePass2XmlImporter } from '../importers/keepass2XmlImporter';\nimport { KeePassXCsvImporter } from '../importers/keepassxCsvImporter';\nimport { KeeperCsvImporter } from '../importers/keeperCsvImporter';\nimport { LastPassCsvImporter } from '../importers/lastpassCsvImporter';\nimport { LogMeOnceCsvImporter } from '../importers/logMeOnceCsvImporter';\nimport { MeldiumCsvImporter } from '../importers/meldiumCsvImporter';\nimport { MSecureCsvImporter } from '../importers/msecureCsvImporter';\nimport { MykiCsvImporter } from '../importers/mykiCsvImporter';\nimport { NordPassCsvImporter } from '../importers/nordpassCsvImporter';\nimport { OnePassword1PifImporter } from '../importers/onepasswordImporters/onepassword1PifImporter';\nimport { OnePasswordMacCsvImporter } from '../importers/onepasswordImporters/onepasswordMacCsvImporter';\nimport { OnePasswordWinCsvImporter } from '../importers/onepasswordImporters/onepasswordWinCsvImporter';\nimport { PadlockCsvImporter } from '../importers/padlockCsvImporter';\nimport { PassKeepCsvImporter } from '../importers/passkeepCsvImporter';\nimport { PassmanJsonImporter } from '../importers/passmanJsonImporter';\nimport { PasspackCsvImporter } from '../importers/passpackCsvImporter';\nimport { PasswordAgentCsvImporter } from '../importers/passwordAgentCsvImporter';\nimport { PasswordBossJsonImporter } from '../importers/passwordBossJsonImporter';\nimport { PasswordDragonXmlImporter } from '../importers/passwordDragonXmlImporter';\nimport { PasswordSafeXmlImporter } from '../importers/passwordSafeXmlImporter';\nimport { PasswordWalletTxtImporter } from '../importers/passwordWalletTxtImporter';\nimport { RememBearCsvImporter } from '../importers/rememBearCsvImporter';\nimport { RoboFormCsvImporter } from '../importers/roboformCsvImporter';\nimport { SafeInCloudXmlImporter } from '../importers/safeInCloudXmlImporter';\nimport { SaferPassCsvImporter } from '../importers/saferpassCsvImport';\nimport { SecureSafeCsvImporter } from '../importers/secureSafeCsvImporter';\nimport { SplashIdCsvImporter } from '../importers/splashIdCsvImporter';\nimport { StickyPasswordXmlImporter } from '../importers/stickyPasswordXmlImporter';\nimport { TrueKeyCsvImporter } from '../importers/truekeyCsvImporter';\nimport { UpmCsvImporter } from '../importers/upmCsvImporter';\nimport { YotiCsvImporter } from '../importers/yotiCsvImporter';\nimport { ZohoVaultCsvImporter } from '../importers/zohoVaultCsvImporter';\n\nexport class ImportService implements ImportServiceAbstraction {\n featuredImportOptions = [\n { id: 'bitwardenjson', name: 'Bitwarden (json)' },\n { id: 'bitwardencsv', name: 'Bitwarden (csv)' },\n { id: 'lastpasscsv', name: 'LastPass (csv)' },\n { id: 'chromecsv', name: 'Chrome (csv)' },\n { id: 'firefoxcsv', name: 'Firefox (csv)' },\n { id: 'keepass2xml', name: 'KeePass 2 (xml)' },\n { id: '1password1pif', name: '1Password (1pif)' },\n { id: 'dashlanejson', name: 'Dashlane (json)' },\n ];\n\n regularImportOptions: ImportOption[] = [\n { id: 'keepassxcsv', name: 'KeePassX (csv)' },\n { id: '1passwordwincsv', name: '1Password 6 and 7 Windows (csv)' },\n { id: '1passwordmaccsv', name: '1Password 6 and 7 Mac (csv)' },\n { id: 'roboformcsv', name: 'RoboForm (csv)' },\n { id: 'keepercsv', name: 'Keeper (csv)' },\n { id: 'enpasscsv', name: 'Enpass (csv)' },\n { id: 'enpassjson', name: 'Enpass (json)' },\n { id: 'safeincloudxml', name: 'SafeInCloud (xml)' },\n { id: 'pwsafexml', name: 'Password Safe (xml)' },\n { id: 'stickypasswordxml', name: 'Sticky Password (xml)' },\n { id: 'msecurecsv', name: 'mSecure (csv)' },\n { id: 'truekeycsv', name: 'True Key (csv)' },\n { id: 'passwordbossjson', name: 'Password Boss (json)' },\n { id: 'zohovaultcsv', name: 'Zoho Vault (csv)' },\n { id: 'splashidcsv', name: 'SplashID (csv)' },\n { id: 'passworddragonxml', name: 'Password Dragon (xml)' },\n { id: 'padlockcsv', name: 'Padlock (csv)' },\n { id: 'passboltcsv', name: 'Passbolt (csv)' },\n { id: 'clipperzhtml', name: 'Clipperz (html)' },\n { id: 'aviracsv', name: 'Avira (csv)' },\n { id: 'saferpasscsv', name: 'SaferPass (csv)' },\n { id: 'upmcsv', name: 'Universal Password Manager (csv)' },\n { id: 'ascendocsv', name: 'Ascendo DataVault (csv)' },\n { id: 'meldiumcsv', name: 'Meldium (csv)' },\n { id: 'passkeepcsv', name: 'PassKeep (csv)' },\n { id: 'operacsv', name: 'Opera (csv)' },\n { id: 'vivaldicsv', name: 'Vivaldi (csv)' },\n { id: 'gnomejson', name: 'GNOME Passwords and Keys/Seahorse (json)' },\n { id: 'blurcsv', name: 'Blur (csv)' },\n { id: 'passwordagentcsv', name: 'Password Agent (csv)' },\n { id: 'passpackcsv', name: 'Passpack (csv)' },\n { id: 'passmanjson', name: 'Passman (json)' },\n { id: 'avastcsv', name: 'Avast Passwords (csv)' },\n { id: 'avastjson', name: 'Avast Passwords (json)' },\n { id: 'fsecurefsk', name: 'F-Secure KEY (fsk)' },\n { id: 'kasperskytxt', name: 'Kaspersky Password Manager (txt)' },\n { id: 'remembearcsv', name: 'RememBear (csv)' },\n { id: 'passwordwallettxt', name: 'PasswordWallet (txt)' },\n { id: 'mykicsv', name: 'Myki (csv)' },\n { id: 'securesafecsv', name: 'SecureSafe (csv)' },\n { id: 'logmeoncecsv', name: 'LogMeOnce (csv)' },\n { id: 'blackberrycsv', name: 'BlackBerry Password Keeper (csv)' },\n { id: 'buttercupcsv', name: 'Buttercup (csv)' },\n { id: 'codebookcsv', name: 'Codebook (csv)' },\n { id: 'encryptrcsv', name: 'Encryptr (csv)' },\n { id: 'yoticsv', name: 'Yoti (csv)' },\n { id: 'nordpasscsv', name: 'Nordpass (csv)' },\n ];\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private apiService: ApiService, private i18nService: I18nService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService) { }\n\n getImportOptions(): ImportOption[] {\n return this.featuredImportOptions.concat(this.regularImportOptions);\n }\n\n async import(importer: Importer, fileContents: string, organizationId: string = null): Promise {\n const importResult = await importer.parse(fileContents);\n if (importResult.success) {\n if (importResult.folders.length === 0 && importResult.ciphers.length === 0) {\n return new Error(this.i18nService.t('importNothingError'));\n } else if (importResult.ciphers.length > 0) {\n const halfway = Math.floor(importResult.ciphers.length / 2);\n const last = importResult.ciphers.length - 1;\n\n if (this.badData(importResult.ciphers[0]) &&\n this.badData(importResult.ciphers[halfway]) &&\n this.badData(importResult.ciphers[last])) {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n try {\n await this.postImport(importResult, organizationId);\n } catch (error) {\n const errorResponse = new ErrorResponse(error, 400);\n return this.handleServerError(errorResponse, importResult);\n }\n return null;\n } else {\n if (!Utils.isNullOrWhitespace(importResult.errorMessage)) {\n return new Error(importResult.errorMessage);\n } else {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n }\n\n getImporter(format: string, organizationId: string = null): Importer {\n const importer = this.getImporterInstance(format);\n if (importer == null) {\n return null;\n }\n importer.organizationId = organizationId;\n return importer;\n }\n\n private getImporterInstance(format: string) {\n if (format == null || format === '') {\n return null;\n }\n\n switch (format) {\n case 'bitwardencsv':\n return new BitwardenCsvImporter();\n case 'bitwardenjson':\n return new BitwardenJsonImporter(this.cryptoService, this.i18nService);\n case 'lastpasscsv':\n case 'passboltcsv':\n return new LastPassCsvImporter();\n case 'keepassxcsv':\n return new KeePassXCsvImporter();\n case 'aviracsv':\n return new AviraCsvImporter();\n case 'blurcsv':\n return new BlurCsvImporter();\n case 'safeincloudxml':\n return new SafeInCloudXmlImporter();\n case 'padlockcsv':\n return new PadlockCsvImporter();\n case 'keepass2xml':\n return new KeePass2XmlImporter();\n case 'chromecsv':\n case 'operacsv':\n case 'vivaldicsv':\n return new ChromeCsvImporter();\n case 'firefoxcsv':\n return new FirefoxCsvImporter();\n case 'upmcsv':\n return new UpmCsvImporter();\n case 'saferpasscsv':\n return new SaferPassCsvImporter();\n case 'meldiumcsv':\n return new MeldiumCsvImporter();\n case '1password1pif':\n return new OnePassword1PifImporter();\n case '1passwordwincsv':\n return new OnePasswordWinCsvImporter();\n case '1passwordmaccsv':\n return new OnePasswordMacCsvImporter();\n case 'keepercsv':\n return new KeeperCsvImporter();\n case 'passworddragonxml':\n return new PasswordDragonXmlImporter();\n case 'enpasscsv':\n return new EnpassCsvImporter();\n case 'enpassjson':\n return new EnpassJsonImporter();\n case 'pwsafexml':\n return new PasswordSafeXmlImporter();\n case 'dashlanejson':\n return new DashlaneJsonImporter();\n case 'msecurecsv':\n return new MSecureCsvImporter();\n case 'stickypasswordxml':\n return new StickyPasswordXmlImporter();\n case 'truekeycsv':\n return new TrueKeyCsvImporter();\n case 'clipperzhtml':\n return new ClipperzHtmlImporter();\n case 'roboformcsv':\n return new RoboFormCsvImporter();\n case 'ascendocsv':\n return new AscendoCsvImporter();\n case 'passwordbossjson':\n return new PasswordBossJsonImporter();\n case 'zohovaultcsv':\n return new ZohoVaultCsvImporter();\n case 'splashidcsv':\n return new SplashIdCsvImporter();\n case 'passkeepcsv':\n return new PassKeepCsvImporter();\n case 'gnomejson':\n return new GnomeJsonImporter();\n case 'passwordagentcsv':\n return new PasswordAgentCsvImporter();\n case 'passpackcsv':\n return new PasspackCsvImporter();\n case 'passmanjson':\n return new PassmanJsonImporter();\n case 'avastcsv':\n return new AvastCsvImporter();\n case 'avastjson':\n return new AvastJsonImporter();\n case 'fsecurefsk':\n return new FSecureFskImporter();\n case 'kasperskytxt':\n return new KasperskyTxtImporter();\n case 'remembearcsv':\n return new RememBearCsvImporter();\n case 'passwordwallettxt':\n return new PasswordWalletTxtImporter();\n case 'mykicsv':\n return new MykiCsvImporter();\n case 'securesafecsv':\n return new SecureSafeCsvImporter();\n case 'logmeoncecsv':\n return new LogMeOnceCsvImporter();\n case 'blackberrycsv':\n return new BlackBerryCsvImporter();\n case 'buttercupcsv':\n return new ButtercupCsvImporter();\n case 'codebookcsv':\n return new CodebookCsvImporter();\n case 'encryptrcsv':\n return new EncryptrCsvImporter();\n case 'yoticsv':\n return new YotiCsvImporter();\n case 'nordpasscsv':\n return new NordPassCsvImporter();\n default:\n return null;\n }\n }\n\n private async postImport(importResult: ImportResult, organizationId: string = null) {\n if (organizationId == null) {\n const request = new ImportCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.folders != null) {\n for (let i = 0; i < importResult.folders.length; i++) {\n const f = await this.folderService.encrypt(importResult.folders[i]);\n request.folders.push(new FolderRequest(f));\n }\n }\n if (importResult.folderRelationships != null) {\n importResult.folderRelationships.forEach(r =>\n request.folderRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportCiphers(request);\n } else {\n const request = new ImportOrganizationCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n importResult.ciphers[i].organizationId = organizationId;\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.collections != null) {\n for (let i = 0; i < importResult.collections.length; i++) {\n importResult.collections[i].organizationId = organizationId;\n const c = await this.collectionService.encrypt(importResult.collections[i]);\n request.collections.push(new CollectionRequest(c));\n }\n }\n if (importResult.collectionRelationships != null) {\n importResult.collectionRelationships.forEach(r =>\n request.collectionRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportOrganizationCiphers(organizationId, request);\n }\n }\n\n private badData(c: CipherView) {\n return (c.name == null || c.name === '--') &&\n (c.type === CipherType.Login && c.login != null && Utils.isNullOrWhitespace(c.login.password));\n }\n\n private handleServerError(errorResponse: ErrorResponse, importResult: ImportResult): Error {\n if (errorResponse.validationErrors == null) {\n return new Error(errorResponse.message);\n }\n\n let errorMessage = '';\n\n Object.entries(errorResponse.validationErrors).forEach(([key, value], index) => {\n let item;\n let itemType;\n const i = Number(key.match(/[0-9]+/)[0]);\n\n switch (key.match(/^\\w+/)[0]) {\n case 'Ciphers':\n item = importResult.ciphers[i];\n itemType = CipherType[item.type];\n break;\n case 'Folders':\n item = importResult.folders[i];\n itemType = 'Folder';\n break;\n case 'Collections':\n item = importResult.collections[i];\n itemType = 'Collection';\n break;\n default:\n return;\n }\n\n if (index > 0) {\n errorMessage += '\\n\\n';\n }\n\n if (itemType !== 'Folder' && itemType !== 'Collection') {\n errorMessage += '[' + (i + 1) + '] ';\n }\n\n errorMessage += '[' + itemType + '] \"' + item.name + '\": ' + value;\n });\n\n return new Error(errorMessage);\n }\n}\n","import { CipherRequest } from './cipherRequest';\nimport { FolderRequest } from './folderRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: KvpRequest[] = [];\n}\n","import { CipherRequest } from './cipherRequest';\nimport { CollectionRequest } from './collectionRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportOrganizationCiphersRequest {\n ciphers: CipherRequest[] = [];\n collections: CollectionRequest[] = [];\n collectionRelationships: KvpRequest[] = [];\n}\n","export class KvpRequest {\n key: TK;\n value: TV;\n\n constructor(key: TK, value: TV) {\n this.key = key;\n this.value = value;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AscendoCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 2) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const val: string = value[i + 2];\n const field: string = value[i + 1];\n if (this.isNullOrWhitespace(val) || this.isNullOrWhitespace(field)) {\n continue;\n }\n\n const fieldLower = field.toLowerCase();\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = this.getValueOrDefault(val);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = this.getValueOrDefault(val);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n } else {\n this.processKvp(cipher, field, val);\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AvastCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.login.uris = this.makeUriArray(value.web);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.login);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class AvastJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results.logins != null) {\n results.logins.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.pwd);\n cipher.login.username = this.getValueOrDefault(value.loginName);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.notes != null) {\n results.notes.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.label);\n cipher.notes = this.getValueOrDefault(value.text);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.cards != null) {\n results.cards.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.card.cardholderName = this.getValueOrDefault(value.holderName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (value.expirationDate != null) {\n if (value.expirationDate.month != null) {\n cipher.card.expMonth = value.expirationDate.month + '';\n }\n if (value.expirationDate.year != null) {\n cipher.card.expYear = value.expirationDate.year + '';\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AviraCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name,\n this.getValueOrDefault(this.nameFromUrl(value.website), '--'));\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.username) && !this.isNullOrWhitespace(value.secondary_username)) {\n cipher.login.username = value.secondary_username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.notes = this.getValueOrDefault(value.secondary_username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherRepromptType } from '../enums/cipherRepromptType';\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class BitwardenCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.organization && !this.isNullOrWhitespace(value.collections)) {\n const collections = (value.collections as string).split(',');\n collections.forEach(col => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === col) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = col;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization) {\n this.processFolder(result, value.folder);\n }\n\n const cipher = new CipherView();\n cipher.favorite = !this.organization && this.getValueOrDefault(value.favorite, '0') !== '0' ? true : false;\n cipher.type = CipherType.Login;\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.name = this.getValueOrDefault(value.name, '--');\n try {\n cipher.reprompt = parseInt(this.getValueOrDefault(value.reprompt, CipherRepromptType.None.toString()), 10);\n } catch (e) {\n // tslint:disable-next-line\n console.error('Unable to parse reprompt value', e);\n cipher.reprompt = CipherRepromptType.None;\n }\n\n if (!this.isNullOrWhitespace(value.fields)) {\n const fields = this.splitNewLine(value.fields);\n for (let i = 0; i < fields.length; i++) {\n if (this.isNullOrWhitespace(fields[i])) {\n continue;\n }\n\n const delimPosition = fields[i].lastIndexOf(': ');\n if (delimPosition === -1) {\n continue;\n }\n\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n\n const field = new FieldView();\n field.name = fields[i].substr(0, delimPosition);\n field.value = null;\n field.type = FieldType.Text;\n if (fields[i].length > (delimPosition + 2)) {\n field.value = fields[i].substr(delimPosition + 2);\n }\n cipher.fields.push(field);\n }\n }\n\n const valueType = value.type != null ? value.type.toLowerCase() : null;\n switch (valueType) {\n case 'note':\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.totp = this.getValueOrDefault(value.login_totp || value.totp);\n cipher.login.username = this.getValueOrDefault(value.login_username || value.username);\n cipher.login.password = this.getValueOrDefault(value.login_password || value.password);\n const uris = this.parseSingleRowCsv(value.login_uri || value.uri);\n cipher.login.uris = this.makeUriArray(uris);\n break;\n }\n\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { EncString } from '../models/domain/encString';\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherWithIds } from '../models/export/cipherWithIds';\nimport { CollectionWithId } from '../models/export/collectionWithId';\nimport { FolderWithId } from '../models/export/folderWithId';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\n\nexport class BitwardenJsonImporter extends BaseImporter implements Importer {\n private results: any;\n private result: ImportResult;\n\n constructor(private cryptoService: CryptoService, private i18nService: I18nService) {\n super();\n }\n\n async parse(data: string): Promise {\n this.result = new ImportResult();\n this.results = JSON.parse(data);\n if (this.results == null || this.results.items == null || this.results.items.length === 0) {\n this.result.success = false;\n return this.result;\n }\n\n if (this.results.encrypted) {\n await this.parseEncrypted();\n } else {\n this.parseDecrypted();\n }\n\n return this.result;\n }\n\n private async parseEncrypted() {\n if (this.results.encKeyValidation_DO_NOT_EDIT != null) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const encKeyValidation = new EncString(this.results.encKeyValidation_DO_NOT_EDIT);\n const encKeyValidationDecrypt = await this.cryptoService.decryptToUtf8(encKeyValidation, orgKey);\n if (encKeyValidationDecrypt === null) {\n this.result.success = false;\n this.result.errorMessage = this.i18nService.t('importEncKeyError');\n return;\n }\n }\n\n const groupingsMap = new Map();\n\n if (this.organization && this.results.collections != null) {\n for (const c of this.results.collections as CollectionWithId[]) {\n const collection = CollectionWithId.toDomain(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = this.organizationId;\n const view = await collection.decrypt();\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(view);\n }\n }\n } else if (!this.organization && this.results.folders != null) {\n for (const f of this.results.folders as FolderWithId[]) {\n const folder = FolderWithId.toDomain(f);\n if (folder != null) {\n folder.id = null;\n const view = await folder.decrypt();\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(view);\n }\n }\n }\n\n for (const c of this.results.items as CipherWithIds[]) {\n const cipher = CipherWithIds.toDomain(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = this.organizationId;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n const view = await cipher.decrypt();\n this.cleanupCipher(view);\n this.result.ciphers.push(view);\n }\n\n this.result.success = true;\n }\n\n private parseDecrypted() {\n const groupingsMap = new Map();\n if (this.organization && this.results.collections != null) {\n this.results.collections.forEach((c: CollectionWithId) => {\n const collection = CollectionWithId.toView(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = null;\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(collection);\n }\n });\n } else if (!this.organization && this.results.folders != null) {\n this.results.folders.forEach((f: FolderWithId) => {\n const folder = FolderWithId.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(folder);\n }\n });\n }\n\n this.results.items.forEach((c: CipherWithIds) => {\n const cipher = CipherWithIds.toView(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = null;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlackBerryCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.grouping === 'list') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.favorite = value.fav === '1';\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.extra);\n if (value.grouping !== 'note') {\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlurCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.label === 'null') {\n value.label = null;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.label,\n this.getValueOrDefault(this.nameFromUrl(value.domain), '--'));\n cipher.login.uris = this.makeUriArray(value.domain);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.email) && !this.isNullOrWhitespace(value.username)) {\n cipher.login.username = value.username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.email);\n cipher.notes = this.getValueOrDefault(value.username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst OfficialProps = [\n '!group_id', '!group_name', 'title', 'username', 'password', 'URL', 'id',\n];\n\nexport class ButtercupCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value['!group_name']));\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n let processingCustomFields = false;\n for (const prop in value) {\n if (value.hasOwnProperty(prop)) {\n if (!processingCustomFields && OfficialProps.indexOf(prop) === -1) {\n processingCustomFields = true;\n }\n if (processingCustomFields) {\n this.processKvp(cipher, prop, value[prop]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ChromeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ClipperzHtmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const textarea = doc.querySelector('textarea');\n if (textarea == null || this.isNullOrWhitespace(textarea.textContent)) {\n result.errorMessage = 'Missing textarea.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const entries = JSON.parse(textarea.textContent);\n entries.forEach((entry: any) => {\n const cipher = this.initLoginCipher();\n if (!this.isNullOrWhitespace(entry.label)) {\n cipher.name = entry.label.split(' ')[0];\n }\n if (entry.data != null && !this.isNullOrWhitespace(entry.data.notes)) {\n cipher.notes = entry.data.notes.split('\\\\n').join('\\n');\n }\n\n if (entry.currentVersion != null && entry.currentVersion.fields != null) {\n for (const property in entry.currentVersion.fields) {\n if (!entry.currentVersion.fields.hasOwnProperty(property)) {\n continue;\n }\n\n const field = entry.currentVersion.fields[property];\n const actionType = field.actionType != null ? field.actionType.toLowerCase() : null;\n switch (actionType) {\n case 'password':\n cipher.login.password = this.getValueOrDefault(field.value);\n break;\n case 'email':\n case 'username':\n case 'user':\n case 'name':\n cipher.login.username = this.getValueOrDefault(field.value);\n break;\n case 'url':\n cipher.login.uris = this.makeUriArray(field.value);\n break;\n default:\n const labelLower = field.label != null ? field.label.toLowerCase() : null;\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(labelLower) > -1) {\n cipher.login.password = this.getValueOrDefault(field.value);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(labelLower) > -1) {\n cipher.login.username = this.getValueOrDefault(field.value);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(labelLower) > -1) {\n cipher.login.uris = this.makeUriArray(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n break;\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class CodebookCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value.Category));\n\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite) === 'True';\n cipher.name = this.getValueOrDefault(value.Entry, '--');\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.login.username = this.getValueOrDefault(value.Username, value.Email);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.totp = this.getValueOrDefault(value.TOTP);\n cipher.login.uris = this.makeUriArray(value.Website);\n\n if (!this.isNullOrWhitespace(value.Username)) {\n this.processKvp(cipher, 'Email', value.Email);\n }\n this.processKvp(cipher, 'Phone', value.Phone);\n this.processKvp(cipher, 'PIN', value.PIN);\n this.processKvp(cipher, 'Account', value.Account);\n this.processKvp(cipher, 'Date', value.Date);\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst HandledResults = new Set(['ADDRESS', 'AUTHENTIFIANT', 'BANKSTATEMENT', 'IDCARD', 'IDENTITY',\n 'PAYMENTMEANS_CREDITCARD', 'PAYMENTMEAN_PAYPAL', 'EMAIL']);\n\nexport class DashlaneJsonImporter extends BaseImporter implements Importer {\n private result: ImportResult;\n\n parse(data: string): Promise {\n this.result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n if (results.ADDRESS != null) {\n this.processAddress(results.ADDRESS);\n }\n if (results.AUTHENTIFIANT != null) {\n this.processAuth(results.AUTHENTIFIANT);\n }\n if (results.BANKSTATEMENT != null) {\n this.processNote(results.BANKSTATEMENT, 'BankAccountName');\n }\n if (results.IDCARD != null) {\n this.processNote(results.IDCARD, 'Fullname');\n }\n if (results.PAYMENTMEANS_CREDITCARD != null) {\n this.processCard(results.PAYMENTMEANS_CREDITCARD);\n }\n if (results.IDENTITY != null) {\n this.processIdentity(results.IDENTITY);\n }\n\n for (const key in results) {\n if (results.hasOwnProperty(key) && !HandledResults.has(key)) {\n this.processNote(results[key], null, 'Generic Note');\n }\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processAuth(results: any[]) {\n results.forEach((credential: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(credential.title);\n\n cipher.login.username = this.getValueOrDefault(credential.login,\n this.getValueOrDefault(credential.secondaryLogin));\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.domain);\n cipher.notes += this.getValueOrDefault(credential.note, '');\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processIdentity(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.fullName, '');\n const nameParts = cipher.name.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length === 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = this.getValueOrDefault(nameParts[2]);\n }\n cipher.identity.username = this.getValueOrDefault(obj.pseudo);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processAddress(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.addressName);\n cipher.identity.address1 = this.getValueOrDefault(obj.addressFull);\n cipher.identity.city = this.getValueOrDefault(obj.city);\n cipher.identity.state = this.getValueOrDefault(obj.state);\n cipher.identity.postalCode = this.getValueOrDefault(obj.zipcode);\n cipher.identity.country = this.getValueOrDefault(obj.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processCard(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(obj.bank);\n cipher.card.number = this.getValueOrDefault(obj.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.cardholderName = this.getValueOrDefault(obj.owner);\n if (!this.isNullOrWhitespace(cipher.card.brand)) {\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = cipher.card.brand;\n } else {\n cipher.name += (' - ' + cipher.card.brand);\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processNote(results: any[], nameProperty: string, name: string = null) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (name != null) {\n cipher.name = name;\n } else {\n cipher.name = this.getValueOrDefault(obj[nameProperty]);\n }\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== nameProperty) {\n this.processKvp(cipher, key, obj[key].toString());\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class EncryptrCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Label, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n const text = this.getValueOrDefault(value.Text);\n if (!this.isNullOrWhitespace(text)) {\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = text;\n } else {\n cipher.notes += ('\\n\\n' + text);\n }\n }\n\n const type = value['Entry Type'];\n if (type === 'Password') {\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value['Site URL']);\n } else if (type === 'Credit Card') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value['Name on card']);\n cipher.card.number = this.getValueOrDefault(value['Card Number']);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.CVV);\n const expiry = this.getValueOrDefault(value.Expiry);\n if (!this.isNullOrWhitespace(expiry)) {\n const expParts = expiry.split('/');\n if (expParts.length > 1) {\n cipher.card.expMonth = parseInt(expParts[0], null).toString();\n cipher.card.expYear = (2000 + parseInt(expParts[1], null)).toString();\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class EnpassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let firstRow = true;\n results.forEach(value => {\n if (value.length < 2 || (firstRow && (value[0] === 'Title' || value[0] === 'title'))) {\n firstRow = false;\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length === 2 || (!this.containsField(value, 'username') &&\n !this.containsField(value, 'password') && !this.containsField(value, 'email') &&\n !this.containsField(value, 'url'))) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n\n if (this.containsField(value, 'cardholder') && this.containsField(value, 'number') &&\n this.containsField(value, 'expiry date')) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const fieldValue: string = value[i + 2];\n if (this.isNullOrWhitespace(fieldValue)) {\n continue;\n }\n\n const fieldName: string = value[i + 1];\n const fieldNameLower = fieldName.toLowerCase();\n\n if (cipher.type === CipherType.Login) {\n if (fieldNameLower === 'url' && (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.login.uris = this.makeUriArray(fieldValue);\n continue;\n } else if ((fieldNameLower === 'username' || fieldNameLower === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = fieldValue;\n continue;\n } else if (fieldNameLower === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = fieldValue;\n continue;\n } else if (fieldNameLower === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = fieldValue;\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (fieldNameLower === 'cardholder' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = fieldValue;\n continue;\n } else if (fieldNameLower === 'number' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n continue;\n } else if (fieldNameLower === 'cvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = fieldValue;\n continue;\n } else if (fieldNameLower === 'expiry date' && this.isNullOrWhitespace(cipher.card.expMonth) &&\n this.isNullOrWhitespace(cipher.card.expYear)) {\n if (this.setCardExpiration(cipher, fieldValue)) {\n continue;\n }\n } else if (fieldNameLower === 'type') {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n this.processKvp(cipher, fieldName, fieldValue);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private containsField(fields: any[], name: string) {\n if (fields == null || name == null) {\n return false;\n }\n return fields.filter(f => !this.isNullOrWhitespace(f) &&\n f.toLowerCase() === name.toLowerCase()).length > 0;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\n\nexport class EnpassJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n const foldersIndexMap = new Map();\n const folderTree = this.buildFolderTree(results.folders);\n this.flattenFolderTree(null, folderTree, foldersMap);\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((item: any) => {\n if (item.folders != null && item.folders.length > 0 && foldersIndexMap.has(item.folders[0])) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(item.folders[0])]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(item.title);\n cipher.favorite = item.favorite > 0;\n\n if (item.template_type != null && item.fields != null && item.fields.length > 0) {\n if (item.template_type.indexOf('login.') === 0 || item.template_type.indexOf('password.') === 0) {\n this.processLogin(cipher, item.fields);\n } else if (item.template_type.indexOf('creditcard.') === 0) {\n this.processCard(cipher, item.fields);\n } else if (item.template_type.indexOf('identity.') < 0 &&\n item.fields.some((f: any) => f.type === 'password' && !this.isNullOrWhitespace(f.value))) {\n this.processLogin(cipher, item.fields);\n } else {\n this.processNote(cipher, item.fields);\n }\n }\n\n cipher.notes += ('\\n' + this.getValueOrDefault(item.note, ''));\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private processLogin(cipher: CipherView, fields: any[]) {\n const urls: string[] = [];\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n\n if ((field.type === 'username' || field.type === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = field.value;\n } else if (field.type === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = field.value;\n } else if (field.type === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = field.value;\n } else if (field.type === 'url') {\n urls.push(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n private processCard(cipher: CipherView, fields: any[]) {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section' || field.type === 'ccType') {\n return;\n }\n\n if (field.type === 'ccName' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = field.value;\n } else if (field.type === 'ccNumber' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = field.value;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n } else if (field.type === 'ccCvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = field.value;\n } else if (field.type === 'ccExpiry' && this.isNullOrWhitespace(cipher.card.expYear)) {\n if (!this.setCardExpiration(cipher, field.value)) {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n }\n\n private processNote(cipher: CipherView, fields: any[]) {\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n });\n }\n\n private buildFolderTree(folders: any[]): any[] {\n if (folders == null) {\n return [];\n }\n const folderTree: any[] = [];\n const map = new Map([]);\n folders.forEach((obj: any) => {\n map.set(obj.uuid, obj);\n obj.children = [];\n });\n folders.forEach((obj: any) => {\n if (obj.parent_uuid != null && obj.parent_uuid !== '' && map.has(obj.parent_uuid)) {\n map.get(obj.parent_uuid).children.push(obj);\n } else {\n folderTree.push(obj);\n }\n });\n return folderTree;\n }\n\n private flattenFolderTree(titlePrefix: string, tree: any[], map: Map) {\n if (tree == null) {\n return;\n }\n tree.forEach((f: any) => {\n if (f.title != null && f.title.trim() !== '') {\n let title = f.title.trim();\n if (titlePrefix != null && titlePrefix.trim() !== '') {\n title = titlePrefix + '/' + title;\n }\n map.set(f.uuid, title);\n if (f.children != null && f.children.length !== 0) {\n this.flattenFolderTree(title, f.children, map);\n }\n }\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class FirefoxCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.filter(value => {\n return value.url !== 'chrome://FirefoxAccounts';\n }).forEach(value => {\n const cipher = this.initLoginCipher();\n const url = this.getValueOrDefault(value.url, this.getValueOrDefault(value.hostname));\n cipher.name = this.getValueOrDefault(this.nameFromUrl(url), '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class FSecureFskImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const key in results.data) {\n if (!results.data.hasOwnProperty(key)) {\n continue;\n }\n\n const value = results.data[key];\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.service);\n cipher.notes = this.getValueOrDefault(value.notes);\n\n if (value.style === 'website') {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n } else if (value.style === 'creditcard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.username);\n cipher.card.number = this.getValueOrDefault(value.creditNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.creditCvv);\n if (!this.isNullOrWhitespace(value.creditExpiry)) {\n if (!this.setCardExpiration(cipher, value.creditExpiry)) {\n this.processKvp(cipher, 'Expiration', value.creditExpiry);\n }\n }\n if (!this.isNullOrWhitespace(value.password)) {\n this.processKvp(cipher, 'PIN', value.password);\n }\n } else {\n continue;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class GnomeJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || Object.keys(results).length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const keyRing in results) {\n if (!results.hasOwnProperty(keyRing) || this.isNullOrWhitespace(keyRing) ||\n results[keyRing].length === 0) {\n continue;\n }\n\n results[keyRing].forEach((value: any) => {\n if (this.isNullOrWhitespace(value.display_name) || value.display_name.indexOf('http') !== 0) {\n return;\n }\n\n this.processFolder(result, keyRing);\n const cipher = this.initLoginCipher();\n cipher.name = value.display_name.replace('http://', '').replace('https://', '');\n if (cipher.name.length > 30) {\n cipher.name = cipher.name.substring(0, 30);\n }\n cipher.login.password = this.getValueOrDefault(value.secret);\n cipher.login.uris = this.makeUriArray(value.display_name);\n\n if (value.attributes != null) {\n cipher.login.username = value.attributes != null ?\n this.getValueOrDefault(value.attributes.username_value) : null;\n for (const attr in value.attributes) {\n if (!value.attributes.hasOwnProperty(attr) || attr === 'username_value' ||\n attr === 'xdg:schema') {\n continue;\n }\n this.processKvp(cipher, attr, value.attributes[attr]);\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst NotesHeader = 'Notes\\n\\n';\nconst ApplicationsHeader = 'Applications\\n\\n';\nconst WebsitesHeader = 'Websites\\n\\n';\nconst Delimiter = '\\n---\\n';\n\nexport class KasperskyTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n\n let notesData: string;\n let applicationsData: string;\n let websitesData: string;\n let workingData = this.splitNewLine(data).join('\\n');\n\n if (workingData.indexOf(NotesHeader) !== -1) {\n const parts = workingData.split(NotesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n notesData = parts[1];\n }\n }\n if (workingData.indexOf(ApplicationsHeader) !== -1) {\n const parts = workingData.split(ApplicationsHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n applicationsData = parts[1];\n }\n }\n if (workingData.indexOf(WebsitesHeader) === 0) {\n const parts = workingData.split(WebsitesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n websitesData = parts[1];\n }\n }\n\n const notes = this.parseDataCategory(notesData);\n const applications = this.parseDataCategory(applicationsData);\n const websites = this.parseDataCategory(websitesData);\n\n notes.forEach(n => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(n.get('Name'));\n cipher.notes = this.getValueOrDefault(n.get('Text'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n websites.concat(applications).forEach(w => {\n const cipher = this.initLoginCipher();\n const nameKey = w.has('Website name') ? 'Website name' : 'Application';\n cipher.name = this.getValueOrDefault(w.get(nameKey), '');\n if (!this.isNullOrWhitespace(w.get('Login name'))) {\n if (!this.isNullOrWhitespace(cipher.name)) {\n cipher.name += ': ';\n }\n cipher.name += w.get('Login name');\n }\n cipher.notes = this.getValueOrDefault(w.get('Comment'));\n if (w.has('Website URL')) {\n cipher.login.uris = this.makeUriArray(w.get('Website URL'));\n }\n cipher.login.username = this.getValueOrDefault(w.get('Login'));\n cipher.login.password = this.getValueOrDefault(w.get('Password'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseDataCategory(data: string): Map[] {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Map[] = [];\n data.split(Delimiter).forEach(p => {\n if (p.indexOf('\\n') === -1) {\n return;\n }\n const item = new Map();\n let itemComment: string;\n let itemCommentKey: string;\n p.split('\\n').forEach(l => {\n if (itemComment != null) {\n itemComment += ('\\n' + l);\n return;\n }\n const colonIndex = l.indexOf(':');\n let key: string;\n let val: string;\n if (colonIndex === -1) {\n return;\n } else {\n key = l.substring(0, colonIndex);\n if (l.length > colonIndex + 1) {\n val = l.substring(colonIndex + 2);\n }\n }\n if (key != null) {\n item.set(key, val);\n }\n if (key === 'Comment' || key === 'Text') {\n itemComment = val;\n itemCommentKey = key;\n }\n });\n if (itemComment != null && itemCommentKey != null) {\n item.set(itemCommentKey, itemComment);\n }\n if (item.size === 0) {\n return;\n }\n items.push(item);\n });\n return items;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { FieldType } from '../enums/fieldType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeePass2XmlImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n const rootGroup = doc.querySelector('KeePassFile > Root > Group');\n if (rootGroup == null) {\n this.result.errorMessage = 'Missing `KeePassFile > Root > Group` node.';\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n this.traverse(rootGroup, true, '');\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n traverse(node: Element, isRootNode: boolean, groupPrefixName: string) {\n const folderIndex = this.result.folders.length;\n let groupName = groupPrefixName;\n\n if (!isRootNode) {\n if (groupName !== '') {\n groupName += '/';\n }\n const nameEl = this.querySelectorDirectChild(node, 'Name');\n groupName += nameEl == null ? '-' : nameEl.textContent;\n const folder = new FolderView();\n folder.name = groupName;\n this.result.folders.push(folder);\n }\n\n this.querySelectorAllDirectChild(node, 'Entry').forEach(entry => {\n const cipherIndex = this.result.ciphers.length;\n\n const cipher = this.initLoginCipher();\n this.querySelectorAllDirectChild(entry, 'String').forEach(entryString => {\n const valueEl = this.querySelectorDirectChild(entryString, 'Value');\n const value = valueEl != null ? valueEl.textContent : null;\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n const keyEl = this.querySelectorDirectChild(entryString, 'Key');\n const key = keyEl != null ? keyEl.textContent : null;\n\n if (key === 'URL') {\n cipher.login.uris = this.makeUriArray(value);\n } else if (key === 'UserName') {\n cipher.login.username = value;\n } else if (key === 'Password') {\n cipher.login.password = value;\n } else if (key === 'otp') {\n cipher.login.totp = value.replace('key=', '');\n } else if (key === 'Title') {\n cipher.name = value;\n } else if (key === 'Notes') {\n cipher.notes += (value + '\\n');\n } else {\n let type = FieldType.Text;\n const attrs = (valueEl.attributes as any);\n if (attrs.length > 0 && attrs.ProtectInMemory != null &&\n attrs.ProtectInMemory.value === 'True') {\n type = FieldType.Hidden;\n }\n this.processKvp(cipher, key, value, type);\n }\n });\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n\n if (!isRootNode) {\n this.result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n this.querySelectorAllDirectChild(node, 'Group').forEach(group => {\n this.traverse(group, false, groupName);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class KeePassXCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value.Title)) {\n return;\n }\n\n value.Group = !this.isNullOrWhitespace(value.Group) && value.Group.startsWith('Root/') ?\n value.Group.replace('Root/', '') : value.Group;\n const groupName = !this.isNullOrWhitespace(value.Group) ? value.Group : null;\n this.processFolder(result, groupName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(value.Title, '--');\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeeperCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 6) {\n return;\n }\n\n this.processFolder(result, value[0]);\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[5]) + '\\n';\n cipher.name = this.getValueOrDefault(value[1], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n\n if (value.length > 7) {\n // we have some custom fields.\n for (let i = 7; i < value.length; i = i + 2) {\n this.processKvp(cipher, value[i], value[i + 1]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\nimport { IdentityView } from '../models/view/identityView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class LastPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value, index) => {\n const cipherIndex = result.ciphers.length;\n let folderIndex = result.folders.length;\n let grouping = value.grouping;\n if (grouping != null) {\n grouping = grouping.replace(/\\\\/g, '/').replace(/[\\x00-\\x1F\\x7F-\\x9F]/g, '');\n }\n const hasFolder = this.getValueOrDefault(grouping, '(none)') !== '(none)';\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === grouping) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n const cipher = this.buildBaseCipher(value);\n if (cipher.type === CipherType.Login) {\n cipher.notes = this.getValueOrDefault(value.extra);\n cipher.login = new LoginView();\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.totp);\n } else if (cipher.type === CipherType.SecureNote) {\n this.parseSecureNote(value, cipher);\n } else if (cipher.type === CipherType.Card) {\n cipher.card = this.parseCard(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n } else if (cipher.type === CipherType.Identity) {\n cipher.identity = this.parseIdentity(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (!this.isNullOrWhitespace(value.ccnum)) {\n // there is a card on this identity too\n const cardCipher = this.buildBaseCipher(value);\n cardCipher.identity = null;\n cardCipher.type = CipherType.Card;\n cardCipher.card = this.parseCard(value);\n result.ciphers.push(cardCipher);\n }\n }\n\n result.ciphers.push(cipher);\n\n if (addFolder) {\n const f = new FolderView();\n f.name = grouping;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private buildBaseCipher(value: any) {\n const cipher = new CipherView();\n if (value.hasOwnProperty('profilename') && value.hasOwnProperty('profilelanguage')) {\n // form fill\n cipher.favorite = false;\n cipher.name = this.getValueOrDefault(value.profilename, '--');\n cipher.type = CipherType.Card;\n\n if (!this.isNullOrWhitespace(value.title) || !this.isNullOrWhitespace(value.firstname) ||\n !this.isNullOrWhitespace(value.lastname) || !this.isNullOrWhitespace(value.address1) ||\n !this.isNullOrWhitespace(value.phone) || !this.isNullOrWhitespace(value.username) ||\n !this.isNullOrWhitespace(value.email)) {\n cipher.type = CipherType.Identity;\n }\n } else {\n // site or secure note\n cipher.favorite = !this.organization && this.getValueOrDefault(value.fav, '0') === '1';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.type = value.url === 'http://sn' ? CipherType.SecureNote : CipherType.Login;\n }\n return cipher;\n }\n\n private parseCard(value: any): CardView {\n const card = new CardView();\n card.cardholderName = this.getValueOrDefault(value.ccname);\n card.number = this.getValueOrDefault(value.ccnum);\n card.code = this.getValueOrDefault(value.cccsc);\n card.brand = this.getCardBrand(value.ccnum);\n\n if (!this.isNullOrWhitespace(value.ccexp) && value.ccexp.indexOf('-') > -1) {\n const ccexpParts = (value.ccexp as string).split('-');\n if (ccexpParts.length > 1) {\n card.expYear = ccexpParts[0];\n card.expMonth = ccexpParts[1];\n if (card.expMonth.length === 2 && card.expMonth[0] === '0') {\n card.expMonth = card.expMonth[1];\n }\n }\n }\n\n return card;\n }\n\n private parseIdentity(value: any): IdentityView {\n const identity = new IdentityView();\n identity.title = this.getValueOrDefault(value.title);\n identity.firstName = this.getValueOrDefault(value.firstname);\n identity.middleName = this.getValueOrDefault(value.middlename);\n identity.lastName = this.getValueOrDefault(value.lastname);\n identity.username = this.getValueOrDefault(value.username);\n identity.company = this.getValueOrDefault(value.company);\n identity.ssn = this.getValueOrDefault(value.ssn);\n identity.address1 = this.getValueOrDefault(value.address1);\n identity.address2 = this.getValueOrDefault(value.address2);\n identity.address3 = this.getValueOrDefault(value.address3);\n identity.city = this.getValueOrDefault(value.city);\n identity.state = this.getValueOrDefault(value.state);\n identity.postalCode = this.getValueOrDefault(value.zip);\n identity.country = this.getValueOrDefault(value.country);\n identity.email = this.getValueOrDefault(value.email);\n identity.phone = this.getValueOrDefault(value.phone);\n\n if (!this.isNullOrWhitespace(identity.title)) {\n identity.title = identity.title.charAt(0).toUpperCase() + identity.title.slice(1);\n }\n\n return identity;\n }\n\n private parseSecureNote(value: any, cipher: CipherView) {\n const extraParts = this.splitNewLine(value.extra);\n let processedNote = false;\n\n if (extraParts.length) {\n const typeParts = extraParts[0].split(':');\n if (typeParts.length > 1 && typeParts[0] === 'NoteType' &&\n (typeParts[1] === 'Credit Card' || typeParts[1] === 'Address')) {\n if (typeParts[1] === 'Credit Card') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Number': 'number',\n 'Name on Card': 'cardholderName',\n 'Security Code': 'code',\n // LP provides date in a format like 'June,2020'\n // Store in expMonth, then parse and modify\n 'Expiration Date': 'expMonth',\n });\n\n if (this.isNullOrWhitespace(mappedData.expMonth) || mappedData.expMonth === ',') {\n // No expiration data\n mappedData.expMonth = undefined;\n } else {\n const [monthString, year] = mappedData.expMonth.split(',');\n // Parse month name into number\n if (!this.isNullOrWhitespace(monthString)) {\n const month = new Date(Date.parse(monthString.trim() + ' 1, 2012')).getMonth() + 1;\n if (isNaN(month)) {\n mappedData.expMonth = undefined;\n } else {\n mappedData.expMonth = month.toString();\n }\n } else {\n mappedData.expMonth = undefined;\n }\n if (!this.isNullOrWhitespace(year)) {\n mappedData.expYear = year;\n }\n }\n\n cipher.type = CipherType.Card;\n cipher.card = mappedData;\n } else if (typeParts[1] === 'Address') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Title': 'title',\n 'First Name': 'firstName',\n 'Last Name': 'lastName',\n 'Middle Name': 'middleName',\n 'Company': 'company',\n 'Address 1': 'address1',\n 'Address 2': 'address2',\n 'Address 3': 'address3',\n 'City / Town': 'city',\n 'State': 'state',\n 'Zip / Postal Code': 'postalCode',\n 'Country': 'country',\n 'Email Address': 'email',\n 'Username': 'username',\n });\n cipher.type = CipherType.Identity;\n cipher.identity = mappedData;\n }\n processedNote = true;\n }\n }\n\n if (!processedNote) {\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.extra);\n }\n }\n\n private parseSecureNoteMapping(cipher: CipherView, extraParts: string[], map: any): T {\n const dataObj: any = {};\n\n let processingNotes = false;\n extraParts.forEach(extraPart => {\n let key: string = null;\n let val: string = null;\n if (!processingNotes) {\n if (this.isNullOrWhitespace(extraPart)) {\n return;\n }\n const colonIndex = extraPart.indexOf(':');\n if (colonIndex === -1) {\n key = extraPart;\n } else {\n key = extraPart.substring(0, colonIndex);\n if (extraPart.length > colonIndex) {\n val = extraPart.substring(colonIndex + 1);\n }\n }\n if (this.isNullOrWhitespace(key) || this.isNullOrWhitespace(val) || key === 'NoteType') {\n return;\n }\n }\n\n if (processingNotes) {\n cipher.notes += ('\\n' + extraPart);\n } else if (key === 'Notes') {\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes += ('\\n' + val);\n } else {\n cipher.notes = val;\n }\n processingNotes = true;\n } else if (map.hasOwnProperty(key)) {\n dataObj[map[key]] = val;\n } else {\n this.processKvp(cipher, key, val);\n }\n });\n\n return dataObj;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class LogMeOnceCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 4) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[1]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MeldiumCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.DisplayName, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.login.username = this.getValueOrDefault(value.UserName);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class MSecureCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n const folderName = this.getValueOrDefault(value[0], 'Unassigned') !== 'Unassigned' ? value[0] : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[2], '--');\n\n if (value[1] === 'Web Logins' || value[1] === 'Login') {\n cipher.login.uris = this.makeUriArray(value[4]);\n cipher.login.username = this.getValueOrDefault(value[5]);\n cipher.login.password = this.getValueOrDefault(value[6]);\n cipher.notes = !this.isNullOrWhitespace(value[3]) ? value[3].split('\\\\n').join('\\n') : null;\n } else if (value.length > 3) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n for (let i = 3; i < value.length; i++) {\n if (!this.isNullOrWhitespace(value[i])) {\n cipher.notes += (value[i] + '\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(value[1]) && cipher.type !== CipherType.Login) {\n cipher.name = value[1] + ': ' + cipher.name;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MykiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.nickname, '--');\n cipher.notes = this.getValueOrDefault(value.additionalInfo);\n\n if (value.url !== undefined) {\n // Accounts\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.twoFactAuthToken);\n } else if (value.cardNumber !== undefined) {\n // Cards\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(value.cardName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.expMonth = this.getValueOrDefault(value.exp_month);\n cipher.card.expYear = this.getValueOrDefault(value.exp_year);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n } else if (value.firstName !== undefined) {\n // Identities\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.identity.title = this.getValueOrDefault(value.title);\n cipher.identity.firstName = this.getValueOrDefault(value.firstName);\n cipher.identity.middleName = this.getValueOrDefault(value.middleName);\n cipher.identity.lastName = this.getValueOrDefault(value.lastName);\n cipher.identity.phone = this.getValueOrDefault(value.number);\n cipher.identity.email = this.getValueOrDefault(value.email);\n cipher.identity.address1 = this.getValueOrDefault(value.firstAddressLine);\n cipher.identity.address2 = this.getValueOrDefault(value.secondAddressLine);\n cipher.identity.city = this.getValueOrDefault(value.city);\n cipher.identity.country = this.getValueOrDefault(value.country);\n cipher.identity.postalCode = this.getValueOrDefault(value.zipCode);\n } else if (value.content !== undefined) {\n // Notes\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.content);\n } else {\n return;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { LoginView } from '../models/view/loginView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\ntype nodePassCsvParsed = {\n name: string;\n url: string;\n username: string;\n password: string;\n note: string;\n cardholdername: string;\n cardnumber: string;\n cvc: string;\n expirydate: string;\n zipcode: string;\n folder: string;\n full_name: string;\n phone_number: string;\n email: string;\n address1: string;\n address2: string;\n city: string;\n country: string;\n state: string;\n};\n\nexport class NordPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results: nodePassCsvParsed[] = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(record => {\n\n const recordType = this.evaluateType(record);\n if (recordType === undefined) {\n return;\n }\n\n if (!this.organization) {\n this.processFolder(result, record.folder);\n }\n\n const cipher = new CipherView();\n cipher.name = this.getValueOrDefault(record.name, '--');\n cipher.notes = this.getValueOrDefault(record.note);\n\n switch (recordType) {\n case CipherType.Login:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.username = this.getValueOrDefault(record.username);\n cipher.login.password = this.getValueOrDefault(record.password);\n cipher.login.uris = this.makeUriArray(record.url);\n break;\n case CipherType.Card:\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(record.cardholdername);\n cipher.card.number = this.getValueOrDefault(record.cardnumber);\n cipher.card.code = this.getValueOrDefault(record.cvc);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n this.setCardExpiration(cipher, record.expirydate);\n break;\n\n case CipherType.Identity:\n cipher.type = CipherType.Identity;\n\n this.processName(cipher, this.getValueOrDefault(record.full_name));\n cipher.identity.address1 = this.getValueOrDefault(record.address1);\n cipher.identity.address2 = this.getValueOrDefault(record.address2);\n cipher.identity.city = this.getValueOrDefault(record.city);\n cipher.identity.state = this.getValueOrDefault(record.state);\n cipher.identity.postalCode = this.getValueOrDefault(record.zipcode);\n cipher.identity.country = this.getValueOrDefault(record.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n cipher.identity.email = this.getValueOrDefault(record.email);\n cipher.identity.phone = this.getValueOrDefault(record.phone_number);\n break;\n case CipherType.SecureNote:\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n break;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private evaluateType(record: nodePassCsvParsed): CipherType {\n\n if (!this.isNullOrWhitespace(record.username)) {\n return CipherType.Login;\n }\n\n if (!this.isNullOrWhitespace(record.cardnumber)) {\n return CipherType.Card;\n }\n\n if (!this.isNullOrWhitespace(record.full_name)) {\n return CipherType.Identity;\n }\n\n if (!this.isNullOrWhitespace(record.note)) {\n return CipherType.SecureNote;\n }\n\n return undefined;\n }\n\n private processName(cipher: CipherView, fullName: string) {\n\n if (this.isNullOrWhitespace(fullName)) {\n return;\n }\n\n const nameParts = fullName.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length >= 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = nameParts.slice(2, nameParts.length).join(' ');\n }\n }\n}\n","import { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { ImportResult } from '../../models/domain/importResult';\n\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { IdentityView } from '../../models/view/identityView';\nimport { PasswordHistoryView } from '../../models/view/passwordHistoryView';\nimport { SecureNoteView } from '../../models/view/secureNoteView';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class OnePassword1PifImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n data.split(this.newLineRegex).forEach(line => {\n if (this.isNullOrWhitespace(line) || line[0] !== '{') {\n return;\n }\n const item = JSON.parse(line);\n if (item.trashed === true) {\n return;\n }\n const cipher = this.initLoginCipher();\n\n if (this.isNullOrWhitespace(item.hmac)) {\n this.processStandardItem(item, cipher);\n } else {\n this.processWinOpVaultItem(item, cipher);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processWinOpVaultItem(item: any, cipher: CipherView) {\n if (item.overview != null) {\n cipher.name = this.getValueOrDefault(item.overview.title);\n if (item.overview.URLs != null) {\n const urls: string[] = [];\n item.overview.URLs.forEach((url: any) => {\n if (!this.isNullOrWhitespace(url.u)) {\n urls.push(url.u);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n\n if (item.details != null) {\n if (item.details.passwordHistory != null) {\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.details.ccnum) || !this.isNullOrWhitespace(item.details.cvv)) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (!this.isNullOrWhitespace(item.details.firstname) ||\n !this.isNullOrWhitespace(item.details.address1)) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(item.details.password)) {\n cipher.login.password = item.details.password;\n }\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (item.details.fields != null) {\n this.parseFields(item.details.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.details.sections != null) {\n item.details.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private processStandardItem(item: any, cipher: CipherView) {\n cipher.favorite = item.openContents && item.openContents.faveIndex ? true : false;\n cipher.name = this.getValueOrDefault(item.title);\n\n if (item.typeName === 'securenotes.SecureNote') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else if (item.typeName === 'wallet.financial.CreditCard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (item.typeName === 'identities.Identity') {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n } else {\n cipher.login.uris = this.makeUriArray(item.location);\n }\n\n if (item.secureContents != null) {\n if (item.secureContents.passwordHistory != null) {\n this.parsePasswordHistory(item.secureContents.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.secureContents.notesPlain)) {\n cipher.notes = item.secureContents.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (cipher.type === CipherType.Login) {\n if (!this.isNullOrWhitespace(item.secureContents.password)) {\n cipher.login.password = item.secureContents.password;\n }\n if (item.secureContents.URLs != null) {\n const urls: string[] = [];\n item.secureContents.URLs.forEach((u: any) => {\n if (!this.isNullOrWhitespace(u.url)) {\n urls.push(u.url);\n }\n });\n if (urls.length > 0) {\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n }\n if (item.secureContents.fields != null) {\n this.parseFields(item.secureContents.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.secureContents.sections != null) {\n item.secureContents.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private parsePasswordHistory(items: any[], cipher: CipherView) {\n const maxSize = items.length > 5 ? 5 : items.length;\n cipher.passwordHistory = items\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date(('' + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n\n private parseFields(fields: any[], cipher: CipherView, designationKey: string, valueKey: string, nameKey: string) {\n fields.forEach((field: any) => {\n if (field[valueKey] == null || field[valueKey].toString().trim() === '') {\n return;\n }\n\n const fieldValue = field[valueKey].toString();\n const fieldDesignation = field[designationKey] != null ? field[designationKey].toString() : null;\n\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.username) && fieldDesignation === 'username') {\n cipher.login.username = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.password) && fieldDesignation === 'password') {\n cipher.login.password = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.totp) && fieldDesignation != null &&\n fieldDesignation.startsWith('TOTP_')) {\n cipher.login.totp = fieldValue;\n return;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && fieldDesignation === 'ccnum') {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return;\n } else if (this.isNullOrWhitespace(cipher.card.code) && fieldDesignation === 'cvv') {\n cipher.card.code = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.cardholderName) && fieldDesignation === 'cardholder') {\n cipher.card.cardholderName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.expiration) && fieldDesignation === 'expiry' &&\n fieldValue.length === 6) {\n cipher.card.expMonth = (fieldValue as string).substr(4, 2);\n if (cipher.card.expMonth[0] === '0') {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (fieldValue as string).substr(0, 4);\n return;\n } else if (fieldDesignation === 'type') {\n // Skip since brand was determined from number above\n return;\n }\n } else if (cipher.type === CipherType.Identity) {\n const identity = cipher.identity;\n if (this.isNullOrWhitespace(identity.firstName) && fieldDesignation === 'firstname') {\n identity.firstName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.lastName) && fieldDesignation === 'lastname') {\n identity.lastName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.middleName) && fieldDesignation === 'initial') {\n identity.middleName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.phone) && fieldDesignation === 'defphone') {\n identity.phone = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.company) && fieldDesignation === 'company') {\n identity.company = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.email) && fieldDesignation === 'email') {\n identity.email = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.username) && fieldDesignation === 'username') {\n identity.username = fieldValue;\n return;\n } else if (fieldDesignation === 'address') {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip } = field[valueKey];\n identity.address1 = this.getValueOrDefault(street);\n identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n identity.country = country.toUpperCase();\n }\n identity.postalCode = this.getValueOrDefault(zip);\n return;\n }\n }\n\n const fieldName = this.isNullOrWhitespace(field[nameKey]) ? 'no_name' : field[nameKey];\n if (fieldName === 'password' && cipher.passwordHistory != null &&\n cipher.passwordHistory.some(h => h.password === fieldValue)) {\n return;\n }\n\n const fieldType = field.k === 'concealed' ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n}\n","import { Importer } from '../importer';\nimport { IgnoredProperties, OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView, CipherView, IdentityView } from '../../models/view';\n\nexport class OnePasswordMacCsvImporter extends OnePasswordCsvImporter implements Importer {\n setCipherType(value: any, cipher: CipherView) {\n const onePassType = this.getValueOrDefault(this.getProp(value, 'type'), 'Login');\n switch (onePassType) {\n case 'Credit Card':\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n IgnoredProperties.push('type');\n break;\n case 'Identity':\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n IgnoredProperties.push('type');\n break;\n case 'Login':\n case 'Secure Note':\n IgnoredProperties.push('type');\n default:\n break;\n }\n }\n}\n","import { CipherView } from '../../models/view';\n\nexport class CipherImportContext {\n lowerProperty: string;\n constructor(public importRecord: any, public property: string, public cipher: CipherView) {\n this.lowerProperty = property.toLowerCase();\n }\n}\n","export class View {\n}\n","import { Importer } from '../importer';\nimport { CipherImportContext } from './cipherImportContext';\nimport { OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView, CipherView, IdentityView, LoginView } from '../../models/view';\n\nexport class OnePasswordWinCsvImporter extends OnePasswordCsvImporter implements Importer {\n constructor() {\n super();\n this.identityPropertyParsers.push(this.setIdentityAddress);\n }\n\n setCipherType(value: any, cipher: CipherView) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: number/i)) &&\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: expiry date/i))) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: first name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: initial/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: last name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /internet \\d+: email/i))) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n }\n\n setIdentityAddress(context: CipherImportContext) {\n if (context.lowerProperty.match(/address \\d+: address/i)) {\n this.processKvp(context.cipher, 'address', context.importRecord[context.property]);\n return true;\n }\n return false;\n }\n\n setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date')) {\n const expSplit = (context.importRecord[context.property] as string).split('/');\n context.cipher.card.expMonth = expSplit[0];\n if (context.cipher.card.expMonth[0] === '0' && context.cipher.card.expMonth.length === 2) {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = expSplit[2].length > 4 ? expSplit[2].substr(0, 4) : expSplit[2];\n return true;\n }\n return false;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nexport class PadlockCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let headers: string[] = null;\n results.forEach(value => {\n if (headers == null) {\n headers = value.map((v: string) => v);\n return;\n }\n\n if (value.length < 2 || value.length !== headers.length) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value[1])) {\n if (this.organization) {\n const tags = (value[1] as string).split(',');\n tags.forEach(tag => {\n tag = tag.trim();\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else {\n const tags = (value[1] as string).split(',');\n const tag = tags.length > 0 ? tags[0].trim() : null;\n this.processFolder(result, tag);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n for (let i = 2; i < value.length; i++) {\n const header = headers[i].trim().toLowerCase();\n if (this.isNullOrWhitespace(value[i]) || this.isNullOrWhitespace(header)) {\n continue;\n }\n\n if (this.usernameFieldNames.indexOf(header) > -1) {\n cipher.login.username = value[i];\n } else if (this.passwordFieldNames.indexOf(header) > -1) {\n cipher.login.password = value[i];\n } else if (this.uriFieldNames.indexOf(header) > -1) {\n cipher.login.uris = this.makeUriArray(value[i]);\n } else {\n this.processKvp(cipher, headers[i], value[i]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassKeepCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValue('category', value));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValue('description', value);\n cipher.name = this.getValueOrDefault(this.getValue('title', value), '--');\n cipher.login.username = this.getValue('username', value);\n cipher.login.password = this.getValue('password', value);\n cipher.login.uris = this.makeUriArray(this.getValue('site', value));\n this.processKvp(cipher, 'Password 2', this.getValue('password2', value));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private getValue(key: string, value: any) {\n return this.getValueOrDefault(value[key], this.getValueOrDefault(value[(' ' + key)]));\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassmanJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((credential: any) => {\n if (credential.tags != null && credential.tags.length > 0) {\n const folderName = credential.tags[0].text;\n this.processFolder(result, folderName);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = credential.label;\n\n cipher.login.username = this.getValueOrDefault(credential.username);\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.url);\n cipher.notes += this.getValueOrDefault(credential.description, '');\n if (credential.otp != null) {\n cipher.login.totp = this.getValueOrDefault(credential.otp.secret);\n }\n\n if (credential.custom_fields != null) {\n credential.custom_fields.forEach((customField: any) => {\n switch (customField.field_type) {\n case 'text':\n case 'password':\n this.processKvp(cipher, customField.label, customField.value);\n break;\n }\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport class PasspackCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const tagsJson = !this.isNullOrWhitespace(value.Tags) ? JSON.parse(value.Tags) : null;\n const tags: string[] = tagsJson != null && tagsJson.tags != null && tagsJson.tags.length > 0 ?\n tagsJson.tags.map((tagJson: string) => {\n try {\n const t = JSON.parse(tagJson);\n return this.getValueOrDefault(t.tag);\n } catch { }\n return null;\n }).filter((t: string) => !this.isNullOrWhitespace(t)) : null;\n\n if (this.organization && tags != null && tags.length > 0) {\n tags.forEach(tag => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization && tags != null && tags.length > 0) {\n this.processFolder(result, tags[0]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes, '');\n cipher.notes += ('\\n\\n' + this.getValueOrDefault(value['Shared Notes'], '') + '\\n');\n cipher.name = this.getValueOrDefault(value['Entry Name'], '--');\n cipher.login.username = this.getValueOrDefault(value['User ID']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n value.__parsed_extra.forEach((extra: string) => {\n if (!this.isNullOrWhitespace(extra)) {\n cipher.notes += ('\\n' + extra);\n }\n });\n }\n\n const fieldsJson = !this.isNullOrWhitespace(value['Extra Fields']) ?\n JSON.parse(value['Extra Fields']) : null;\n const fields = fieldsJson != null && fieldsJson.extraFields != null &&\n fieldsJson.extraFields.length > 0 ? fieldsJson.extraFields.map((fieldJson: string) => {\n try {\n return JSON.parse(fieldJson);\n } catch { }\n return null;\n }) : null;\n if (fields != null) {\n fields.forEach((f: any) => {\n if (f != null) {\n this.processKvp(cipher, f.name, f.data);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordAgentCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let newVersion = true;\n results.forEach(value => {\n if (value.length !== 5 && value.length < 9) {\n return;\n }\n const altFormat = value.length === 10 && value[0] === '0';\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[altFormat ? 1 : 0], '--');\n cipher.login.username = this.getValueOrDefault(value[altFormat ? 2 : 1]);\n cipher.login.password = this.getValueOrDefault(value[altFormat ? 3 : 2]);\n if (value.length === 5) {\n newVersion = false;\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.uris = this.makeUriArray(value[3]);\n } else {\n const folder = this.getValueOrDefault(value[altFormat ? 9 : 8], '(None)');\n let folderName = folder !== '(None)' ? folder.split('\\\\').join('/') : null;\n if (folderName != null) {\n folderName = folder.split(' > ').join('/');\n folderName = folder.split('>').join('/');\n }\n this.processFolder(result, folderName);\n cipher.notes = this.getValueOrDefault(value[altFormat ? 5 : 3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (newVersion && this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class PasswordBossJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n results.folders.forEach((value: any) => {\n foldersMap.set(value.id, value.name);\n });\n const foldersIndexMap = new Map();\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.uris = this.makeUriArray(value.login_url);\n\n if (value.folder != null && foldersIndexMap.has(value.folder)) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(value.folder)]);\n }\n\n if (value.identifiers == null) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value.identifiers.notes)) {\n cipher.notes = value.identifiers.notes.split('\\\\r\\\\n').join('\\n').split('\\\\n').join('\\n');\n }\n\n if (value.type === 'CreditCard') {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n }\n\n for (const property in value.identifiers) {\n if (!value.identifiers.hasOwnProperty(property)) {\n continue;\n }\n const valObj = value.identifiers[property];\n const val = valObj != null ? valObj.toString() : null;\n if (this.isNullOrWhitespace(val) || property === 'notes' || property === 'ignoreItemInSecurityScore') {\n continue;\n }\n\n if (property === 'custom_fields') {\n valObj.forEach((cf: any) => {\n this.processKvp(cipher, cf.name, cf.value);\n });\n continue;\n }\n\n if (cipher.type === CipherType.Card) {\n if (property === 'cardNumber') {\n cipher.card.number = val;\n cipher.card.brand = this.getCardBrand(val);\n continue;\n } else if (property === 'nameOnCard') {\n cipher.card.cardholderName = val;\n continue;\n } else if (property === 'security_code') {\n cipher.card.code = val;\n continue;\n } else if (property === 'expires') {\n try {\n const expDate = new Date(val);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n continue;\n } else if (property === 'cardType') {\n continue;\n }\n } else {\n if ((property === 'username' || property === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = val;\n continue;\n } else if (property === 'password') {\n cipher.login.password = val;\n continue;\n } else if (property === 'totp') {\n cipher.login.totp = val;\n continue;\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(property) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n continue;\n }\n }\n\n this.processKvp(cipher, property, val);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordDragonXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const records = doc.querySelectorAll('PasswordManager > record');\n Array.from(records).forEach(record => {\n const category = this.querySelectorDirectChild(record, 'Category');\n const categoryText = category != null && !this.isNullOrWhitespace(category.textContent) &&\n category.textContent !== 'Unfiled' ? category.textContent : null;\n this.processFolder(result, categoryText);\n\n const accountName = this.querySelectorDirectChild(record, 'Account-Name');\n const userId = this.querySelectorDirectChild(record, 'User-Id');\n const password = this.querySelectorDirectChild(record, 'Password');\n const url = this.querySelectorDirectChild(record, 'URL');\n const notes = this.querySelectorDirectChild(record, 'Notes');\n const cipher = this.initLoginCipher();\n cipher.name = accountName != null ? this.getValueOrDefault(accountName.textContent, '--') : '--';\n cipher.notes = notes != null ? this.getValueOrDefault(notes.textContent) : '';\n cipher.login.username = userId != null ? this.getValueOrDefault(userId.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n const attributes: string[] = [];\n for (let i = 1; i <= 10; i++) {\n attributes.push('Attribute-' + i);\n }\n\n this.querySelectorAllDirectChild(record, attributes.join(',')).forEach(attr => {\n if (this.isNullOrWhitespace(attr.textContent) || attr.textContent === 'null') {\n return;\n }\n this.processKvp(cipher, attr.tagName, attr.textContent);\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordSafeXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const passwordSafe = doc.querySelector('passwordsafe');\n if (passwordSafe == null) {\n result.errorMessage = 'Missing `passwordsafe` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const notesDelimiter = passwordSafe.getAttribute('delimiter');\n const entries = doc.querySelectorAll('passwordsafe > entry');\n Array.from(entries).forEach(entry => {\n const group = this.querySelectorDirectChild(entry, 'group');\n const groupText = group != null && !this.isNullOrWhitespace(group.textContent) ?\n group.textContent.split('.').join('/') : null;\n this.processFolder(result, groupText);\n\n const title = this.querySelectorDirectChild(entry, 'title');\n const username = this.querySelectorDirectChild(entry, 'username');\n const email = this.querySelectorDirectChild(entry, 'email');\n const password = this.querySelectorDirectChild(entry, 'password');\n const url = this.querySelectorDirectChild(entry, 'url');\n const notes = this.querySelectorDirectChild(entry, 'notes');\n const cipher = this.initLoginCipher();\n cipher.name = title != null ? this.getValueOrDefault(title.textContent, '--') : '--';\n cipher.notes = notes != null ?\n this.getValueOrDefault(notes.textContent, '').split(notesDelimiter).join('\\n') : null;\n cipher.login.username = username != null ? this.getValueOrDefault(username.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n if (this.isNullOrWhitespace(cipher.login.username) && email != null) {\n cipher.login.username = this.getValueOrDefault(email.textContent);\n } else if (email != null && !this.isNullOrWhitespace(email.textContent)) {\n cipher.notes = this.isNullOrWhitespace(cipher.notes) ? 'Email: ' + email.textContent\n : (cipher.notes + '\\n' + 'Email: ' + email.textContent);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordWalletTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 1) {\n return;\n }\n if (value.length > 5) {\n this.processFolder(result, value[5]);\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n if (value.length > 4) {\n cipher.notes = this.getValueOrDefault(value[4], '').split('¬').join('\\n');\n }\n if (value.length > 2) {\n cipher.login.username = this.getValueOrDefault(value[2]);\n }\n if (value.length > 3) {\n cipher.login.password = this.getValueOrDefault(value[3]);\n }\n if (value.length > 1) {\n cipher.login.uris = this.makeUriArray(value[1]);\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nexport class RememBearCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.trash === 'true') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (value.type === 'LoginItem') {\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n } else if (value.type === 'CreditCardItem') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.verification);\n\n try {\n const expMonth = this.getValueOrDefault(value.expiryMonth);\n if (expMonth != null) {\n const expMonthNumber = parseInt(expMonth, null);\n if (expMonthNumber != null && expMonthNumber >= 1 && expMonthNumber <= 12) {\n cipher.card.expMonth = expMonthNumber.toString();\n }\n }\n } catch { }\n try {\n const expYear = this.getValueOrDefault(value.expiryYear);\n if (expYear != null) {\n const expYearNumber = parseInt(expYear, null);\n if (expYearNumber != null) {\n cipher.card.expYear = expYearNumber.toString();\n }\n }\n } catch { }\n\n const pin = this.getValueOrDefault(value.pin);\n if (pin != null) {\n this.processKvp(cipher, 'PIN', pin);\n }\n const zip = this.getValueOrDefault(value.zipCode);\n if (zip != null) {\n this.processKvp(cipher, 'Zip Code', zip);\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class RoboFormCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let i = 1;\n results.forEach(value => {\n const folder = !this.isNullOrWhitespace(value.Folder) && value.Folder.startsWith('/') ?\n value.Folder.replace('/', '') : value.Folder;\n const folderName = !this.isNullOrWhitespace(folder) ? folder : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value.Login);\n cipher.login.password = this.getValueOrDefault(value.Pwd);\n cipher.login.uris = this.makeUriArray(value.Url);\n\n if (!this.isNullOrWhitespace(value.Rf_fields)) {\n let fields: string[] = [value.Rf_fields];\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n fields = fields.concat(value.__parsed_extra);\n }\n fields.forEach((field: string) => {\n const parts = field.split(':');\n if (parts.length < 3) {\n return;\n }\n const key = parts[0] === '-no-name-' ? null : parts[0];\n const val = parts.length === 4 && parts[2] === 'rck' ? parts[1] : parts[2];\n this.processKvp(cipher, key, val);\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n\n if (i === results.length && cipher.name === '--' && this.isNullOrWhitespace(cipher.login.password)) {\n return;\n }\n\n result.ciphers.push(cipher);\n i++;\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { FieldType } from '../enums';\nimport { CipherView, FieldView } from '../models/view';\n\nexport class SafeInCloudXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const db = doc.querySelector('database');\n if (db == null) {\n result.errorMessage = 'Missing `database` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n\n Array.from(doc.querySelectorAll('database > label')).forEach(labelEl => {\n const name = labelEl.getAttribute('name');\n const id = labelEl.getAttribute('id');\n if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {\n foldersMap.set(id, result.folders.length);\n const folder = new FolderView();\n folder.name = name;\n result.folders.push(folder);\n }\n });\n\n Array.from(doc.querySelectorAll('database > card')).forEach(cardEl => {\n if (cardEl.getAttribute('template') === 'true' || cardEl.getAttribute('deleted') === 'true') {\n return;\n }\n\n const labelIdEl = this.querySelectorDirectChild(cardEl, 'label_id');\n if (labelIdEl != null) {\n const labelId = labelIdEl.textContent;\n if (!this.isNullOrWhitespace(labelId) && foldersMap.has(labelId)) {\n result.folderRelationships.push([result.ciphers.length, foldersMap.get(labelId)]);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(cardEl.getAttribute('title'), '--');\n\n if (cardEl.getAttribute('star') === 'true') {\n cipher.favorite = true;\n }\n\n const cardType = cardEl.getAttribute('type');\n if (cardType === 'note') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else {\n Array.from(this.querySelectorAllDirectChild(cardEl, 'field')).forEach(fieldEl => {\n const text = fieldEl.textContent;\n if (this.isNullOrWhitespace(text)) {\n return;\n }\n const name = fieldEl.getAttribute('name');\n const fieldType = this.getValueOrDefault(fieldEl.getAttribute('type'), '').toLowerCase();\n if (fieldType === 'login') {\n cipher.login.username = text;\n } else if (fieldType === 'password' || fieldType === 'secret') {\n // safeInCloud allows for more than one password. we just insert them here and find the one used as password later\n this.processKvp(cipher, name, text, FieldType.Hidden);\n } else if (fieldType === 'one_time_password') {\n cipher.login.totp = text;\n } else if (fieldType === 'notes') {\n cipher.notes += (text + '\\n');\n } else if (fieldType === 'weblogin' || fieldType === 'website') {\n cipher.login.uris = this.makeUriArray(text);\n }\n else {\n this.processKvp(cipher, name, text);\n }\n });\n }\n\n Array.from(this.querySelectorAllDirectChild(cardEl, 'notes')).forEach(notesEl => {\n cipher.notes += (notesEl.textContent + '\\n');\n });\n\n this.setPassword(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n // Choose a password from all passwords. Take one that has password in its name, or the first one if there is no such entry\n // if its name is password, we can safely remove it form the fields. otherwise, it would maybe be best to keep it as a hidden field\n setPassword(cipher: CipherView) {\n const candidates = cipher.fields.filter(field => field.type === FieldType.Hidden);\n if (!candidates.length) {\n return;\n }\n\n let choice: FieldView;\n for (const field of candidates) {\n if (this.passwordFieldNames.includes(field.name.toLowerCase())) {\n choice = field;\n cipher.fields = cipher.fields.filter(f => f !== choice);\n break;\n }\n }\n\n if (!choice) {\n choice = candidates[0];\n }\n\n cipher.login.password = choice.value;\n }\n}\n","export { CipherType } from './cipherType';\nexport { DeviceType } from './deviceType';\nexport { EncryptionType } from './encryptionType';\nexport { FieldType } from './fieldType';\nexport { LogLevelType } from './logLevelType';\nexport { SecureNoteType } from './secureNoteType';\nexport { TwoFactorProviderType } from './twoFactorProviderType';\nexport { UriMatchType } from './uriMatchType';\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SaferPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.url), '--');\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SecureSafeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title);\n cipher.notes = this.getValueOrDefault(value.Comment);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.username = this.getValueOrDefault(value.Username);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view/cipherView';\n\nexport class SplashIdCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n this.processFolder(result, this.getValueOrDefault(value[value.length - 1]));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 2], '');\n cipher.name = this.getValueOrDefault(value[1], '--');\n\n if (value[0] === 'Web Logins' || value[0] === 'Servers' || value[0] === 'Email Accounts') {\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n this.parseFieldsToNotes(cipher, 5, value);\n } else {\n this.parseFieldsToNotes(cipher, 2, value);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseFieldsToNotes(cipher: CipherView, startIndex: number, value: any) {\n // last 3 rows do not get parsed\n for (let i = startIndex; i < value.length - 3; i++) {\n if (this.isNullOrWhitespace(value[i])) {\n continue;\n }\n cipher.notes += (value[i] + '\\n');\n }\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class StickyPasswordXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const loginNodes = doc.querySelectorAll('root > Database > Logins > Login');\n Array.from(loginNodes).forEach(loginNode => {\n const accountId = loginNode.getAttribute('ID');\n if (this.isNullOrWhitespace(accountId)) {\n return;\n }\n\n const usernameText = loginNode.getAttribute('Name');\n const passwordText = loginNode.getAttribute('Password');\n let titleText: string = null;\n let linkText: string = null;\n let notesText: string = null;\n let groupId: string = null;\n let groupText: string = null;\n\n const accountLogin = doc.querySelector('root > Database > Accounts > Account > ' +\n 'LoginLinks > Login[SourceLoginID=\"' + accountId + '\"]');\n if (accountLogin != null) {\n const account = accountLogin.parentElement.parentElement;\n if (account != null) {\n titleText = account.getAttribute('Name');\n linkText = account.getAttribute('Link');\n groupId = account.getAttribute('ParentID');\n notesText = account.getAttribute('Comments');\n if (!this.isNullOrWhitespace(notesText)) {\n notesText = notesText.split('/n').join('\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(groupId)) {\n groupText = this.buildGroupText(doc, groupId, '');\n this.processFolder(result, groupText);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(titleText, '--');\n cipher.notes = this.getValueOrDefault(notesText);\n cipher.login.username = this.getValueOrDefault(usernameText);\n cipher.login.password = this.getValueOrDefault(passwordText);\n cipher.login.uris = this.makeUriArray(linkText);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n buildGroupText(doc: Document, groupId: string, groupText: string): string {\n const group = doc.querySelector('root > Database > Groups > Group[ID=\"' + groupId + '\"]');\n if (group == null) {\n return groupText;\n }\n if (!this.isNullOrWhitespace(groupText)) {\n groupText = '/' + groupText;\n }\n groupText = group.getAttribute('Name') + groupText;\n return this.buildGroupText(doc, group.getAttribute('ParentID'), groupText);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst PropertiesToIgnore = ['kind', 'autologin', 'favorite', 'hexcolor', 'protectedwithpassword', 'subdomainonly',\n 'type', 'tk_export_version', 'note', 'title', 'document_content',\n];\n\nexport class TrueKeyCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.favorite, '').toLowerCase() === 'true';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.notes = this.getValueOrDefault(value.memo, '');\n cipher.login.username = this.getValueOrDefault(value.login);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n\n if (value.kind !== 'login') {\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.note, '');\n }\n\n if (value.kind === 'cc') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (!this.isNullOrWhitespace(value.expiryDate)) {\n try {\n const expDate = new Date(value.expiryDate);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch { }\n }\n } else if (value.kind !== 'login') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = this.getValueOrDefault(value.document_content, '');\n }\n for (const property in value) {\n if (value.hasOwnProperty(property) && PropertiesToIgnore.indexOf(property.toLowerCase()) < 0 &&\n !this.isNullOrWhitespace(value[property])) {\n this.processKvp(cipher, property, value[property]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class UpmCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length !== 5) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.username = this.getValueOrDefault(value[1]);\n cipher.login.password = this.getValueOrDefault(value[2]);\n cipher.login.uris = this.makeUriArray(value[3]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class YotiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value['User name']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view';\n\nexport class ZohoVaultCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value['Password Name']) && this.isNullOrWhitespace(value['Secret Name'])) {\n return;\n }\n this.processFolder(result, this.getValueOrDefault(value.ChamberName));\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite, '0') === '1';\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(\n value['Password Name'], this.getValueOrDefault(value['Secret Name'], '--'));\n cipher.login.uris = this.makeUriArray(\n this.getValueOrDefault(value['Password URL'], this.getValueOrDefault(value['Secret URL'])));\n this.parseData(cipher, value.SecretData);\n this.parseData(cipher, value.CustomData);\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseData(cipher: CipherView, data: string) {\n if (this.isNullOrWhitespace(data)) {\n return;\n }\n const dataLines = this.splitNewLine(data);\n dataLines.forEach(line => {\n const delimPosition = line.indexOf(':');\n if (delimPosition < 0) {\n return;\n }\n const field = line.substring(0, delimPosition);\n const value = line.length > delimPosition ? line.substring(delimPosition + 1) : null;\n if (this.isNullOrWhitespace(field) || this.isNullOrWhitespace(value) || field === 'SecretType') {\n return;\n }\n const fieldLower = field.toLowerCase();\n if (cipher.login.username == null && this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = value;\n } else if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = value;\n } else {\n this.processKvp(cipher, field, value);\n }\n });\n }\n}\n","import * as signalR from '@microsoft/signalr';\nimport * as signalRMsgPack from '@microsoft/signalr-protocol-msgpack';\n\nimport { NotificationType } from '../enums/notificationType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { EnvironmentService } from '../abstractions/environment.service';\nimport { LogService } from '../abstractions/log.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from '../abstractions/notifications.service';\nimport { SyncService } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nimport {\n NotificationResponse,\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport class NotificationsService implements NotificationsServiceAbstraction {\n private signalrConnection: signalR.HubConnection;\n private url: string;\n private connected = false;\n private inited = false;\n private inactive = false;\n private reconnectTimer: any = null;\n\n constructor(private userService: UserService, private syncService: SyncService,\n private appIdService: AppIdService, private apiService: ApiService,\n private vaultTimeoutService: VaultTimeoutService, private environmentService: EnvironmentService,\n private logoutCallback: () => Promise, private logService: LogService) {\n this.environmentService.urls.subscribe(() => {\n if (!this.inited) {\n return;\n }\n\n this.init();\n });\n }\n\n async init(): Promise {\n this.inited = false;\n this.url = this.environmentService.getNotificationsUrl();\n\n // Set notifications server URL to `https://-` to effectively disable communication\n // with the notifications server from the client app\n if (this.url === 'https://-') {\n return;\n }\n\n if (this.signalrConnection != null) {\n this.signalrConnection.off('ReceiveMessage');\n this.signalrConnection.off('Heartbeat');\n await this.signalrConnection.stop();\n this.connected = false;\n this.signalrConnection = null;\n }\n\n this.signalrConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.url + '/hub', {\n accessTokenFactory: () => this.apiService.getActiveBearerToken(),\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withHubProtocol(new signalRMsgPack.MessagePackHubProtocol() as signalR.IHubProtocol)\n // .configureLogging(signalR.LogLevel.Trace)\n .build();\n\n this.signalrConnection.on('ReceiveMessage',\n (data: any) => this.processNotification(new NotificationResponse(data)));\n this.signalrConnection.on('Heartbeat',\n (data: any) => { /*console.log('Heartbeat!');*/ });\n this.signalrConnection.onclose(() => {\n this.connected = false;\n this.reconnect(true);\n });\n this.inited = true;\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(false);\n }\n }\n\n async updateConnection(sync = false): Promise {\n if (!this.inited) {\n return;\n }\n try {\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(sync);\n } else {\n await this.signalrConnection.stop();\n }\n } catch (e) {\n this.logService.error(e.toString());\n }\n }\n\n async reconnectFromActivity(): Promise {\n this.inactive = false;\n if (this.inited && !this.connected) {\n await this.reconnect(true);\n }\n }\n\n async disconnectFromInactivity(): Promise {\n this.inactive = true;\n if (this.inited && this.connected) {\n await this.signalrConnection.stop();\n }\n }\n\n private async processNotification(notification: NotificationResponse) {\n const appId = await this.appIdService.getAppId();\n if (notification == null || notification.contextId === appId) {\n return;\n }\n\n const isAuthenticated = await this.userService.isAuthenticated();\n const payloadUserId = notification.payload.userId || notification.payload.UserId;\n const myUserId = await this.userService.getUserId();\n if (isAuthenticated && payloadUserId != null && payloadUserId !== myUserId) {\n return;\n }\n\n switch (notification.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherUpdate:\n await this.syncService.syncUpsertCipher(notification.payload as SyncCipherNotification,\n notification.type === NotificationType.SyncCipherUpdate);\n break;\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncLoginDelete:\n await this.syncService.syncDeleteCipher(notification.payload as SyncCipherNotification);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderUpdate:\n await this.syncService.syncUpsertFolder(notification.payload as SyncFolderNotification,\n notification.type === NotificationType.SyncFolderUpdate);\n break;\n case NotificationType.SyncFolderDelete:\n await this.syncService.syncDeleteFolder(notification.payload as SyncFolderNotification);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncSettings:\n if (isAuthenticated) {\n await this.syncService.fullSync(false);\n }\n break;\n case NotificationType.SyncOrgKeys:\n if (isAuthenticated) {\n await this.syncService.fullSync(true);\n // Stop so a reconnect can be made\n await this.signalrConnection.stop();\n }\n break;\n case NotificationType.LogOut:\n if (isAuthenticated) {\n this.logoutCallback();\n }\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n await this.syncService.syncUpsertSend(notification.payload as SyncSendNotification,\n notification.type === NotificationType.SyncSendUpdate);\n break;\n case NotificationType.SyncSendDelete:\n await this.syncService.syncDeleteSend(notification.payload as SyncSendNotification);\n default:\n break;\n }\n }\n\n private async reconnect(sync: boolean) {\n if (this.reconnectTimer != null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.connected || !this.inited || this.inactive) {\n return;\n }\n const authedAndUnlocked = await this.isAuthedAndUnlocked();\n if (!authedAndUnlocked) {\n return;\n }\n\n try {\n await this.signalrConnection.start();\n this.connected = true;\n if (sync) {\n await this.syncService.fullSync(false);\n }\n } catch { }\n\n if (!this.connected) {\n this.reconnectTimer = setTimeout(() => this.reconnect(sync), this.random(120000, 300000));\n }\n }\n\n private async isAuthedAndUnlocked() {\n if (await this.userService.isAuthenticated()) {\n const locked = await this.vaultTimeoutService.isLocked();\n return !locked;\n }\n return false;\n }\n\n private random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { NotificationType } from '../../enums/notificationType';\n\nexport class NotificationResponse extends BaseResponse {\n contextId: string;\n type: NotificationType;\n payload: any;\n\n constructor(response: any) {\n super(response);\n this.contextId = this.getResponseProperty('ContextId');\n this.type = this.getResponseProperty('Type');\n\n const payload = this.getResponseProperty('Payload');\n switch (this.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncCipherUpdate:\n case NotificationType.SyncLoginDelete:\n this.payload = new SyncCipherNotification(payload);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderDelete:\n case NotificationType.SyncFolderUpdate:\n this.payload = new SyncFolderNotification(payload);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncOrgKeys:\n case NotificationType.SyncSettings:\n case NotificationType.LogOut:\n this.payload = new UserNotification(payload);\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n case NotificationType.SyncSendDelete:\n this.payload = new SyncSendNotification(payload);\n default:\n break;\n }\n }\n}\n\nexport class SyncCipherNotification extends BaseResponse {\n id: string;\n userId: string;\n organizationId: string;\n collectionIds: string[];\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class SyncFolderNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class UserNotification extends BaseResponse {\n userId: string;\n date: Date;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.date = new Date(this.getResponseProperty('Date'));\n }\n}\n\nexport class SyncSendNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n","import { PolicyService as PolicyServiceAbstraction } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\nimport { ResetPasswordPolicyOptions } from '../models/domain/resetPasswordPolicyOptions';\n\nimport { OrganizationUserStatusType } from '../enums/organizationUserStatusType';\nimport { PolicyType } from '../enums/policyType';\n\nimport { ListResponse } from '../models/response/listResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\n\nconst Keys = {\n policiesPrefix: 'policies_',\n};\n\nexport class PolicyService implements PolicyServiceAbstraction {\n policyCache: Policy[];\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.policyCache = null;\n }\n\n async getAll(type?: PolicyType): Promise {\n if (this.policyCache == null) {\n const userId = await this.userService.getUserId();\n const policies = await this.storageService.get<{ [id: string]: PolicyData; }>(\n Keys.policiesPrefix + userId);\n const response: Policy[] = [];\n for (const id in policies) {\n if (policies.hasOwnProperty(id)) {\n response.push(new Policy(policies[id]));\n }\n }\n this.policyCache = response;\n }\n if (type != null) {\n return this.policyCache.filter(p => p.type === type);\n } else {\n return this.policyCache;\n }\n }\n\n async getPolicyForOrganization(policyType: PolicyType, organizationId: string): Promise {\n const policies = await this.getAll(policyType);\n return policies.find(p => p.organizationId === organizationId);\n }\n\n async replace(policies: { [id: string]: PolicyData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.policiesPrefix + userId, policies);\n this.policyCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.policiesPrefix + userId);\n this.policyCache = null;\n }\n\n async getMasterPasswordPolicyOptions(policies?: Policy[]): Promise {\n let enforcedOptions: MasterPasswordPolicyOptions = null;\n\n if (policies == null) {\n policies = await this.getAll(PolicyType.MasterPassword);\n } else {\n policies = policies.filter(p => p.type === PolicyType.MasterPassword);\n }\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new MasterPasswordPolicyOptions();\n }\n\n if (currentPolicy.data.minComplexity != null\n && currentPolicy.data.minComplexity > enforcedOptions.minComplexity) {\n enforcedOptions.minComplexity = currentPolicy.data.minComplexity;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.requireUpper) {\n enforcedOptions.requireUpper = true;\n }\n\n if (currentPolicy.data.requireLower) {\n enforcedOptions.requireLower = true;\n }\n\n if (currentPolicy.data.requireNumbers) {\n enforcedOptions.requireNumbers = true;\n }\n\n if (currentPolicy.data.requireSpecial) {\n enforcedOptions.requireSpecial = true;\n }\n });\n\n return enforcedOptions;\n }\n\n evaluateMasterPassword(passwordStrength: number, newPassword: string,\n enforcedPolicyOptions: MasterPasswordPolicyOptions): boolean {\n if (enforcedPolicyOptions == null) {\n return true;\n }\n\n if (enforcedPolicyOptions.minComplexity > 0 && enforcedPolicyOptions.minComplexity > passwordStrength) {\n return false;\n }\n\n if (enforcedPolicyOptions.minLength > 0 && enforcedPolicyOptions.minLength > newPassword.length) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireUpper && newPassword.toLocaleLowerCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireLower && newPassword.toLocaleUpperCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireNumbers && !(/[0-9]/.test(newPassword))) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireSpecial && !(/[!@#$%\\^&*]/g.test(newPassword))) {\n return false;\n }\n\n return true;\n }\n\n getResetPasswordPolicyOptions(policies: Policy[], orgId: string): [ResetPasswordPolicyOptions, boolean] {\n const resetPasswordPolicyOptions = new ResetPasswordPolicyOptions();\n\n if (policies == null || orgId == null) {\n return [resetPasswordPolicyOptions, false];\n }\n\n const policy = policies.find(p => p.organizationId === orgId && p.type === PolicyType.ResetPassword && p.enabled);\n resetPasswordPolicyOptions.autoEnrollEnabled = policy?.data?.autoEnrollEnabled ?? false;\n\n return [resetPasswordPolicyOptions, policy?.enabled ?? false];\n }\n\n mapPoliciesFromToken(policiesResponse: ListResponse): Policy[] {\n if (policiesResponse == null || policiesResponse.data == null) {\n return null;\n }\n\n const policiesData = policiesResponse.data.map(p => new PolicyData(p));\n return policiesData.map(p => new Policy(p));\n }\n\n async policyAppliesToUser(policyType: PolicyType, policyFilter?: (policy: Policy) => boolean) {\n const policies = await this.getAll(policyType);\n const organizations = await this.userService.getAllOrganizations();\n let filteredPolicies;\n\n if (policyFilter != null) {\n filteredPolicies = policies.filter(p => p.enabled && policyFilter(p));\n }\n else {\n filteredPolicies = policies.filter(p => p.enabled);\n }\n\n const policySet = new Set(filteredPolicies.map(p => p.organizationId));\n\n return organizations.some(o =>\n o.enabled &&\n o.status >= OrganizationUserStatusType.Accepted &&\n o.usePolicies &&\n !o.isExemptFromPolicies &&\n policySet.has(o.id));\n }\n}\n","import Domain from './domainBase';\n\nexport class ResetPasswordPolicyOptions extends Domain {\n autoEnrollEnabled: boolean = false;\n}\n","import * as lunr from 'lunr';\n\nimport { CipherView } from '../models/view/cipherView';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { LogService } from '../abstractions/log.service';\nimport { SearchService as SearchServiceAbstraction } from '../abstractions/search.service';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\nimport { SendView } from '../models/view/sendView';\n\nexport class SearchService implements SearchServiceAbstraction {\n indexedEntityId?: string = null;\n private indexing = false;\n private index: lunr.Index = null;\n private searchableMinLength = 2;\n\n constructor(private cipherService: CipherService, private logService: LogService,\n private i18nService: I18nService) {\n if (['zh-CN', 'zh-TW'].indexOf(i18nService.locale) !== -1) {\n this.searchableMinLength = 1;\n }\n }\n\n clearIndex(): void {\n this.indexedEntityId = null;\n this.index = null;\n }\n\n isSearchable(query: string): boolean {\n const notSearchable = query == null || (this.index == null && query.length < this.searchableMinLength) ||\n (this.index != null && query.length < this.searchableMinLength && query.indexOf('>') !== 0);\n return !notSearchable;\n }\n\n async indexCiphers(indexedEntityId?: string, ciphers?: CipherView[]): Promise {\n if (this.indexing) {\n return;\n }\n\n this.logService.time('search indexing');\n this.indexing = true;\n this.indexedEntityId = indexedEntityId;\n this.index = null;\n const builder = new lunr.Builder();\n builder.ref('id');\n builder.field('shortid', { boost: 100, extractor: (c: CipherView) => c.id.substr(0, 8) });\n builder.field('name', { boost: 10 });\n builder.field('subtitle', {\n boost: 5,\n extractor: (c: CipherView) => {\n if (c.subTitle != null && c.type === CipherType.Card) {\n return c.subTitle.replace(/\\*/g, '');\n }\n return c.subTitle;\n },\n });\n builder.field('notes');\n builder.field('login.username', {\n extractor: (c: CipherView) => c.type === CipherType.Login && c.login != null ? c.login.username : null,\n });\n builder.field('login.uris', { boost: 2, extractor: (c: CipherView) => this.uriExtractor(c) });\n builder.field('fields', { extractor: (c: CipherView) => this.fieldExtractor(c, false) });\n builder.field('fields_joined', { extractor: (c: CipherView) => this.fieldExtractor(c, true) });\n builder.field('attachments', { extractor: (c: CipherView) => this.attachmentExtractor(c, false) });\n builder.field('attachments_joined',\n { extractor: (c: CipherView) => this.attachmentExtractor(c, true) });\n builder.field('organizationid', { extractor: (c: CipherView) => c.organizationId });\n ciphers = ciphers || await this.cipherService.getAllDecrypted();\n ciphers.forEach(c => builder.add(c));\n this.index = builder.build();\n\n this.indexing = false;\n\n this.logService.timeEnd('search indexing');\n }\n\n async searchCiphers(query: string,\n filter: (((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[])) = null,\n ciphers: CipherView[] = null):\n Promise {\n const results: CipherView[] = [];\n if (query != null) {\n query = query.trim().toLowerCase();\n }\n if (query === '') {\n query = null;\n }\n\n if (ciphers == null) {\n ciphers = await this.cipherService.getAllDecrypted();\n }\n\n if (filter != null && Array.isArray(filter) && filter.length > 0) {\n ciphers = ciphers.filter(c => filter.every(f => f == null || f(c)));\n } else if (filter != null) {\n ciphers = ciphers.filter(filter as (cipher: CipherView) => boolean);\n }\n\n if (!this.isSearchable(query)) {\n return ciphers;\n }\n\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 250));\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 500));\n }\n }\n\n const index = this.getIndexForSearch();\n if (index == null) {\n // Fall back to basic search if index is not available\n return this.searchCiphersBasic(ciphers, query);\n }\n\n const ciphersMap = new Map();\n ciphers.forEach(c => ciphersMap.set(c.id, c));\n\n let searchResults: lunr.Index.Result[] = null;\n const isQueryString = query != null && query.length > 1 && query.indexOf('>') === 0;\n if (isQueryString) {\n try {\n searchResults = index.search(query.substr(1).trim());\n } catch { }\n } else {\n // tslint:disable-next-line\n const soWild = lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING;\n searchResults = index.query(q => {\n lunr.tokenizer(query).forEach(token => {\n const t = token.toString();\n q.term(t, { fields: ['name'], wildcard: soWild });\n q.term(t, { fields: ['subtitle'], wildcard: soWild });\n q.term(t, { fields: ['login.uris'], wildcard: soWild });\n q.term(t, {});\n });\n });\n }\n\n if (searchResults != null) {\n searchResults.forEach(r => {\n if (ciphersMap.has(r.ref)) {\n results.push(ciphersMap.get(r.ref));\n }\n });\n }\n return results;\n }\n\n searchCiphersBasic(ciphers: CipherView[], query: string, deleted: boolean = false) {\n query = query.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && c.id.startsWith(query)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n return false;\n });\n }\n\n searchSends(sends: SendView[], query: string) {\n query = query.trim().toLocaleLowerCase();\n\n return sends.filter(s => {\n if (s.name != null && s.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && (s.id.startsWith(query) || s.accessId.toLocaleLowerCase().startsWith(query) || (s.file?.id != null && s.file.id.startsWith(query)))) {\n return true;\n }\n if (s.notes != null && s.notes.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.text?.text != null && s.text.text.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.file?.fileName != null && s.file.fileName.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n });\n }\n\n getIndexForSearch(): lunr.Index {\n return this.index;\n }\n\n private fieldExtractor(c: CipherView, joined: boolean) {\n if (!c.hasFields) {\n return null;\n }\n let fields: string[] = [];\n c.fields.forEach(f => {\n if (f.name != null) {\n fields.push(f.name);\n }\n if (f.type === FieldType.Text && f.value != null) {\n fields.push(f.value);\n }\n });\n fields = fields.filter(f => f.trim() !== '');\n if (fields.length === 0) {\n return null;\n }\n return joined ? fields.join(' ') : fields;\n }\n\n private attachmentExtractor(c: CipherView, joined: boolean) {\n if (!c.hasAttachments) {\n return null;\n }\n let attachments: string[] = [];\n c.attachments.forEach(a => {\n if (a != null && a.fileName != null) {\n if (joined && a.fileName.indexOf('.') > -1) {\n attachments.push(a.fileName.substr(0, a.fileName.lastIndexOf('.')));\n } else {\n attachments.push(a.fileName);\n }\n }\n });\n attachments = attachments.filter(f => f.trim() !== '');\n if (attachments.length === 0) {\n return null;\n }\n return joined ? attachments.join(' ') : attachments;\n }\n\n private uriExtractor(c: CipherView) {\n if (c.type !== CipherType.Login || c.login == null || !c.login.hasUris) {\n return null;\n }\n const uris: string[] = [];\n c.login.uris.forEach(u => {\n if (u.uri == null || u.uri === '') {\n return;\n }\n if (u.hostname != null) {\n uris.push(u.hostname);\n return;\n }\n let uri = u.uri;\n if (u.match !== UriMatchType.RegularExpression) {\n const protocolIndex = uri.indexOf('://');\n if (protocolIndex > -1) {\n uri = uri.substr(protocolIndex + 3);\n }\n const queryIndex = uri.search(/\\?|&|#/);\n if (queryIndex > -1) {\n uri = uri.substring(0, queryIndex);\n }\n }\n uris.push(uri);\n });\n return uris.length > 0 ? uris : null;\n }\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { SendRequest } from '../models/request/sendRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { SendResponse } from '../models/response/sendResponse';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { Send } from '../models/domain/send';\nimport { SendFile } from '../models/domain/sendFile';\nimport { SendText } from '../models/domain/sendText';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { FileUploadType } from '../enums/fileUploadType';\nimport { SendType } from '../enums/sendType';\n\nimport { SendView } from '../models/view/sendView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { FileUploadService } from '../abstractions/fileUpload.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SendService as SendServiceAbstraction } from '../abstractions/send.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n sendsPrefix: 'sends_',\n};\n\nexport class SendService implements SendServiceAbstraction {\n decryptedSendCache: SendView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private fileUploadService: FileUploadService,\n private storageService: StorageService, private i18nService: I18nService,\n private cryptoFunctionService: CryptoFunctionService) { }\n\n clearCache(): void {\n this.decryptedSendCache = null;\n }\n\n async encrypt(model: SendView, file: File | ArrayBuffer, password: string,\n key?: SymmetricCryptoKey): Promise<[Send, EncArrayBuffer]> {\n let fileData: EncArrayBuffer = null;\n const send = new Send();\n send.id = model.id;\n send.type = model.type;\n send.disabled = model.disabled;\n send.hideEmail = model.hideEmail;\n send.maxAccessCount = model.maxAccessCount;\n if (model.key == null) {\n model.key = await this.cryptoFunctionService.randomBytes(16);\n model.cryptoKey = await this.cryptoService.makeSendKey(model.key);\n }\n if (password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(password, model.key, 'sha256', 100000);\n send.password = Utils.fromBufferToB64(passwordHash);\n }\n send.key = await this.cryptoService.encrypt(model.key, key);\n send.name = await this.cryptoService.encrypt(model.name, model.cryptoKey);\n send.notes = await this.cryptoService.encrypt(model.notes, model.cryptoKey);\n if (send.type === SendType.Text) {\n send.text = new SendText();\n send.text.text = await this.cryptoService.encrypt(model.text.text, model.cryptoKey);\n send.text.hidden = model.text.hidden;\n } else if (send.type === SendType.File) {\n send.file = new SendFile();\n if (file != null) {\n if (file instanceof ArrayBuffer) {\n const [name, data] = await this.encryptFileData(model.file.fileName, file, model.cryptoKey);\n send.file.fileName = name;\n fileData = data;\n } else {\n fileData = await this.parseFile(send, file, model.cryptoKey);\n }\n }\n }\n\n return [send, fileData];\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null || !sends.hasOwnProperty(id)) {\n return null;\n }\n\n return new Send(sends[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n const response: Send[] = [];\n for (const id in sends) {\n if (sends.hasOwnProperty(id)) {\n response.push(new Send(sends[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedSendCache != null) {\n return this.decryptedSendCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decSends: SendView[] = [];\n const promises: Promise[] = [];\n const sends = await this.getAll();\n sends.forEach(send => {\n promises.push(send.decrypt().then(f => decSends.push(f)));\n });\n\n await Promise.all(promises);\n decSends.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n this.decryptedSendCache = decSends;\n return this.decryptedSendCache;\n }\n\n async saveWithServer(sendData: [Send, EncArrayBuffer]): Promise {\n const request = new SendRequest(sendData[0], sendData[1]?.buffer.byteLength);\n let response: SendResponse;\n if (sendData[0].id == null) {\n if (sendData[0].type === SendType.Text) {\n response = await this.apiService.postSend(request);\n } else {\n try {\n const uploadDataResponse = await this.apiService.postFileTypeSend(request);\n response = uploadDataResponse.sendResponse;\n\n await this.fileUploadService.uploadSendFile(uploadDataResponse, sendData[0].file.fileName, sendData[1]);\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n response = await this.legacyServerSendFileUpload(sendData, request);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n }\n sendData[0].id = response.id;\n sendData[0].accessId = response.accessId;\n } else {\n response = await this.apiService.putSend(sendData[0].id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerSendFileUpload(sendData: [Send, EncArrayBuffer], request: SendRequest): Promise\n {\n const fd = new FormData();\n try {\n const blob = new Blob([sendData[1].buffer], { type: 'application/octet-stream' });\n fd.append('model', JSON.stringify(request));\n fd.append('data', blob, sendData[0].file.fileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('model', JSON.stringify(request));\n fd.append('data', Buffer.from(sendData[1].buffer) as any, {\n filepath: sendData[0].file.fileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n return await this.apiService.postSendFileLegacy(fd);\n }\n\n async upsert(send: SendData | SendData[]): Promise {\n const userId = await this.userService.getUserId();\n let sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n sends = {};\n }\n\n if (send instanceof SendData) {\n const s = send as SendData;\n sends[s.id] = s;\n } else {\n (send as SendData[]).forEach(s => {\n sends[s.id] = s;\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async replace(sends: { [id: string]: SendData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.sendsPrefix + userId);\n this.decryptedSendCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (sends[id] == null) {\n return;\n }\n delete sends[id];\n } else {\n (id as string[]).forEach(i => {\n delete sends[i];\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteSend(id);\n await this.delete(id);\n }\n\n async removePasswordWithServer(id: string): Promise {\n const response = await this.apiService.putSendRemovePassword(id);\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n private parseFile(send: Send, file: File, key: SymmetricCryptoKey): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = async evt => {\n try {\n const [name, data] = await this.encryptFileData(file.name, evt.target.result as ArrayBuffer, key);\n send.file.fileName = name;\n resolve(data);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n private async encryptFileData(fileName: string, data: ArrayBuffer,\n key: SymmetricCryptoKey): Promise<[EncString, EncArrayBuffer]> {\n const encFileName = await this.cryptoService.encrypt(fileName, key);\n const encFileData = await this.cryptoService.encryptToBytes(data, key);\n return [encFileName, encFileData];\n }\n}\n","import { CryptoService } from '../../abstractions/crypto.service';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SendData } from '../data/sendData';\n\nimport { SendView } from '../view/sendView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\n\nexport class Send extends Domain {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: EncString;\n notes: EncString;\n file: SendFile;\n text: SendText;\n key: EncString;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: Date;\n expirationDate: Date;\n deletionDate: Date;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(obj?: SendData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n accessId: null,\n userId: null,\n name: null,\n notes: null,\n key: null,\n }, alreadyEncrypted, ['id', 'accessId', 'userId']);\n\n this.type = obj.type;\n this.maxAccessCount = obj.maxAccessCount;\n this.accessCount = obj.accessCount;\n this.password = obj.password;\n this.disabled = obj.disabled;\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.deletionDate = obj.deletionDate != null ? new Date(obj.deletionDate) : null;\n this.expirationDate = obj.expirationDate != null ? new Date(obj.expirationDate) : null;\n this.hideEmail = obj.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(): Promise {\n const model = new SendView(this);\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n model.key = await cryptoService.decryptToBytes(this.key, null);\n model.cryptoKey = await cryptoService.makeSendKey(model.key);\n } catch (e) {\n // TODO: error?\n }\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, null, model.cryptoKey);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(model.cryptoKey);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(model.cryptoKey);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import * as forge from 'node-forge';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport class WebCryptoFunctionService implements CryptoFunctionService {\n private crypto: Crypto;\n private subtle: SubtleCrypto;\n private isIE: boolean;\n private isOldSafari: boolean;\n\n constructor(private win: Window, private platformUtilsService: PlatformUtilsService) {\n this.crypto = typeof win.crypto !== 'undefined' ? win.crypto : null;\n this.subtle = (!!this.crypto && typeof win.crypto.subtle !== 'undefined') ? win.crypto.subtle : null;\n this.isIE = platformUtilsService.isIE();\n const ua = win.navigator.userAgent;\n this.isOldSafari = platformUtilsService.isSafari() &&\n (ua.indexOf(' Version/10.') > -1 || ua.indexOf(' Version/9.') > -1);\n }\n\n async pbkdf2(password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number): Promise {\n if (this.isIE || this.isOldSafari) {\n const forgeLen = algorithm === 'sha256' ? 32 : 64;\n const passwordBytes = this.toByteString(password);\n const saltBytes = this.toByteString(salt);\n const derivedKeyBytes = (forge as any).pbkdf2(passwordBytes, saltBytes, iterations, forgeLen, algorithm);\n return Utils.fromByteStringToArray(derivedKeyBytes).buffer;\n }\n\n const wcLen = algorithm === 'sha256' ? 256 : 512;\n const passwordBuf = this.toBuf(password);\n const saltBuf = this.toBuf(salt);\n\n const pbkdf2Params: Pbkdf2Params = {\n name: 'PBKDF2',\n salt: saltBuf,\n iterations: iterations,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', passwordBuf, { name: 'PBKDF2' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);\n }\n\n async hkdf(ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512'): Promise {\n const saltBuf = this.toBuf(salt);\n const infoBuf = this.toBuf(info);\n\n const hkdfParams: HkdfParams = {\n name: 'HKDF',\n salt: saltBuf,\n info: infoBuf,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', ikm, { name: 'HKDF' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(hkdfParams as any, impKey, outputByteSize * 8);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n async hkdfExpand(prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512'): Promise {\n const hashLen = algorithm === 'sha256' ? 32 : 64;\n if (outputByteSize > 255 * hashLen) {\n throw new Error('outputByteSize is too large.');\n }\n const prkArr = new Uint8Array(prk);\n if (prkArr.length < hashLen) {\n throw new Error('prk is too small.');\n }\n const infoBuf = this.toBuf(info);\n const infoArr = new Uint8Array(infoBuf);\n let runningOkmLength = 0;\n let previousT = new Uint8Array(0);\n const n = Math.ceil(outputByteSize / hashLen);\n const okm = new Uint8Array(n * hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + infoArr.length + 1);\n t.set(previousT);\n t.set(infoArr, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.hmac(t.buffer, prk, algorithm));\n okm.set(previousT, runningOkmLength);\n runningOkmLength += previousT.length;\n if (runningOkmLength >= outputByteSize) {\n break;\n }\n }\n return okm.slice(0, outputByteSize).buffer;\n }\n\n async hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): Promise {\n if ((this.isIE && algorithm === 'sha1') || algorithm === 'md5') {\n const md = algorithm === 'md5' ? forge.md.md5.create() : forge.md.sha1.create();\n const valueBytes = this.toByteString(value);\n md.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(md.digest().data).buffer;\n }\n\n const valueBuf = this.toBuf(value);\n return await this.subtle.digest({ name: this.toWebCryptoAlgorithm(algorithm) }, valueBuf);\n }\n\n async hmac(value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n if (this.isIE && algorithm === 'sha512') {\n const hmac = (forge as any).hmac.create();\n const keyBytes = this.toByteString(key);\n const valueBytes = this.toByteString(value);\n hmac.start(algorithm, keyBytes);\n hmac.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(hmac.digest().data).buffer;\n }\n\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', key, signingAlgorithm, false, ['sign']);\n return await this.subtle.sign(signingAlgorithm, impKey, value);\n }\n\n // Safely compare two values in a way that protects against timing attacks (Double HMAC Verification).\n // ref: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n // ref: https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy\n async compare(a: ArrayBuffer, b: ArrayBuffer): Promise {\n const macKey = await this.randomBytes(32);\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: 'SHA-256' },\n };\n const impKey = await this.subtle.importKey('raw', macKey, signingAlgorithm, false, ['sign']);\n const mac1 = await this.subtle.sign(signingAlgorithm, impKey, a);\n const mac2 = await this.subtle.sign(signingAlgorithm, impKey, b);\n\n if (mac1.byteLength !== mac2.byteLength) {\n return false;\n }\n\n const arr1 = new Uint8Array(mac1);\n const arr2 = new Uint8Array(mac2);\n for (let i = 0; i < arr2.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n hmacFast(value: string, key: string, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n const hmac = (forge as any).hmac.create();\n hmac.start(algorithm, key);\n hmac.update(value);\n const bytes = hmac.digest().getBytes();\n return Promise.resolve(bytes);\n }\n\n async compareFast(a: string, b: string): Promise {\n const rand = await this.randomBytes(32);\n const bytes = new Uint32Array(rand);\n const buffer = forge.util.createBuffer();\n for (let i = 0; i < bytes.length; i++) {\n buffer.putInt32(bytes[i]);\n }\n const macKey = buffer.getBytes();\n\n const hmac = (forge as any).hmac.create();\n hmac.start('sha256', macKey);\n hmac.update(a);\n const mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(b);\n const mac2 = hmac.digest().getBytes();\n\n const equals = mac1 === mac2;\n return equals;\n }\n\n async aesEncrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['encrypt']);\n return await this.subtle.encrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n aesDecryptFastParameters(data: string, iv: string, mac: string, key: SymmetricCryptoKey):\n DecryptParameters {\n const p = new DecryptParameters();\n if (key.meta != null) {\n p.encKey = key.meta.encKeyByteString;\n p.macKey = key.meta.macKeyByteString;\n }\n\n if (p.encKey == null) {\n p.encKey = forge.util.decode64(key.encKeyB64);\n }\n p.data = forge.util.decode64(data);\n p.iv = forge.util.decode64(iv);\n p.macData = p.iv + p.data;\n if (p.macKey == null && key.macKeyB64 != null) {\n p.macKey = forge.util.decode64(key.macKeyB64);\n }\n if (mac != null) {\n p.mac = forge.util.decode64(mac);\n }\n\n // cache byte string keys for later\n if (key.meta == null) {\n key.meta = {};\n }\n if (key.meta.encKeyByteString == null) {\n key.meta.encKeyByteString = p.encKey;\n }\n if (p.macKey != null && key.meta.macKeyByteString == null) {\n key.meta.macKeyByteString = p.macKey;\n }\n\n return p;\n }\n\n aesDecryptFast(parameters: DecryptParameters): Promise {\n const dataBuffer = (forge as any).util.createBuffer(parameters.data);\n const decipher = (forge as any).cipher.createDecipher('AES-CBC', parameters.encKey);\n decipher.start({ iv: parameters.iv });\n decipher.update(dataBuffer);\n decipher.finish();\n const val = decipher.output.toString('utf8');\n return Promise.resolve(val);\n }\n\n async aesDecrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['decrypt']);\n return await this.subtle.decrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('spki', publicKey, rsaParams, false, ['encrypt']);\n return await this.subtle.encrypt(rsaParams, impKey, data);\n }\n\n async rsaDecrypt(data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, false, ['decrypt']);\n return await this.subtle.decrypt(rsaParams, impKey, data);\n }\n\n async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise {\n const rsaParams = {\n name: 'RSA-OAEP',\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const impPrivateKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, true, ['decrypt']);\n const jwkPrivateKey = await this.subtle.exportKey('jwk', impPrivateKey);\n const jwkPublicKeyParams = {\n kty: 'RSA',\n e: jwkPrivateKey.e,\n n: jwkPrivateKey.n,\n alg: 'RSA-OAEP',\n ext: true,\n };\n const impPublicKey = await this.subtle.importKey('jwk', jwkPublicKeyParams, rsaParams, true, ['encrypt']);\n return await this.subtle.exportKey('spki', impPublicKey);\n }\n\n async rsaGenerateKeyPair(length: 1024 | 2048 | 4096): Promise<[ArrayBuffer, ArrayBuffer]> {\n const rsaParams = {\n name: 'RSA-OAEP',\n modulusLength: length,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const keyPair = (await this.subtle.generateKey(rsaParams, true, ['encrypt', 'decrypt'])) as CryptoKeyPair;\n const publicKey = await this.subtle.exportKey('spki', keyPair.publicKey);\n const privateKey = await this.subtle.exportKey('pkcs8', keyPair.privateKey);\n return [publicKey, privateKey];\n }\n\n randomBytes(length: number): Promise {\n const arr = new Uint8Array(length);\n this.crypto.getRandomValues(arr);\n return Promise.resolve(arr.buffer);\n }\n\n private toBuf(value: string | ArrayBuffer): ArrayBuffer {\n let buf: ArrayBuffer;\n if (typeof (value) === 'string') {\n buf = Utils.fromUtf8ToArray(value).buffer;\n } else {\n buf = value;\n }\n return buf;\n }\n\n private toByteString(value: string | ArrayBuffer): string {\n let bytes: string;\n if (typeof (value) === 'string') {\n bytes = forge.util.encodeUtf8(value);\n } else {\n bytes = Utils.fromBufferToByteString(value);\n }\n return bytes;\n }\n\n private toWebCryptoAlgorithm(algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): string {\n if (algorithm === 'md5') {\n throw new Error('MD5 is not supported in WebCrypto.');\n }\n return algorithm === 'sha1' ? 'SHA-1' : algorithm === 'sha256' ? 'SHA-256' : 'SHA-512';\n }\n}\n","export class DecryptParameters {\n encKey: T;\n data: T;\n iv: T;\n macKey: T;\n mac: T;\n macData: T;\n}\n","import { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\n\nexport abstract class FileUploadService {\n uploadSendFile: (uploadData: SendFileUploadDataResponse, fileName: EncString,\n encryptedFileData: EncArrayBuffer) => Promise;\n uploadCipherAttachment: (admin: boolean, uploadData: AttachmentUploadDataResponse, fileName: EncString,\n encryptedFileData: EncArrayBuffer) => Promise;\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n Injectable,\n Injector,\n} from '@angular/core';\nimport * as jq from 'jquery';\nimport { first } from 'rxjs/operators';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { ModalRef } from 'jslib-angular/components/modal/modal.ref';\nimport { ModalService as BaseModalService } from 'jslib-angular/services/modal.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Injectable()\nexport class ModalService extends BaseModalService {\n el: any = null;\n modalOpen: boolean = false;\n\n constructor(componentFactoryResolver: ComponentFactoryResolver, applicationRef: ApplicationRef,\n injector: Injector, private messagingService: MessagingService) {\n super(componentFactoryResolver, applicationRef, injector);\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n modalRef.onCreated.pipe(first()).subscribe(() => {\n const modals = Array.from(document.querySelectorAll('.modal'));\n if (modals.length > 0) {\n this.el = jq(modals[0]);\n this.el.modal('show');\n\n this.el.on('show.bs.modal', () => {\n modalRef.show();\n this.messagingService.send('modalShow');\n });\n this.el.on('shown.bs.modal', () => {\n modalRef.shown();\n this.messagingService.send('modalShown');\n if (!Utils.isMobileBrowser) {\n this.el.find('*[appAutoFocus]').focus();\n }\n });\n this.el.on('hide.bs.modal', () => {\n this.messagingService.send('modalClose');\n });\n this.el.on('hidden.bs.modal', () => {\n modalRef.closed();\n this.messagingService.send('modalClosed');\n });\n }\n });\n\n modalRef.onClose.pipe(first()).subscribe(() => {\n if (this.el != null) {\n this.el.modal('hide');\n }\n });\n }\n}\n"],"sourceRoot":""}