@decaf-ts/integrations 0.14.0 → 0.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/dist/integrations.cjs +3317 -2
- package/dist/integrations.js +3665 -2
- package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/azure/index.cjs +2 -2
- package/lib/cjs/blob/core/BlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/core/BlobErrors.cjs +2 -2
- package/lib/cjs/blob/core/BlobKey.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreFactory.cjs +2 -2
- package/lib/cjs/blob/core/BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/core/BlobTypes.cjs +2 -2
- package/lib/cjs/blob/core/BlobValue.cjs +2 -2
- package/lib/cjs/blob/core/index.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/gcp/index.cjs +2 -2
- package/lib/cjs/blob/index.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/local/index.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/memory/index.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobEnvironment.cjs +2 -2
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +2 -2
- package/lib/cjs/blob/s3/index.cjs +2 -2
- package/lib/cjs/calendar/CalendarService.cjs +2 -2
- package/lib/cjs/calendar/environment.cjs +2 -2
- package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +2 -2
- package/lib/cjs/calendar/google-calendar/index.cjs +2 -2
- package/lib/cjs/calendar/index.cjs +2 -2
- package/lib/cjs/calendar/types.cjs +2 -2
- package/lib/cjs/calendar/validators/cron.cjs +2 -2
- package/lib/cjs/calendar/writers/CalendarFsWriter.cjs +2 -2
- package/lib/cjs/calendar/writers/CalenderDownloader.cjs +2 -2
- package/lib/cjs/calendar/writers/ICalendarWriter.cjs +2 -2
- package/lib/cjs/comms/discord/DiscordService.cjs +2 -2
- package/lib/cjs/comms/discord/index.cjs +2 -2
- package/lib/cjs/comms/email/EmailService.cjs +2 -2
- package/lib/cjs/comms/email/index.cjs +2 -2
- package/lib/cjs/comms/email/mime.cjs +2 -2
- package/lib/cjs/comms/email/smtp.cjs +2 -2
- package/lib/cjs/comms/environment.cjs +2 -2
- package/lib/cjs/comms/gmail/GmailService.cjs +2 -2
- package/lib/cjs/comms/gmail/index.cjs +2 -2
- package/lib/cjs/comms/index.cjs +2 -2
- package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +2 -2
- package/lib/cjs/comms/outlook/index.cjs +2 -2
- package/lib/cjs/comms/slack/SlackService.cjs +2 -2
- package/lib/cjs/comms/slack/index.cjs +2 -2
- package/lib/cjs/comms/teams/TeamsService.cjs +2 -2
- package/lib/cjs/comms/teams/index.cjs +2 -2
- package/lib/cjs/comms/telegram/TelegramService.cjs +2 -2
- package/lib/cjs/comms/telegram/index.cjs +2 -2
- package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +2 -2
- package/lib/cjs/comms/whatsapp/index.cjs +2 -2
- package/lib/cjs/devops/environment.cjs +2 -2
- package/lib/cjs/devops/github/GithubService.cjs +2 -2
- package/lib/cjs/devops/github/index.cjs +2 -2
- package/lib/cjs/devops/gitlab/GitlabService.cjs +2 -2
- package/lib/cjs/devops/gitlab/index.cjs +2 -2
- package/lib/cjs/devops/index.cjs +2 -2
- package/lib/cjs/docker/DockerComposeService.cjs +2 -2
- package/lib/cjs/docker/index.cjs +2 -2
- package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs +2 -2
- package/lib/cjs/feature-flags/constants.cjs +2 -2
- package/lib/cjs/feature-flags/decorators.cjs +2 -2
- package/lib/cjs/feature-flags/environment.cjs +2 -2
- package/lib/cjs/feature-flags/index.cjs +2 -2
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -2
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -2
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs +2 -2
- package/lib/cjs/feature-flags/readers/index.cjs +2 -2
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +2 -2
- package/lib/cjs/feature-flags/types.cjs +2 -2
- package/lib/cjs/feature-flags/utils.cjs +2 -2
- package/lib/cjs/index.cjs +5 -5
- package/lib/cjs/io/airtable/AirtableService.cjs +2 -2
- package/lib/cjs/io/airtable/index.cjs +2 -2
- package/lib/cjs/io/confluence/ConfluenceService.cjs +2 -2
- package/lib/cjs/io/confluence/index.cjs +2 -2
- package/lib/cjs/io/environment.cjs +2 -2
- package/lib/cjs/io/google-docs/GoogleDocsService.cjs +2 -2
- package/lib/cjs/io/google-docs/index.cjs +2 -2
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +2 -2
- package/lib/cjs/io/google-sheets/index.cjs +2 -2
- package/lib/cjs/io/graphql/GraphqlService.cjs +2 -2
- package/lib/cjs/io/graphql/index.cjs +2 -2
- package/lib/cjs/io/index.cjs +2 -2
- package/lib/cjs/io/jira/JiraService.cjs +2 -2
- package/lib/cjs/io/jira/index.cjs +2 -2
- package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +2 -2
- package/lib/cjs/io/microsoft-excel/index.cjs +2 -2
- package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +2 -2
- package/lib/cjs/io/microsoft-sharepoint/index.cjs +2 -2
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +2 -2
- package/lib/cjs/io/spreadsheet/index.cjs +2 -2
- package/lib/cjs/keycloak/broker.cjs +2 -2
- package/lib/cjs/keycloak/index.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakService.cjs +2 -2
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs +2 -2
- package/lib/cjs/keycloak/services/index.cjs +2 -2
- package/lib/cjs/keycloak/services/runtime.cjs +2 -2
- package/lib/cjs/keycloak/types.cjs +2 -2
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs +2 -2
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs +2 -2
- package/lib/cjs/kibana/builders/index.cjs +2 -2
- package/lib/cjs/kibana/helpers.cjs +2 -2
- package/lib/cjs/kibana/index.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaAuthService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaRoleService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs +2 -2
- package/lib/cjs/kibana/services/KibanaUserService.cjs +2 -2
- package/lib/cjs/kibana/services/index.cjs +2 -2
- package/lib/cjs/kibana/services/runtime.cjs +2 -2
- package/lib/cjs/kibana/types.cjs +2 -2
- package/lib/cjs/loader/ObjectLoader.cjs +2 -2
- package/lib/cjs/loader/assets.cjs +2 -2
- package/lib/cjs/loader/config.cjs +2 -2
- package/lib/cjs/loader/families.cjs +2 -2
- package/lib/cjs/loader/index.cjs +2 -2
- package/lib/cjs/loader/nest.cjs +2 -2
- package/lib/cjs/loader/types.cjs +2 -2
- package/lib/cjs/namespaces/index.cjs +2 -2
- package/lib/cjs/namespaces/models/authorization-model.cjs +2 -2
- package/lib/cjs/namespaces/models/credential.model.cjs +2 -2
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/group.model.cjs +2 -2
- package/lib/cjs/namespaces/models/index.cjs +2 -2
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -2
- package/lib/cjs/namespaces/models/permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/principal.model.cjs +2 -2
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -2
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -2
- package/lib/cjs/namespaces/models/role.model.cjs +2 -2
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -2
- package/lib/cjs/namespaces/models/tenant.model.cjs +2 -2
- package/lib/cjs/namespaces/models/user.model.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +2 -2
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +2 -2
- package/lib/cjs/namespaces/rls/index.cjs +2 -2
- package/lib/cjs/namespaces/rls/principal-resolver.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls.constants.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls.template.cjs +2 -2
- package/lib/cjs/namespaces/rls/rls.types.cjs +2 -2
- package/lib/cjs/namespaces/rls/session-binding.cjs +2 -2
- package/lib/cjs/namespaces/services/authz.service.cjs +2 -2
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +2 -2
- package/lib/cjs/namespaces/services/credential.service.cjs +2 -2
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/group.service.cjs +2 -2
- package/lib/cjs/namespaces/services/index.cjs +2 -2
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/org-unit.service.cjs +2 -2
- package/lib/cjs/namespaces/services/permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/principal.service.cjs +2 -2
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role-permission.service.cjs +2 -2
- package/lib/cjs/namespaces/services/role.service.cjs +2 -2
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +2 -2
- package/lib/cjs/namespaces/services/system-management.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +2 -2
- package/lib/cjs/namespaces/services/tenant.service.cjs +2 -2
- package/lib/cjs/namespaces/services/user.service.cjs +2 -2
- package/lib/cjs/namespaces/types.cjs +2 -2
- package/lib/cjs/namespaces/utils.cjs +2 -2
- package/lib/cjs/nest/decorators.cjs +2 -2
- package/lib/cjs/nest/index.cjs +2 -2
- package/lib/cjs/nest/keycloakAuthHandler.cjs +2 -2
- package/lib/cjs/nest/keycloakModule.cjs +2 -2
- package/lib/cjs/nest/logging.cjs +2 -2
- package/lib/cjs/nest/types.cjs +2 -2
- package/lib/cjs/nest/utils.cjs +2 -2
- package/lib/cjs/plugins/contract.cjs +2 -2
- package/lib/cjs/plugins/index.cjs +2 -2
- package/lib/cjs/plugins/kibana/host.cjs +2 -2
- package/lib/cjs/plugins/kibana/index.cjs +2 -2
- package/lib/cjs/plugins/kibana/installer.cjs +2 -2
- package/lib/cjs/plugins/kibana/manifest.cjs +2 -2
- package/lib/cjs/plugins/kibana/templates.cjs +2 -2
- package/lib/cjs/plugins/kibana/types.cjs +2 -2
- package/lib/cjs/plugins/superset/host.cjs +2 -2
- package/lib/cjs/plugins/superset/index.cjs +2 -2
- package/lib/cjs/plugins/superset/installer.cjs +2 -2
- package/lib/cjs/plugins/superset/manifest.cjs +2 -2
- package/lib/cjs/plugins/superset/templates.cjs +2 -2
- package/lib/cjs/plugins/superset/types.cjs +2 -2
- package/lib/cjs/redis/RedisContextLock.cjs +2 -2
- package/lib/cjs/redis/RedisDispatch.cjs +2 -2
- package/lib/cjs/redis/RedisPaginator.cjs +2 -2
- package/lib/cjs/redis/RedisStatement.cjs +2 -2
- package/lib/cjs/redis/adapter.cjs +2 -2
- package/lib/cjs/redis/constants.cjs +2 -2
- package/lib/cjs/redis/handlers.cjs +2 -2
- package/lib/cjs/redis/index.cjs +2 -2
- package/lib/cjs/redis/serialization.cjs +2 -2
- package/lib/cjs/redis/types.cjs +2 -2
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -2
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/aws/index.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/azure/index.cjs +2 -2
- package/lib/cjs/secrets/core/ClientBasedSecretService.cjs +2 -2
- package/lib/cjs/secrets/core/SecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/core/SecretErrors.cjs +2 -2
- package/lib/cjs/secrets/core/SecretName.cjs +2 -2
- package/lib/cjs/secrets/core/SecretReference.cjs +3 -2
- package/lib/cjs/secrets/core/SecretSerialization.cjs +2 -2
- package/lib/cjs/secrets/core/SecretService.cjs +2 -2
- package/lib/cjs/secrets/core/SecretTypes.cjs +2 -2
- package/lib/cjs/secrets/core/index.cjs +2 -2
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/fs/FsSecretService.cjs +2 -2
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/fs/index.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -2
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/gcp/index.cjs +2 -2
- package/lib/cjs/secrets/index.cjs +2 -2
- package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs +34 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs +479 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs +4 -0
- package/lib/cjs/secrets/kubernetes/index.cjs +27 -0
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretService.cjs +2 -2
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/model/Secret.cjs +2 -2
- package/lib/cjs/secrets/model/index.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -2
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/onepassword/index.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -2
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs +2 -2
- package/lib/cjs/secrets/vault/index.cjs +2 -2
- package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs +2 -2
- package/lib/cjs/sftp/aws/AwsSftpService.cjs +2 -2
- package/lib/cjs/sftp/aws/index.cjs +24 -0
- package/lib/cjs/sftp/core/SftpEnvironment.cjs +2 -2
- package/lib/cjs/sftp/core/SftpSource.cjs +2 -2
- package/lib/cjs/sftp/core/index.cjs +2 -2
- package/lib/cjs/sftp/index.cjs +2 -2
- package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs +2 -2
- package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs +2 -2
- package/lib/cjs/sftp/ssh2/index.cjs +24 -0
- package/lib/cjs/shared/environmentValue.cjs +2 -2
- package/lib/cjs/shared/http/HttpApiService.cjs +2 -2
- package/lib/cjs/shared/http/hermeticBoot.cjs +2 -2
- package/lib/cjs/shared/http/index.cjs +2 -2
- package/lib/cjs/shared/runtime.cjs +2 -2
- package/lib/cjs/user-requests/index.cjs +2 -2
- package/lib/cjs/utils.cjs +2 -2
- package/lib/esm/blob/azure/AzureBlobEnvironment.js +1 -1
- package/lib/esm/blob/azure/AzureBlobStoreService.js +1 -1
- package/lib/esm/blob/azure/index.js +1 -1
- package/lib/esm/blob/core/BlobEnvironment.js +1 -1
- package/lib/esm/blob/core/BlobErrors.js +1 -1
- package/lib/esm/blob/core/BlobKey.js +1 -1
- package/lib/esm/blob/core/BlobStoreFactory.js +1 -1
- package/lib/esm/blob/core/BlobStoreService.js +1 -1
- package/lib/esm/blob/core/BlobTypes.js +1 -1
- package/lib/esm/blob/core/BlobValue.js +1 -1
- package/lib/esm/blob/core/index.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobEnvironment.js +1 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js +1 -1
- package/lib/esm/blob/gcp/index.js +1 -1
- package/lib/esm/blob/index.js +1 -1
- package/lib/esm/blob/local/LocalBlobEnvironment.js +1 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js +1 -1
- package/lib/esm/blob/local/index.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobEnvironment.js +1 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js +1 -1
- package/lib/esm/blob/memory/index.js +1 -1
- package/lib/esm/blob/s3/MinioBlobEnvironment.js +1 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/R2BlobEnvironment.js +1 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3BlobEnvironment.js +1 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js +1 -1
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +1 -1
- package/lib/esm/blob/s3/index.js +1 -1
- package/lib/esm/calendar/CalendarService.js +1 -1
- package/lib/esm/calendar/environment.js +1 -1
- package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +1 -1
- package/lib/esm/calendar/google-calendar/index.js +1 -1
- package/lib/esm/calendar/index.js +1 -1
- package/lib/esm/calendar/types.js +1 -1
- package/lib/esm/calendar/validators/cron.js +1 -1
- package/lib/esm/calendar/writers/CalendarFsWriter.js +1 -1
- package/lib/esm/calendar/writers/CalenderDownloader.js +1 -1
- package/lib/esm/calendar/writers/ICalendarWriter.js +1 -1
- package/lib/esm/comms/discord/DiscordService.js +1 -1
- package/lib/esm/comms/discord/index.js +1 -1
- package/lib/esm/comms/email/EmailService.js +1 -1
- package/lib/esm/comms/email/index.js +1 -1
- package/lib/esm/comms/email/mime.js +1 -1
- package/lib/esm/comms/email/smtp.js +1 -1
- package/lib/esm/comms/environment.js +1 -1
- package/lib/esm/comms/gmail/GmailService.js +1 -1
- package/lib/esm/comms/gmail/index.js +1 -1
- package/lib/esm/comms/index.js +1 -1
- package/lib/esm/comms/outlook/MicrosoftOutlookService.js +1 -1
- package/lib/esm/comms/outlook/index.js +1 -1
- package/lib/esm/comms/slack/SlackService.js +1 -1
- package/lib/esm/comms/slack/index.js +1 -1
- package/lib/esm/comms/teams/TeamsService.js +1 -1
- package/lib/esm/comms/teams/index.js +1 -1
- package/lib/esm/comms/telegram/TelegramService.js +1 -1
- package/lib/esm/comms/telegram/index.js +1 -1
- package/lib/esm/comms/whatsapp/WhatsAppService.js +1 -1
- package/lib/esm/comms/whatsapp/index.js +1 -1
- package/lib/esm/devops/environment.js +1 -1
- package/lib/esm/devops/github/GithubService.js +1 -1
- package/lib/esm/devops/github/index.js +1 -1
- package/lib/esm/devops/gitlab/GitlabService.js +1 -1
- package/lib/esm/devops/gitlab/index.js +1 -1
- package/lib/esm/devops/index.js +1 -1
- package/lib/esm/docker/DockerComposeService.js +1 -1
- package/lib/esm/docker/index.js +1 -1
- package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js +1 -1
- package/lib/esm/feature-flags/constants.js +1 -1
- package/lib/esm/feature-flags/decorators.js +1 -1
- package/lib/esm/feature-flags/environment.js +1 -1
- package/lib/esm/feature-flags/index.js +1 -1
- package/lib/esm/feature-flags/models/FeatureFlag.model.js +1 -1
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +1 -1
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js +1 -1
- package/lib/esm/feature-flags/readers/index.js +1 -1
- package/lib/esm/feature-flags/services/FeatureFlag.service.js +1 -1
- package/lib/esm/feature-flags/types.js +1 -1
- package/lib/esm/feature-flags/utils.js +1 -1
- package/lib/esm/index.js +4 -4
- package/lib/esm/io/airtable/AirtableService.js +1 -1
- package/lib/esm/io/airtable/index.js +1 -1
- package/lib/esm/io/confluence/ConfluenceService.js +1 -1
- package/lib/esm/io/confluence/index.js +1 -1
- package/lib/esm/io/environment.js +1 -1
- package/lib/esm/io/google-docs/GoogleDocsService.js +1 -1
- package/lib/esm/io/google-docs/index.js +1 -1
- package/lib/esm/io/google-sheets/GoogleSheetsService.js +1 -1
- package/lib/esm/io/google-sheets/index.js +1 -1
- package/lib/esm/io/graphql/GraphqlService.js +1 -1
- package/lib/esm/io/graphql/index.js +1 -1
- package/lib/esm/io/index.js +1 -1
- package/lib/esm/io/jira/JiraService.js +1 -1
- package/lib/esm/io/jira/index.js +1 -1
- package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +1 -1
- package/lib/esm/io/microsoft-excel/index.js +1 -1
- package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +1 -1
- package/lib/esm/io/microsoft-sharepoint/index.js +1 -1
- package/lib/esm/io/spreadsheet/SpreadsheetService.js +1 -1
- package/lib/esm/io/spreadsheet/index.js +1 -1
- package/lib/esm/keycloak/broker.js +1 -1
- package/lib/esm/keycloak/index.js +1 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakService.js +1 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js +1 -1
- package/lib/esm/keycloak/services/index.js +1 -1
- package/lib/esm/keycloak/services/runtime.js +1 -1
- package/lib/esm/keycloak/types.js +1 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js +1 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js +1 -1
- package/lib/esm/kibana/builders/index.js +1 -1
- package/lib/esm/kibana/helpers.js +1 -1
- package/lib/esm/kibana/index.js +1 -1
- package/lib/esm/kibana/services/KibanaAuthService.js +1 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js +1 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js +1 -1
- package/lib/esm/kibana/services/KibanaRoleService.js +1 -1
- package/lib/esm/kibana/services/KibanaService.js +1 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js +1 -1
- package/lib/esm/kibana/services/KibanaUserService.js +1 -1
- package/lib/esm/kibana/services/index.js +1 -1
- package/lib/esm/kibana/services/runtime.js +1 -1
- package/lib/esm/kibana/types.js +1 -1
- package/lib/esm/loader/ObjectLoader.js +1 -1
- package/lib/esm/loader/assets.js +1 -1
- package/lib/esm/loader/config.js +1 -1
- package/lib/esm/loader/families.js +1 -1
- package/lib/esm/loader/index.js +1 -1
- package/lib/esm/loader/nest.js +1 -1
- package/lib/esm/loader/types.js +1 -1
- package/lib/esm/namespaces/index.js +1 -1
- package/lib/esm/namespaces/models/authorization-model.js +1 -1
- package/lib/esm/namespaces/models/credential.model.js +1 -1
- package/lib/esm/namespaces/models/effective-permission.model.js +1 -1
- package/lib/esm/namespaces/models/group-membership.model.js +1 -1
- package/lib/esm/namespaces/models/group.model.js +1 -1
- package/lib/esm/namespaces/models/index.js +1 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js +1 -1
- package/lib/esm/namespaces/models/org-unit.model.js +1 -1
- package/lib/esm/namespaces/models/permission.model.js +1 -1
- package/lib/esm/namespaces/models/principal.model.js +1 -1
- package/lib/esm/namespaces/models/protected-resource.model.js +1 -1
- package/lib/esm/namespaces/models/resource-grant.model.js +1 -1
- package/lib/esm/namespaces/models/role-assignment.model.js +1 -1
- package/lib/esm/namespaces/models/role-permission.model.js +1 -1
- package/lib/esm/namespaces/models/role.model.js +1 -1
- package/lib/esm/namespaces/models/storage-binding.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js +1 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js +1 -1
- package/lib/esm/namespaces/models/tenant.model.js +1 -1
- package/lib/esm/namespaces/models/user.model.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.models.js +1 -1
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1 -1
- package/lib/esm/namespaces/rls/index.js +1 -1
- package/lib/esm/namespaces/rls/principal-resolver.js +1 -1
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js +1 -1
- package/lib/esm/namespaces/rls/rls.constants.js +1 -1
- package/lib/esm/namespaces/rls/rls.template.js +1 -1
- package/lib/esm/namespaces/rls/rls.types.js +1 -1
- package/lib/esm/namespaces/rls/session-binding.js +1 -1
- package/lib/esm/namespaces/services/authz.service.js +1 -1
- package/lib/esm/namespaces/services/bootstrap.service.js +1 -1
- package/lib/esm/namespaces/services/credential.service.js +1 -1
- package/lib/esm/namespaces/services/effective-permission.service.js +1 -1
- package/lib/esm/namespaces/services/group-membership.service.js +1 -1
- package/lib/esm/namespaces/services/group.service.js +1 -1
- package/lib/esm/namespaces/services/index.js +1 -1
- package/lib/esm/namespaces/services/inheritance-block.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-closure.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-membership.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit-profile.service.js +1 -1
- package/lib/esm/namespaces/services/org-unit.service.js +1 -1
- package/lib/esm/namespaces/services/permission.service.js +1 -1
- package/lib/esm/namespaces/services/principal.service.js +1 -1
- package/lib/esm/namespaces/services/protected-resource.service.js +1 -1
- package/lib/esm/namespaces/services/resource-grant.service.js +1 -1
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +1 -1
- package/lib/esm/namespaces/services/role-assignment.service.js +1 -1
- package/lib/esm/namespaces/services/role-permission.service.js +1 -1
- package/lib/esm/namespaces/services/role.service.js +1 -1
- package/lib/esm/namespaces/services/storage-binding.service.js +1 -1
- package/lib/esm/namespaces/services/system-management.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-membership.service.js +1 -1
- package/lib/esm/namespaces/services/tenant-profile.service.js +1 -1
- package/lib/esm/namespaces/services/tenant.service.js +1 -1
- package/lib/esm/namespaces/services/user.service.js +1 -1
- package/lib/esm/namespaces/types.js +1 -1
- package/lib/esm/namespaces/utils.js +1 -1
- package/lib/esm/nest/decorators.js +1 -1
- package/lib/esm/nest/index.js +1 -1
- package/lib/esm/nest/keycloakAuthHandler.js +1 -1
- package/lib/esm/nest/keycloakModule.js +1 -1
- package/lib/esm/nest/logging.js +1 -1
- package/lib/esm/nest/types.js +1 -1
- package/lib/esm/nest/utils.js +1 -1
- package/lib/esm/plugins/contract.js +1 -1
- package/lib/esm/plugins/index.js +1 -1
- package/lib/esm/plugins/kibana/host.js +1 -1
- package/lib/esm/plugins/kibana/index.js +1 -1
- package/lib/esm/plugins/kibana/installer.js +1 -1
- package/lib/esm/plugins/kibana/manifest.js +1 -1
- package/lib/esm/plugins/kibana/templates.js +1 -1
- package/lib/esm/plugins/kibana/types.js +1 -1
- package/lib/esm/plugins/superset/host.js +1 -1
- package/lib/esm/plugins/superset/index.js +1 -1
- package/lib/esm/plugins/superset/installer.js +1 -1
- package/lib/esm/plugins/superset/manifest.js +1 -1
- package/lib/esm/plugins/superset/templates.js +1 -1
- package/lib/esm/plugins/superset/types.js +1 -1
- package/lib/esm/redis/RedisContextLock.js +1 -1
- package/lib/esm/redis/RedisDispatch.js +1 -1
- package/lib/esm/redis/RedisPaginator.js +1 -1
- package/lib/esm/redis/RedisStatement.js +1 -1
- package/lib/esm/redis/adapter.js +1 -1
- package/lib/esm/redis/constants.js +1 -1
- package/lib/esm/redis/handlers.js +1 -1
- package/lib/esm/redis/index.js +1 -1
- package/lib/esm/redis/serialization.js +1 -1
- package/lib/esm/redis/types.js +1 -1
- package/lib/esm/secrets/InfraCredentialBootstrap.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretEnvironment.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretService.js +1 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/aws/index.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +1 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/azure/AzureSecretEnvironment.js +1 -1
- package/lib/esm/secrets/azure/index.js +1 -1
- package/lib/esm/secrets/core/ClientBasedSecretService.js +1 -1
- package/lib/esm/secrets/core/SecretEnvironment.js +1 -1
- package/lib/esm/secrets/core/SecretErrors.js +1 -1
- package/lib/esm/secrets/core/SecretName.js +1 -1
- package/lib/esm/secrets/core/SecretReference.js +2 -1
- package/lib/esm/secrets/core/SecretSerialization.js +1 -1
- package/lib/esm/secrets/core/SecretService.js +1 -1
- package/lib/esm/secrets/core/SecretTypes.js +1 -1
- package/lib/esm/secrets/core/index.js +1 -1
- package/lib/esm/secrets/fs/FsSecretEnvironment.js +1 -1
- package/lib/esm/secrets/fs/FsSecretService.js +1 -1
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/fs/index.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretEnvironment.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js +1 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js +1 -1
- package/lib/esm/secrets/gcp/index.js +1 -1
- package/lib/esm/secrets/index.js +1 -1
- package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js +30 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretService.js +474 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js +9 -0
- package/lib/esm/secrets/kubernetes/index.js +10 -0
- package/lib/esm/secrets/model/ModelSecretCrypto.js +1 -1
- package/lib/esm/secrets/model/ModelSecretEnvironment.js +1 -1
- package/lib/esm/secrets/model/ModelSecretService.js +1 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/model/Secret.js +1 -1
- package/lib/esm/secrets/model/index.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +1 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/onepassword/index.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretEnvironment.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretService.js +1 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js +1 -1
- package/lib/esm/secrets/vault/index.js +1 -1
- package/lib/esm/sftp/aws/AwsSftpEnvironment.js +1 -1
- package/lib/esm/sftp/aws/AwsSftpService.js +1 -1
- package/lib/esm/sftp/aws/index.js +7 -0
- package/lib/esm/sftp/core/SftpEnvironment.js +1 -1
- package/lib/esm/sftp/core/SftpSource.js +1 -1
- package/lib/esm/sftp/core/index.js +1 -1
- package/lib/esm/sftp/index.js +1 -1
- package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js +1 -1
- package/lib/esm/sftp/ssh2/Ssh2SftpService.js +1 -1
- package/lib/esm/sftp/ssh2/index.js +7 -0
- package/lib/esm/shared/environmentValue.js +1 -1
- package/lib/esm/shared/http/HttpApiService.js +1 -1
- package/lib/esm/shared/http/hermeticBoot.js +1 -1
- package/lib/esm/shared/http/index.js +1 -1
- package/lib/esm/shared/runtime.js +1 -1
- package/lib/esm/user-requests/index.js +1 -1
- package/lib/esm/utils.js +1 -1
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/secrets/core/SecretTypes.d.cts +13 -1
- package/lib/types/secrets/core/SecretTypes.d.mts +13 -1
- package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.cts +34 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.mts +34 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretService.d.cts +45 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretService.d.mts +45 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.cts +49 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.mts +49 -0
- package/lib/types/secrets/kubernetes/index.d.cts +9 -0
- package/lib/types/secrets/kubernetes/index.d.mts +9 -0
- package/lib/types/sftp/aws/index.d.cts +6 -0
- package/lib/types/sftp/aws/index.d.mts +6 -0
- package/lib/types/sftp/ssh2/index.d.cts +6 -0
- package/lib/types/sftp/ssh2/index.d.mts +6 -0
- package/package.json +180 -55
- package/dist/integrations.cjs.map +0 -1
- package/dist/integrations.js.map +0 -1
- package/lib/cjs/blob/azure/AzureBlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/azure/index.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobErrors.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobKey.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobStoreFactory.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobTypes.cjs.map +0 -1
- package/lib/cjs/blob/core/BlobValue.cjs.map +0 -1
- package/lib/cjs/blob/core/index.cjs.map +0 -1
- package/lib/cjs/blob/gcp/GcsBlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/gcp/index.cjs.map +0 -1
- package/lib/cjs/blob/index.cjs.map +0 -1
- package/lib/cjs/blob/local/LocalBlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/local/LocalBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/local/index.cjs.map +0 -1
- package/lib/cjs/blob/memory/MemoryBlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/memory/MemoryBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/memory/index.cjs.map +0 -1
- package/lib/cjs/blob/s3/MinioBlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/s3/MinioBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/R2BlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/s3/R2BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/S3BlobEnvironment.cjs.map +0 -1
- package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +0 -1
- package/lib/cjs/blob/s3/index.cjs.map +0 -1
- package/lib/cjs/calendar/CalendarService.cjs.map +0 -1
- package/lib/cjs/calendar/environment.cjs.map +0 -1
- package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +0 -1
- package/lib/cjs/calendar/google-calendar/index.cjs.map +0 -1
- package/lib/cjs/calendar/index.cjs.map +0 -1
- package/lib/cjs/calendar/types.cjs.map +0 -1
- package/lib/cjs/calendar/validators/cron.cjs.map +0 -1
- package/lib/cjs/calendar/writers/CalendarFsWriter.cjs.map +0 -1
- package/lib/cjs/calendar/writers/CalenderDownloader.cjs.map +0 -1
- package/lib/cjs/calendar/writers/ICalendarWriter.cjs.map +0 -1
- package/lib/cjs/comms/discord/DiscordService.cjs.map +0 -1
- package/lib/cjs/comms/discord/index.cjs.map +0 -1
- package/lib/cjs/comms/email/EmailService.cjs.map +0 -1
- package/lib/cjs/comms/email/index.cjs.map +0 -1
- package/lib/cjs/comms/email/mime.cjs.map +0 -1
- package/lib/cjs/comms/email/smtp.cjs.map +0 -1
- package/lib/cjs/comms/environment.cjs.map +0 -1
- package/lib/cjs/comms/gmail/GmailService.cjs.map +0 -1
- package/lib/cjs/comms/gmail/index.cjs.map +0 -1
- package/lib/cjs/comms/index.cjs.map +0 -1
- package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +0 -1
- package/lib/cjs/comms/outlook/index.cjs.map +0 -1
- package/lib/cjs/comms/slack/SlackService.cjs.map +0 -1
- package/lib/cjs/comms/slack/index.cjs.map +0 -1
- package/lib/cjs/comms/teams/TeamsService.cjs.map +0 -1
- package/lib/cjs/comms/teams/index.cjs.map +0 -1
- package/lib/cjs/comms/telegram/TelegramService.cjs.map +0 -1
- package/lib/cjs/comms/telegram/index.cjs.map +0 -1
- package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +0 -1
- package/lib/cjs/comms/whatsapp/index.cjs.map +0 -1
- package/lib/cjs/devops/environment.cjs.map +0 -1
- package/lib/cjs/devops/github/GithubService.cjs.map +0 -1
- package/lib/cjs/devops/github/index.cjs.map +0 -1
- package/lib/cjs/devops/gitlab/GitlabService.cjs.map +0 -1
- package/lib/cjs/devops/gitlab/index.cjs.map +0 -1
- package/lib/cjs/devops/index.cjs.map +0 -1
- package/lib/cjs/docker/DockerComposeService.cjs.map +0 -1
- package/lib/cjs/docker/index.cjs.map +0 -1
- package/lib/cjs/feature-flags/EngineCapabilityFeatureFlag.service.cjs.map +0 -1
- package/lib/cjs/feature-flags/constants.cjs.map +0 -1
- package/lib/cjs/feature-flags/decorators.cjs.map +0 -1
- package/lib/cjs/feature-flags/environment.cjs.map +0 -1
- package/lib/cjs/feature-flags/index.cjs.map +0 -1
- package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +0 -1
- package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +0 -1
- package/lib/cjs/feature-flags/readers/FeatureFlagReader.cjs.map +0 -1
- package/lib/cjs/feature-flags/readers/index.cjs.map +0 -1
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +0 -1
- package/lib/cjs/feature-flags/types.cjs.map +0 -1
- package/lib/cjs/feature-flags/utils.cjs.map +0 -1
- package/lib/cjs/index.cjs.map +0 -1
- package/lib/cjs/io/airtable/AirtableService.cjs.map +0 -1
- package/lib/cjs/io/airtable/index.cjs.map +0 -1
- package/lib/cjs/io/confluence/ConfluenceService.cjs.map +0 -1
- package/lib/cjs/io/confluence/index.cjs.map +0 -1
- package/lib/cjs/io/environment.cjs.map +0 -1
- package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +0 -1
- package/lib/cjs/io/google-docs/index.cjs.map +0 -1
- package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +0 -1
- package/lib/cjs/io/google-sheets/index.cjs.map +0 -1
- package/lib/cjs/io/graphql/GraphqlService.cjs.map +0 -1
- package/lib/cjs/io/graphql/index.cjs.map +0 -1
- package/lib/cjs/io/index.cjs.map +0 -1
- package/lib/cjs/io/jira/JiraService.cjs.map +0 -1
- package/lib/cjs/io/jira/index.cjs.map +0 -1
- package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +0 -1
- package/lib/cjs/io/microsoft-excel/index.cjs.map +0 -1
- package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +0 -1
- package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +0 -1
- package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +0 -1
- package/lib/cjs/io/spreadsheet/index.cjs.map +0 -1
- package/lib/cjs/keycloak/broker.cjs.map +0 -1
- package/lib/cjs/keycloak/index.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakAuthService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakClientService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakRealmService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/KeycloakUserService.cjs.map +0 -1
- package/lib/cjs/keycloak/services/index.cjs.map +0 -1
- package/lib/cjs/keycloak/services/runtime.cjs.map +0 -1
- package/lib/cjs/keycloak/types.cjs.map +0 -1
- package/lib/cjs/kibana/builders/KibanaIndexBuilder.cjs.map +0 -1
- package/lib/cjs/kibana/builders/KibanaIndexBuilderCollection.cjs.map +0 -1
- package/lib/cjs/kibana/builders/index.cjs.map +0 -1
- package/lib/cjs/kibana/helpers.cjs.map +0 -1
- package/lib/cjs/kibana/index.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaAuthService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaDashboardService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaDataViewService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaRoleService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaSpaceService.cjs.map +0 -1
- package/lib/cjs/kibana/services/KibanaUserService.cjs.map +0 -1
- package/lib/cjs/kibana/services/index.cjs.map +0 -1
- package/lib/cjs/kibana/services/runtime.cjs.map +0 -1
- package/lib/cjs/kibana/types.cjs.map +0 -1
- package/lib/cjs/loader/ObjectLoader.cjs.map +0 -1
- package/lib/cjs/loader/assets.cjs.map +0 -1
- package/lib/cjs/loader/config.cjs.map +0 -1
- package/lib/cjs/loader/families.cjs.map +0 -1
- package/lib/cjs/loader/index.cjs.map +0 -1
- package/lib/cjs/loader/nest.cjs.map +0 -1
- package/lib/cjs/loader/types.cjs.map +0 -1
- package/lib/cjs/namespaces/index.cjs.map +0 -1
- package/lib/cjs/namespaces/models/authorization-model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/credential.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/group-membership.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/group.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/index.cjs.map +0 -1
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/org-unit.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/permission.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/principal.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/role-permission.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/role.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/tenant.model.cjs.map +0 -1
- package/lib/cjs/namespaces/models/user.model.cjs.map +0 -1
- package/lib/cjs/namespaces/org-based-authorization-system.cjs.map +0 -1
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs.map +0 -1
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs.map +0 -1
- package/lib/cjs/namespaces/rls/index.cjs.map +0 -1
- package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +0 -1
- package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +0 -1
- package/lib/cjs/namespaces/rls/rls.constants.cjs.map +0 -1
- package/lib/cjs/namespaces/rls/rls.template.cjs.map +0 -1
- package/lib/cjs/namespaces/rls/rls.types.cjs.map +0 -1
- package/lib/cjs/namespaces/rls/session-binding.cjs.map +0 -1
- package/lib/cjs/namespaces/services/authz.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/bootstrap.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/credential.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/effective-permission.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/group-membership.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/group.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/index.cjs.map +0 -1
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/org-unit.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/permission.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/principal.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/protected-resource.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/resource-grant.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/role-assignment.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/role-permission.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/role.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/storage-binding.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/system-management.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/tenant.service.cjs.map +0 -1
- package/lib/cjs/namespaces/services/user.service.cjs.map +0 -1
- package/lib/cjs/namespaces/types.cjs.map +0 -1
- package/lib/cjs/namespaces/utils.cjs.map +0 -1
- package/lib/cjs/nest/decorators.cjs.map +0 -1
- package/lib/cjs/nest/index.cjs.map +0 -1
- package/lib/cjs/nest/keycloakAuthHandler.cjs.map +0 -1
- package/lib/cjs/nest/keycloakModule.cjs.map +0 -1
- package/lib/cjs/nest/logging.cjs.map +0 -1
- package/lib/cjs/nest/types.cjs.map +0 -1
- package/lib/cjs/nest/utils.cjs.map +0 -1
- package/lib/cjs/plugins/contract.cjs.map +0 -1
- package/lib/cjs/plugins/index.cjs.map +0 -1
- package/lib/cjs/plugins/kibana/host.cjs.map +0 -1
- package/lib/cjs/plugins/kibana/index.cjs.map +0 -1
- package/lib/cjs/plugins/kibana/installer.cjs.map +0 -1
- package/lib/cjs/plugins/kibana/manifest.cjs.map +0 -1
- package/lib/cjs/plugins/kibana/templates.cjs.map +0 -1
- package/lib/cjs/plugins/kibana/types.cjs.map +0 -1
- package/lib/cjs/plugins/superset/host.cjs.map +0 -1
- package/lib/cjs/plugins/superset/index.cjs.map +0 -1
- package/lib/cjs/plugins/superset/installer.cjs.map +0 -1
- package/lib/cjs/plugins/superset/manifest.cjs.map +0 -1
- package/lib/cjs/plugins/superset/templates.cjs.map +0 -1
- package/lib/cjs/plugins/superset/types.cjs.map +0 -1
- package/lib/cjs/redis/RedisContextLock.cjs.map +0 -1
- package/lib/cjs/redis/RedisDispatch.cjs.map +0 -1
- package/lib/cjs/redis/RedisPaginator.cjs.map +0 -1
- package/lib/cjs/redis/RedisStatement.cjs.map +0 -1
- package/lib/cjs/redis/adapter.cjs.map +0 -1
- package/lib/cjs/redis/constants.cjs.map +0 -1
- package/lib/cjs/redis/handlers.cjs.map +0 -1
- package/lib/cjs/redis/index.cjs.map +0 -1
- package/lib/cjs/redis/serialization.cjs.map +0 -1
- package/lib/cjs/redis/types.cjs.map +0 -1
- package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +0 -1
- package/lib/cjs/secrets/aws/AwsSecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/aws/AwsSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/aws/index.cjs.map +0 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/azure/AzureKeyVaultSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/azure/AzureSecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/azure/index.cjs.map +0 -1
- package/lib/cjs/secrets/core/ClientBasedSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretErrors.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretName.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretReference.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretSerialization.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretService.cjs.map +0 -1
- package/lib/cjs/secrets/core/SecretTypes.cjs.map +0 -1
- package/lib/cjs/secrets/core/index.cjs.map +0 -1
- package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/fs/FsSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/fs/index.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/GcpSecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/GcpSecretManagerServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/gcp/index.cjs.map +0 -1
- package/lib/cjs/secrets/index.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretCrypto.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/model/ModelSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/model/Secret.cjs.map +0 -1
- package/lib/cjs/secrets/model/index.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/OnePasswordSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/onepassword/index.cjs.map +0 -1
- package/lib/cjs/secrets/vault/VaultSecretEnvironment.cjs.map +0 -1
- package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +0 -1
- package/lib/cjs/secrets/vault/VaultSecretServiceConfig.cjs.map +0 -1
- package/lib/cjs/secrets/vault/index.cjs.map +0 -1
- package/lib/cjs/sftp/aws/AwsSftpEnvironment.cjs.map +0 -1
- package/lib/cjs/sftp/aws/AwsSftpService.cjs.map +0 -1
- package/lib/cjs/sftp/core/SftpEnvironment.cjs.map +0 -1
- package/lib/cjs/sftp/core/SftpSource.cjs.map +0 -1
- package/lib/cjs/sftp/core/index.cjs.map +0 -1
- package/lib/cjs/sftp/index.cjs.map +0 -1
- package/lib/cjs/sftp/ssh2/Ssh2SftpEnvironment.cjs.map +0 -1
- package/lib/cjs/sftp/ssh2/Ssh2SftpService.cjs.map +0 -1
- package/lib/cjs/shared/environmentValue.cjs.map +0 -1
- package/lib/cjs/shared/http/HttpApiService.cjs.map +0 -1
- package/lib/cjs/shared/http/hermeticBoot.cjs.map +0 -1
- package/lib/cjs/shared/http/index.cjs.map +0 -1
- package/lib/cjs/shared/runtime.cjs.map +0 -1
- package/lib/cjs/user-requests/index.cjs.map +0 -1
- package/lib/cjs/utils.cjs.map +0 -1
- package/lib/esm/blob/azure/AzureBlobEnvironment.js.map +0 -1
- package/lib/esm/blob/azure/AzureBlobStoreService.js.map +0 -1
- package/lib/esm/blob/azure/index.js.map +0 -1
- package/lib/esm/blob/core/BlobEnvironment.js.map +0 -1
- package/lib/esm/blob/core/BlobErrors.js.map +0 -1
- package/lib/esm/blob/core/BlobKey.js.map +0 -1
- package/lib/esm/blob/core/BlobStoreFactory.js.map +0 -1
- package/lib/esm/blob/core/BlobStoreService.js.map +0 -1
- package/lib/esm/blob/core/BlobTypes.js.map +0 -1
- package/lib/esm/blob/core/BlobValue.js.map +0 -1
- package/lib/esm/blob/core/index.js.map +0 -1
- package/lib/esm/blob/gcp/GcsBlobEnvironment.js.map +0 -1
- package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +0 -1
- package/lib/esm/blob/gcp/index.js.map +0 -1
- package/lib/esm/blob/index.js.map +0 -1
- package/lib/esm/blob/local/LocalBlobEnvironment.js.map +0 -1
- package/lib/esm/blob/local/LocalBlobStoreService.js.map +0 -1
- package/lib/esm/blob/local/index.js.map +0 -1
- package/lib/esm/blob/memory/MemoryBlobEnvironment.js.map +0 -1
- package/lib/esm/blob/memory/MemoryBlobStoreService.js.map +0 -1
- package/lib/esm/blob/memory/index.js.map +0 -1
- package/lib/esm/blob/s3/MinioBlobEnvironment.js.map +0 -1
- package/lib/esm/blob/s3/MinioBlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/R2BlobEnvironment.js.map +0 -1
- package/lib/esm/blob/s3/R2BlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/S3BlobEnvironment.js.map +0 -1
- package/lib/esm/blob/s3/S3BlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +0 -1
- package/lib/esm/blob/s3/index.js.map +0 -1
- package/lib/esm/calendar/CalendarService.js.map +0 -1
- package/lib/esm/calendar/environment.js.map +0 -1
- package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +0 -1
- package/lib/esm/calendar/google-calendar/index.js.map +0 -1
- package/lib/esm/calendar/index.js.map +0 -1
- package/lib/esm/calendar/types.js.map +0 -1
- package/lib/esm/calendar/validators/cron.js.map +0 -1
- package/lib/esm/calendar/writers/CalendarFsWriter.js.map +0 -1
- package/lib/esm/calendar/writers/CalenderDownloader.js.map +0 -1
- package/lib/esm/calendar/writers/ICalendarWriter.js.map +0 -1
- package/lib/esm/comms/discord/DiscordService.js.map +0 -1
- package/lib/esm/comms/discord/index.js.map +0 -1
- package/lib/esm/comms/email/EmailService.js.map +0 -1
- package/lib/esm/comms/email/index.js.map +0 -1
- package/lib/esm/comms/email/mime.js.map +0 -1
- package/lib/esm/comms/email/smtp.js.map +0 -1
- package/lib/esm/comms/environment.js.map +0 -1
- package/lib/esm/comms/gmail/GmailService.js.map +0 -1
- package/lib/esm/comms/gmail/index.js.map +0 -1
- package/lib/esm/comms/index.js.map +0 -1
- package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +0 -1
- package/lib/esm/comms/outlook/index.js.map +0 -1
- package/lib/esm/comms/slack/SlackService.js.map +0 -1
- package/lib/esm/comms/slack/index.js.map +0 -1
- package/lib/esm/comms/teams/TeamsService.js.map +0 -1
- package/lib/esm/comms/teams/index.js.map +0 -1
- package/lib/esm/comms/telegram/TelegramService.js.map +0 -1
- package/lib/esm/comms/telegram/index.js.map +0 -1
- package/lib/esm/comms/whatsapp/WhatsAppService.js.map +0 -1
- package/lib/esm/comms/whatsapp/index.js.map +0 -1
- package/lib/esm/devops/environment.js.map +0 -1
- package/lib/esm/devops/github/GithubService.js.map +0 -1
- package/lib/esm/devops/github/index.js.map +0 -1
- package/lib/esm/devops/gitlab/GitlabService.js.map +0 -1
- package/lib/esm/devops/gitlab/index.js.map +0 -1
- package/lib/esm/devops/index.js.map +0 -1
- package/lib/esm/docker/DockerComposeService.js.map +0 -1
- package/lib/esm/docker/index.js.map +0 -1
- package/lib/esm/feature-flags/EngineCapabilityFeatureFlag.service.js.map +0 -1
- package/lib/esm/feature-flags/constants.js.map +0 -1
- package/lib/esm/feature-flags/decorators.js.map +0 -1
- package/lib/esm/feature-flags/environment.js.map +0 -1
- package/lib/esm/feature-flags/index.js.map +0 -1
- package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +0 -1
- package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +0 -1
- package/lib/esm/feature-flags/readers/FeatureFlagReader.js.map +0 -1
- package/lib/esm/feature-flags/readers/index.js.map +0 -1
- package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +0 -1
- package/lib/esm/feature-flags/types.js.map +0 -1
- package/lib/esm/feature-flags/utils.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/io/airtable/AirtableService.js.map +0 -1
- package/lib/esm/io/airtable/index.js.map +0 -1
- package/lib/esm/io/confluence/ConfluenceService.js.map +0 -1
- package/lib/esm/io/confluence/index.js.map +0 -1
- package/lib/esm/io/environment.js.map +0 -1
- package/lib/esm/io/google-docs/GoogleDocsService.js.map +0 -1
- package/lib/esm/io/google-docs/index.js.map +0 -1
- package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +0 -1
- package/lib/esm/io/google-sheets/index.js.map +0 -1
- package/lib/esm/io/graphql/GraphqlService.js.map +0 -1
- package/lib/esm/io/graphql/index.js.map +0 -1
- package/lib/esm/io/index.js.map +0 -1
- package/lib/esm/io/jira/JiraService.js.map +0 -1
- package/lib/esm/io/jira/index.js.map +0 -1
- package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +0 -1
- package/lib/esm/io/microsoft-excel/index.js.map +0 -1
- package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +0 -1
- package/lib/esm/io/microsoft-sharepoint/index.js.map +0 -1
- package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +0 -1
- package/lib/esm/io/spreadsheet/index.js.map +0 -1
- package/lib/esm/keycloak/broker.js.map +0 -1
- package/lib/esm/keycloak/index.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakAuthService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakClientService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakRealmService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakRoleService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakService.js.map +0 -1
- package/lib/esm/keycloak/services/KeycloakUserService.js.map +0 -1
- package/lib/esm/keycloak/services/index.js.map +0 -1
- package/lib/esm/keycloak/services/runtime.js.map +0 -1
- package/lib/esm/keycloak/types.js.map +0 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilder.js.map +0 -1
- package/lib/esm/kibana/builders/KibanaIndexBuilderCollection.js.map +0 -1
- package/lib/esm/kibana/builders/index.js.map +0 -1
- package/lib/esm/kibana/helpers.js.map +0 -1
- package/lib/esm/kibana/index.js.map +0 -1
- package/lib/esm/kibana/services/KibanaAuthService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaDashboardService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaDataViewService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaRoleService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaSpaceService.js.map +0 -1
- package/lib/esm/kibana/services/KibanaUserService.js.map +0 -1
- package/lib/esm/kibana/services/index.js.map +0 -1
- package/lib/esm/kibana/services/runtime.js.map +0 -1
- package/lib/esm/kibana/types.js.map +0 -1
- package/lib/esm/loader/ObjectLoader.js.map +0 -1
- package/lib/esm/loader/assets.js.map +0 -1
- package/lib/esm/loader/config.js.map +0 -1
- package/lib/esm/loader/families.js.map +0 -1
- package/lib/esm/loader/index.js.map +0 -1
- package/lib/esm/loader/nest.js.map +0 -1
- package/lib/esm/loader/types.js.map +0 -1
- package/lib/esm/namespaces/index.js.map +0 -1
- package/lib/esm/namespaces/models/authorization-model.js.map +0 -1
- package/lib/esm/namespaces/models/credential.model.js.map +0 -1
- package/lib/esm/namespaces/models/effective-permission.model.js.map +0 -1
- package/lib/esm/namespaces/models/group-membership.model.js.map +0 -1
- package/lib/esm/namespaces/models/group.model.js.map +0 -1
- package/lib/esm/namespaces/models/index.js.map +0 -1
- package/lib/esm/namespaces/models/inheritance-block.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit-closure.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit-membership.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit-profile.model.js.map +0 -1
- package/lib/esm/namespaces/models/org-unit.model.js.map +0 -1
- package/lib/esm/namespaces/models/permission.model.js.map +0 -1
- package/lib/esm/namespaces/models/principal.model.js.map +0 -1
- package/lib/esm/namespaces/models/protected-resource.model.js.map +0 -1
- package/lib/esm/namespaces/models/resource-grant.model.js.map +0 -1
- package/lib/esm/namespaces/models/role-assignment.model.js.map +0 -1
- package/lib/esm/namespaces/models/role-permission.model.js.map +0 -1
- package/lib/esm/namespaces/models/role.model.js.map +0 -1
- package/lib/esm/namespaces/models/storage-binding.model.js.map +0 -1
- package/lib/esm/namespaces/models/tenant-membership.model.js.map +0 -1
- package/lib/esm/namespaces/models/tenant-profile.model.js.map +0 -1
- package/lib/esm/namespaces/models/tenant.model.js.map +0 -1
- package/lib/esm/namespaces/models/user.model.js.map +0 -1
- package/lib/esm/namespaces/org-based-authorization-system.js.map +0 -1
- package/lib/esm/namespaces/org-based-authorization-system.models.js.map +0 -1
- package/lib/esm/namespaces/org-based-authorization-system.services.js.map +0 -1
- package/lib/esm/namespaces/rls/index.js.map +0 -1
- package/lib/esm/namespaces/rls/principal-resolver.js.map +0 -1
- package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +0 -1
- package/lib/esm/namespaces/rls/rls.constants.js.map +0 -1
- package/lib/esm/namespaces/rls/rls.template.js.map +0 -1
- package/lib/esm/namespaces/rls/rls.types.js.map +0 -1
- package/lib/esm/namespaces/rls/session-binding.js.map +0 -1
- package/lib/esm/namespaces/services/authz.service.js.map +0 -1
- package/lib/esm/namespaces/services/bootstrap.service.js.map +0 -1
- package/lib/esm/namespaces/services/credential.service.js.map +0 -1
- package/lib/esm/namespaces/services/effective-permission.service.js.map +0 -1
- package/lib/esm/namespaces/services/group-membership.service.js.map +0 -1
- package/lib/esm/namespaces/services/group.service.js.map +0 -1
- package/lib/esm/namespaces/services/index.js.map +0 -1
- package/lib/esm/namespaces/services/inheritance-block.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit-closure.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit-membership.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit-profile.service.js.map +0 -1
- package/lib/esm/namespaces/services/org-unit.service.js.map +0 -1
- package/lib/esm/namespaces/services/permission.service.js.map +0 -1
- package/lib/esm/namespaces/services/principal.service.js.map +0 -1
- package/lib/esm/namespaces/services/protected-resource.service.js.map +0 -1
- package/lib/esm/namespaces/services/resource-grant.service.js.map +0 -1
- package/lib/esm/namespaces/services/resource-lifecycle.service.js.map +0 -1
- package/lib/esm/namespaces/services/role-assignment.service.js.map +0 -1
- package/lib/esm/namespaces/services/role-permission.service.js.map +0 -1
- package/lib/esm/namespaces/services/role.service.js.map +0 -1
- package/lib/esm/namespaces/services/storage-binding.service.js.map +0 -1
- package/lib/esm/namespaces/services/system-management.service.js.map +0 -1
- package/lib/esm/namespaces/services/tenant-membership.service.js.map +0 -1
- package/lib/esm/namespaces/services/tenant-profile.service.js.map +0 -1
- package/lib/esm/namespaces/services/tenant.service.js.map +0 -1
- package/lib/esm/namespaces/services/user.service.js.map +0 -1
- package/lib/esm/namespaces/types.js.map +0 -1
- package/lib/esm/namespaces/utils.js.map +0 -1
- package/lib/esm/nest/decorators.js.map +0 -1
- package/lib/esm/nest/index.js.map +0 -1
- package/lib/esm/nest/keycloakAuthHandler.js.map +0 -1
- package/lib/esm/nest/keycloakModule.js.map +0 -1
- package/lib/esm/nest/logging.js.map +0 -1
- package/lib/esm/nest/types.js.map +0 -1
- package/lib/esm/nest/utils.js.map +0 -1
- package/lib/esm/plugins/contract.js.map +0 -1
- package/lib/esm/plugins/index.js.map +0 -1
- package/lib/esm/plugins/kibana/host.js.map +0 -1
- package/lib/esm/plugins/kibana/index.js.map +0 -1
- package/lib/esm/plugins/kibana/installer.js.map +0 -1
- package/lib/esm/plugins/kibana/manifest.js.map +0 -1
- package/lib/esm/plugins/kibana/templates.js.map +0 -1
- package/lib/esm/plugins/kibana/types.js.map +0 -1
- package/lib/esm/plugins/superset/host.js.map +0 -1
- package/lib/esm/plugins/superset/index.js.map +0 -1
- package/lib/esm/plugins/superset/installer.js.map +0 -1
- package/lib/esm/plugins/superset/manifest.js.map +0 -1
- package/lib/esm/plugins/superset/templates.js.map +0 -1
- package/lib/esm/plugins/superset/types.js.map +0 -1
- package/lib/esm/redis/RedisContextLock.js.map +0 -1
- package/lib/esm/redis/RedisDispatch.js.map +0 -1
- package/lib/esm/redis/RedisPaginator.js.map +0 -1
- package/lib/esm/redis/RedisStatement.js.map +0 -1
- package/lib/esm/redis/adapter.js.map +0 -1
- package/lib/esm/redis/constants.js.map +0 -1
- package/lib/esm/redis/handlers.js.map +0 -1
- package/lib/esm/redis/index.js.map +0 -1
- package/lib/esm/redis/serialization.js.map +0 -1
- package/lib/esm/redis/types.js.map +0 -1
- package/lib/esm/secrets/InfraCredentialBootstrap.js.map +0 -1
- package/lib/esm/secrets/aws/AwsSecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/aws/AwsSecretService.js.map +0 -1
- package/lib/esm/secrets/aws/AwsSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/aws/index.js.map +0 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +0 -1
- package/lib/esm/secrets/azure/AzureKeyVaultSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/azure/AzureSecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/azure/index.js.map +0 -1
- package/lib/esm/secrets/core/ClientBasedSecretService.js.map +0 -1
- package/lib/esm/secrets/core/SecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/core/SecretErrors.js.map +0 -1
- package/lib/esm/secrets/core/SecretName.js.map +0 -1
- package/lib/esm/secrets/core/SecretReference.js.map +0 -1
- package/lib/esm/secrets/core/SecretSerialization.js.map +0 -1
- package/lib/esm/secrets/core/SecretService.js.map +0 -1
- package/lib/esm/secrets/core/SecretTypes.js.map +0 -1
- package/lib/esm/secrets/core/index.js.map +0 -1
- package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/fs/FsSecretService.js.map +0 -1
- package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/fs/index.js.map +0 -1
- package/lib/esm/secrets/gcp/GcpSecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +0 -1
- package/lib/esm/secrets/gcp/GcpSecretManagerServiceConfig.js.map +0 -1
- package/lib/esm/secrets/gcp/index.js.map +0 -1
- package/lib/esm/secrets/index.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretCrypto.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretService.js.map +0 -1
- package/lib/esm/secrets/model/ModelSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/model/Secret.js.map +0 -1
- package/lib/esm/secrets/model/index.js.map +0 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +0 -1
- package/lib/esm/secrets/onepassword/OnePasswordSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/onepassword/index.js.map +0 -1
- package/lib/esm/secrets/vault/VaultSecretEnvironment.js.map +0 -1
- package/lib/esm/secrets/vault/VaultSecretService.js.map +0 -1
- package/lib/esm/secrets/vault/VaultSecretServiceConfig.js.map +0 -1
- package/lib/esm/secrets/vault/index.js.map +0 -1
- package/lib/esm/sftp/aws/AwsSftpEnvironment.js.map +0 -1
- package/lib/esm/sftp/aws/AwsSftpService.js.map +0 -1
- package/lib/esm/sftp/core/SftpEnvironment.js.map +0 -1
- package/lib/esm/sftp/core/SftpSource.js.map +0 -1
- package/lib/esm/sftp/core/index.js.map +0 -1
- package/lib/esm/sftp/index.js.map +0 -1
- package/lib/esm/sftp/ssh2/Ssh2SftpEnvironment.js.map +0 -1
- package/lib/esm/sftp/ssh2/Ssh2SftpService.js.map +0 -1
- package/lib/esm/shared/environmentValue.js.map +0 -1
- package/lib/esm/shared/http/HttpApiService.js.map +0 -1
- package/lib/esm/shared/http/hermeticBoot.js.map +0 -1
- package/lib/esm/shared/http/index.js.map +0 -1
- package/lib/esm/shared/runtime.js.map +0 -1
- package/lib/esm/user-requests/index.js.map +0 -1
- package/lib/esm/utils.js.map +0 -1
|
@@ -389,5 +389,5 @@ __decorate([
|
|
|
389
389
|
exports.CalendarService = CalendarService = __decorate([
|
|
390
390
|
(0, core_1.service)()
|
|
391
391
|
], CalendarService);
|
|
392
|
-
//# sourceMappingURL=CalendarService.js.map
|
|
393
|
-
//# sourceMappingURL=CalendarService.cjs.map
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NhbGVuZGFyL0NhbGVuZGFyU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQStCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekQ7Ozs7O0dBS0c7QUFFSSxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFnQixTQUFRLE9BQU87SUFJbkMsS0FBSyxDQUFDLHdCQUF3QixDQUNuQyxPQUFnQyxFQUNoQyxHQUFHLElBQTZCO1FBRWhDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FDbkIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUNwRCxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVuRSxNQUFNLFFBQVEsR0FDWixPQUFPLENBQUMsUUFBUTtZQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUTtZQUNoRCxLQUFLLENBQUM7UUFFUixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMs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QStCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFDRSxPQUFPLENBQUMsZUFBZSxLQUFLLFNBQVM7WUFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztnQkFDeEMsT0FBTyxDQUFDLGVBQWUsSUFBSSxDQUFDLENBQUMsRUFDL0IsQ0FBQztZQUNELE1BQU0sSUFBSSxlQUFlLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsSUFDRSxPQUFPLENBQUMsa0JBQWtCLEtBQUssU0FBUztZQUN4QyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsRUFDakMsQ0FBQztZQUNELE1BQU0sSUFBSSxlQUFlLENBQ3ZCLG9EQUFvRCxDQUNyRCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQ0UsT0FBTyxDQUFDLGNBQWMsS0FBSyxTQUFTO1lBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxFQUMxRSxDQUFDO1lBQ0QsTUFBTSxJQUFJLGVBQWUsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQS9oQlc7SUFEVCxNQUFNLENBQUMsbUJBQW1CLENBQUM7OytDQUNPO0FBRnhCLGVBQWU7SUFEM0IsT0FBTyxFQUFFO0dBQ0csZUFBZSxDQWlpQjNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCwgTWF5YmVDb250ZXh0dWFsQXJnLCBzZXJ2aWNlLCBTZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBDcm9uRXhwcmVzc2lvblBhcnNlciB9IGZyb20gXCJjcm9uLXBhcnNlclwiO1xuaW1wb3J0IHtcbiAgQ2FsZW5kYXJGaWxlLFxuICBDYWxlbmRhclJlbWluZGVyT3B0aW9ucyxcbiAgUGFyc2VkQ3JvbixcbiAgUmVjdXJyZW5jZVJlc3VsdCxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IE9wZXJhdGlvbktleXMsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgdHlwZSBJQ2FsZW5kYXJXcml0ZXIgfSBmcm9tIFwiLi93cml0ZXJzL0lDYWxlbmRhcldyaXRlclwiO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSBcIkBkZWNhZi10cy9pbmplY3RhYmxlLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGludGVyb3BlcmFibGUgaUNhbGVuZGFyIG1lZGljYXRpb24gcmVtaW5kZXJzLlxuICpcbiAqIFRoZSBzZXJ2aWNlIGhhcyBubyBzdGF0aWMgTm9kZSBpbXBvcnRzLCBzbyB0aGUgc2FtZSBtb2R1bGUgY2FuIGJlIGJ1bmRsZWRcbiAqIGZvciBicm93c2Vycy4gTm9kZS1vbmx5IGZpbGVzeXN0ZW0gYmVoYXZpb3IgaXMgbG9hZGVkIGR5bmFtaWNhbGx5LlxuICovXG5Ac2VydmljZSgpXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJTZXJ2aWNlIGV4dGVuZHMgU2VydmljZSB7XG4gIEBpbmplY3QoJ1wiY2FsZW5kYXItd3JpdGVyXCInKVxuICBwcm90ZWN0ZWQgd3JpdGVyITogSUNhbGVuZGFyV3JpdGVyO1xuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVNZWRpY2F0aW9uUmVtaW5kZXIoXG4gICAgb3B0aW9uczogQ2FsZW5kYXJSZW1pbmRlck9wdGlvbnMsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTxDYWxlbmRhckZpbGU+IHtcbiAgICBjb25zdCB7IGxvZywgY3R4IH0gPSAoXG4gICAgICBhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBPcGVyYXRpb25LZXlzLkNSRUFURSwgdHJ1ZSlcbiAgICApLmZvcih0aGlzLmNyZWF0ZU1lZGljYXRpb25SZW1pbmRlcik7XG4gICAgdGhpcy52YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICBjb25zdCBzdGFydCA9IG9wdGlvbnMuc3RhcnQgPyBuZXcgRGF0ZShvcHRpb25zLnN0YXJ0KSA6IG5ldyBEYXRlKCk7XG5cbiAgICBjb25zdCB0aW1lem9uZSA9XG4gICAgICBvcHRpb25zLnRpbWV6b25lID8/XG4gICAgICBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUgPz9cbiAgICAgIFwiVVRDXCI7XG5cbiAgICBjb25zdCBkdXJhdGlvbk1pbnV0ZXMgPSBvcHRpb25zLmR1cmF0aW9uTWludXRlcyA/PyAxNTtcbiAgICBjb25zdCBhbGFybU1pbnV0ZXNCZWZvcmUgPSBvcHRpb25zLmFsYXJtTWludXRlc0JlZm9yZSA/PyAxMDtcbiAgICBjb25zdCB1aWQgPSBvcHRpb25zLnVpZCA/PyB0aGlzLmNyZWF0ZVVpZCgpO1xuXG4gICAgY29uc3QgcmVjdXJyZW5jZSA9IHRoaXMuY3JlYXRlUmVjdXJyZW5jZShvcHRpb25zLCBzdGFydCwgdGltZXpvbmUsIGN0eCk7XG5cbiAgICBjb25zdCBmaXJzdE9jY3VycmVuY2UgPVxuICAgICAgcmVjdXJyZW5jZS5yZGF0ZXM/LlswXSA/P1xuICAgICAgdGhpcy5nZXRGaXJzdE9jY3VycmVuY2Uob3B0aW9ucy5jcm9uLCBzdGFydCwgdGltZXpvbmUpO1xuXG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUoZmlyc3RPY2N1cnJlbmNlLmdldFRpbWUoKSArIGR1cmF0aW9uTWludXRlcyAqIDYwXzAwMCk7XG5cbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG4gICAgICBcIkJFR0lOOlZDQUxFTkRBUlwiLFxuICAgICAgXCJWRVJTSU9OOjIuMFwiLFxuICAgICAgXCJDQUxTQ0FMRTpHUkVHT1JJQU5cIixcbiAgICAgIFwiUFJPRElEOi0vL1BUUC8vQ2FsZW5kYXIgU2VydmljZS8vRU5cIixcbiAgICAgIFwiTUVUSE9EOlBVQkxJU0hcIixcbiAgICAgIFwiQkVHSU46VkVWRU5UXCIsXG4gICAgICBgVUlEOiR7dGhpcy5lc2NhcGVQcm9wZXJ0eSh1aWQpfWAsXG4gICAgICBgRFRTVEFNUDoke3RoaXMuZm9ybWF0VXRjRGF0ZShuZXcgRGF0ZSgpKX1gLFxuICAgICAgYERUU1RBUlQ7VFpJRD0ke3RoaXMuZXNjYXBlUGFyYW1ldGVyKHRpbWV6b25lKX06JHt0aGlzLmZvcm1hdExvY2FsRGF0ZShcbiAgICAgICAgZmlyc3RPY2N1cnJlbmNlLFxuICAgICAgICB0aW1lem9uZVxuICAgICAgKX1gLFxuICAgICAgYERURU5EO1RaSUQ9JHt0aGlzLmVzY2FwZVBhcmFtZXRlcih0aW1lem9uZSl9OiR7dGhpcy5mb3JtYXRMb2NhbERhdGUoXG4gICAgICAgIGVuZCxcbiAgICAgICAgdGltZXpvbmVcbiAgICAgICl9YCxcbiAgICAgIGBTVU1NQVJZOiR7dGhpcy5lc2NhcGVUZXh0KG9wdGlvbnMudGl0bGUpfWAsXG4gICAgXTtcblxuICAgIGlmIChvcHRpb25zLmRlc2NyaXB0aW9uKSB7XG4gICAgICBsaW5lcy5wdXNoKGBERVNDUklQVElPTjoke3RoaXMuZXNjYXBlVGV4dChvcHRpb25zLmRlc2NyaXB0aW9uKX1gKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2NhdGlvbikge1xuICAgICAgbGluZXMucHVzaChgTE9DQVRJT046JHt0aGlzLmVzY2FwZVRleHQob3B0aW9ucy5sb2NhdGlvbil9YCk7XG4gICAgfVxuXG4gICAgaWYgKHJlY3VycmVuY2UucnJ1bGUpIHtcbiAgICAgIGxpbmVzLnB1c2goYFJSVUxFOiR7cmVjdXJyZW5jZS5ycnVsZX1gKTtcbiAgICB9XG5cbiAgICBpZiAocmVjdXJyZW5jZS5yZGF0ZXMgJiYgcmVjdXJyZW5jZS5yZGF0ZXMubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRFRTVEFSVCBhbHJlYWR5IHJlcHJlc2VudHMgdGhlIGZpcnN0IG9jY3VycmVuY2UuXG4gICAgICBjb25zdCByZW1haW5pbmcgPSByZWN1cnJlbmNlLnJkYXRlcy5zbGljZSgxKTtcblxuICAgICAgbGluZXMucHVzaCguLi50aGlzLmNyZWF0ZUZvbGRlZFJEYXRlTGluZXMocmVtYWluaW5nLCB0aW1lem9uZSkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm9yZ2FuaXplckVtYWlsKSB7XG4gICAgICBsaW5lcy5wdXNoKFxuICAgICAgICBgT1JHQU5JWkVSOm1haWx0bzoke3RoaXMuZXNjYXBlUHJvcGVydHkob3B0aW9ucy5vcmdhbml6ZXJFbWFpbCl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5hdHRlbmRlZUVtYWlsKSB7XG4gICAgICBsaW5lcy5wdXNoKFxuICAgICAgICBbXG4gICAgICAgICAgXCJBVFRFTkRFRVwiLFxuICAgICAgICAgIFwiQ1VUWVBFPUlORElWSURVQUxcIixcbiAgICAgICAgICBcIlJPTEU9UkVRLVBBUlRJQ0lQQU5UXCIsXG4gICAgICAgICAgXCJQQVJUU1RBVD1ORUVEUy1BQ1RJT05cIixcbiAgICAgICAgICBcIlJTVlA9VFJVRVwiLFxuICAgICAgICBdLmpvaW4oXCI7XCIpICsgYDptYWlsdG86JHt0aGlzLmVzY2FwZVByb3BlcnR5KG9wdGlvbnMuYXR0ZW5kZWVFbWFpbCl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsaW5lcy5wdXNoKFxuICAgICAgXCJCRUdJTjpWQUxBUk1cIixcbiAgICAgIFwiQUNUSU9OOkRJU1BMQVlcIixcbiAgICAgIGBUUklHR0VSOi1QVCR7YWxhcm1NaW51dGVzQmVmb3JlfU1gLFxuICAgICAgYERFU0NSSVBUSU9OOiR7dGhpcy5lc2NhcGVUZXh0KG9wdGlvbnMudGl0bGUpfWAsXG4gICAgICBcIkVORDpWQUxBUk1cIixcbiAgICAgIFwiRU5EOlZFVkVOVFwiLFxuICAgICAgXCJFTkQ6VkNBTEVOREFSXCJcbiAgICApO1xuXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZm9sZExpbmVzKGxpbmVzKS5qb2luKFwiXFxyXFxuXCIpICsgXCJcXHJcXG5cIjtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHRoaXMuY3JlYXRlRmlsZW5hbWUob3B0aW9ucy50aXRsZSk7XG5cbiAgICBsb2cudmVyYm9zZShgQ2FsZW5kYXIgZXZlbnQgY3JlYXRlZDogJHtmaWxlbmFtZX1gKTtcbiAgICBsb2cuZGVidWcoYENvbnRlbnQgZm9yICR7ZmlsZW5hbWV9OiAke2NvbnRlbnR9YCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZmlsZW5hbWUsXG4gICAgICBjb250ZW50LFxuICAgICAgbWltZVR5cGU6IFwidGV4dC9jYWxlbmRhclwiLFxuICAgICAgYnl0ZXM6IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShjb250ZW50KSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUFuZFN0b3JlUmVtaW5kZXIoXG4gICAgb3B0aW9uczogQ2FsZW5kYXJSZW1pbmRlck9wdGlvbnMsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBPcGVyYXRpb25LZXlzLkNSRUFURSwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuY3JlYXRlQW5kU3RvcmVSZW1pbmRlclxuICAgICk7XG5cbiAgICBjb25zdCBmaWxlID0gYXdhaXQgdGhpcy5jcmVhdGVNZWRpY2F0aW9uUmVtaW5kZXIob3B0aW9ucywgY3R4KTtcblxuICAgIGF3YWl0IHRoaXMud3JpdGVyLndyaXRlKGZpbGUsIGN0eCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlY3VycmVuY2UoXG4gICAgb3B0aW9uczogQ2FsZW5kYXJSZW1pbmRlck9wdGlvbnMsXG4gICAgc3RhcnQ6IERhdGUsXG4gICAgdGltZXpvbmU6IHN0cmluZyxcbiAgICBjdHg6IENvbnRleHQ8YW55PlxuICApOiBSZWN1cnJlbmNlUmVzdWx0IHtcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlU2ltcGxlQ3JvbihvcHRpb25zLmNyb24sIGN0eCk7XG4gICAgY29uc3QgdW50aWwgPSBvcHRpb25zLnVudGlsID8gdGhpcy5mb3JtYXRVdGNEYXRlKG9wdGlvbnMudW50aWwpIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKHBhcnNlZCkge1xuICAgICAgY29uc3QgcnJ1bGUgPSB0aGlzLmNvbnZlcnRTaW1wbGVDcm9uVG9SUnVsZShwYXJzZWQsIHVudGlsKTtcblxuICAgICAgaWYgKHJydWxlKSB7XG4gICAgICAgIHJldHVybiB7IHJydWxlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJkYXRlczogdGhpcy5leHBhbmRDcm9uRGF0ZXMoXG4gICAgICAgIG9wdGlvbnMuY3JvbixcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHRpbWV6b25lLFxuICAgICAgICBvcHRpb25zLm1heE9jY3VycmVuY2VzID8/IDM2NSxcbiAgICAgICAgb3B0aW9ucy51bnRpbFxuICAgICAgKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBjb21tb25seSBuZWVkZWQgbWVkaWNhdGlvbiBzY2hlZHVsZXMuXG4gICAqXG4gICAqIFVuc3VwcG9ydGVkIGNyb24gc2hhcGVzIGZhbGwgYmFjayB0byBleHBsaWNpdCBSREFURSBvY2N1cnJlbmNlcy5cbiAgICovXG4gIHByaXZhdGUgY29udmVydFNpbXBsZUNyb25Ub1JSdWxlKFxuICAgIGNyb246IFBhcnNlZENyb24sXG4gICAgdW50aWw/OiBzdHJpbmdcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzdWZmaXggPSB1bnRpbCA/IGA7VU5USUw9JHt1bnRpbH1gIDogXCJcIjtcblxuICAgIGNvbnN0IG1pbnV0ZXMgPSBjcm9uLm1pbnV0ZS5qb2luKFwiLFwiKTtcbiAgICBjb25zdCBob3VycyA9IGNyb24uaG91ci5qb2luKFwiLFwiKTtcblxuICAgIGNvbnN0IHRpbWVQYXJ0cyA9IGBCWUhPVVI9JHtob3Vyc307QllNSU5VVEU9JHttaW51dGVzfTtCWVNFQ09ORD0wYDtcblxuICAgIGNvbnN0IGV2ZXJ5RGF5ID1cbiAgICAgIGNyb24uZGF5T2ZNb250aCA9PT0gbnVsbCAmJlxuICAgICAgY3Jvbi5tb250aCA9PT0gbnVsbCAmJlxuICAgICAgY3Jvbi5kYXlPZldlZWsgPT09IG51bGw7XG5cbiAgICBpZiAoZXZlcnlEYXkpIHtcbiAgICAgIHJldHVybiBgRlJFUT1EQUlMWTske3RpbWVQYXJ0c30ke3N1ZmZpeH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHdlZWtseSA9XG4gICAgICBjcm9uLmRheU9mTW9udGggPT09IG51bGwgJiZcbiAgICAgIGNyb24ubW9udGggPT09IG51bGwgJiZcbiAgICAgIGNyb24uZGF5T2ZXZWVrICE9PSBudWxsO1xuXG4gICAgaWYgKHdlZWtseSkge1xuICAgICAgY29uc3Qgd2Vla2RheXMgPSBjcm9uXG4gICAgICAgIC5kYXlPZldlZWshLm1hcCgoZGF5KSA9PiB0aGlzLndlZWtkYXlUb0ljcyhkYXkpKVxuICAgICAgICAuam9pbihcIixcIik7XG5cbiAgICAgIHJldHVybiBgRlJFUT1XRUVLTFk7QllEQVk9JHt3ZWVrZGF5c307JHt0aW1lUGFydHN9JHtzdWZmaXh9YDtcbiAgICB9XG5cbiAgICBjb25zdCBtb250aGx5ID1cbiAgICAgIGNyb24uZGF5T2ZNb250aCAhPT0gbnVsbCAmJlxuICAgICAgY3Jvbi5tb250aCA9PT0gbnVsbCAmJlxuICAgICAgY3Jvbi5kYXlPZldlZWsgPT09IG51bGw7XG5cbiAgICBpZiAobW9udGhseSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYEZSRVE9TU9OVEhMWTtCWU1PTlRIREFZPSR7Y3Jvbi5kYXlPZk1vbnRoIS5qb2luKFwiLFwiKX07YCArXG4gICAgICAgIGAke3RpbWVQYXJ0c30ke3N1ZmZpeH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHllYXJseSA9XG4gICAgICBjcm9uLmRheU9mTW9udGggIT09IG51bGwgJiZcbiAgICAgIGNyb24ubW9udGggIT09IG51bGwgJiZcbiAgICAgIGNyb24uZGF5T2ZXZWVrID09PSBudWxsO1xuXG4gICAgaWYgKHllYXJseSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYEZSRVE9WUVBUkxZO0JZTU9OVEg9JHtjcm9uLm1vbnRoIS5qb2luKFwiLFwiKX07YCArXG4gICAgICAgIGBCWU1PTlRIREFZPSR7Y3Jvbi5kYXlPZk1vbnRoIS5qb2luKFwiLFwiKX07YCArXG4gICAgICAgIGAke3RpbWVQYXJ0c30ke3N1ZmZpeH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENyb24gZGF5LW9mLW1vbnRoL2RheS1vZi13ZWVrIGNvbWJpbmF0aW9ucyBoYXZlIE9SLWxpa2Ugc2VtYW50aWNzXG4gICAgLy8gaW4gbWFueSBpbXBsZW1lbnRhdGlvbnMgYW5kIGNhbm5vdCBiZSByZXByZXNlbnRlZCBzYWZlbHkgYXMgb25lIFJSVUxFLlxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHBhcnNlU2ltcGxlQ3JvbihcbiAgICBleHByZXNzaW9uOiBzdHJpbmcsXG4gICAgY3R4OiBDb250ZXh0PGFueT5cbiAgKTogUGFyc2VkQ3JvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgeyBsb2cgfSA9IHRoaXMubG9nQ3R4KFtjdHhdLCB0aGlzLnBhcnNlU2ltcGxlQ3Jvbik7XG4gICAgY29uc3QgZmllbGRzID0gZXhwcmVzc2lvbi50cmltKCkuc3BsaXQoL1xccysvKTtcblxuICAgIGlmIChmaWVsZHMubGVuZ3RoICE9PSA1KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IFttaW51dGUsIGhvdXIsIGRheU9mTW9udGgsIG1vbnRoLCBkYXlPZldlZWtdID0gZmllbGRzO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1pbnV0ZTogdGhpcy5wYXJzZUNyb25GaWVsZChtaW51dGUsIDAsIDU5LCBjdHgpLFxuICAgICAgICBob3VyOiB0aGlzLnBhcnNlQ3JvbkZpZWxkKGhvdXIsIDAsIDIzLCBjdHgpLFxuICAgICAgICBkYXlPZk1vbnRoOlxuICAgICAgICAgIGRheU9mTW9udGggPT09IFwiKlwiXG4gICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgIDogdGhpcy5wYXJzZUNyb25GaWVsZChkYXlPZk1vbnRoLCAxLCAzMSwgY3R4KSxcbiAgICAgICAgbW9udGg6IG1vbnRoID09PSBcIipcIiA/IG51bGwgOiB0aGlzLnBhcnNlQ3JvbkZpZWxkKG1vbnRoLCAxLCAxMiwgY3R4KSxcbiAgICAgICAgZGF5T2ZXZWVrOlxuICAgICAgICAgIGRheU9mV2VlayA9PT0gXCIqXCJcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLnBhcnNlQ3JvbkZpZWxkKGRheU9mV2VlaywgMCwgNywgY3R4KS5tYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICAgIHZhbHVlID09PSA3ID8gMCA6IHZhbHVlXG4gICAgICAgICAgICAgICksXG4gICAgICB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgbG9nLmRlYnVnKGBGYWlsZWQgdG8gZ2VuZXJhdGUgc2ltcGxlIGNyb24gZXhwcmVzc2lvbiBmb3IgJHtleHByZXNzaW9ufWApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlQ3JvbkZpZWxkKFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgbWluaW11bTogbnVtYmVyLFxuICAgIG1heGltdW06IG51bWJlcixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgY3R4OiBDb250ZXh0PGFueT5cbiAgKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gICAgZm9yIChjb25zdCBzZWdtZW50IG9mIGZpZWxkLnNwbGl0KFwiLFwiKSkge1xuICAgICAgY29uc3QgW3JhbmdlRXhwcmVzc2lvbiwgc3RlcEV4cHJlc3Npb25dID0gc2VnbWVudC5zcGxpdChcIi9cIik7XG5cbiAgICAgIGNvbnN0IHN0ZXAgPVxuICAgICAgICBzdGVwRXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkID8gMSA6IE51bWJlci5wYXJzZUludChzdGVwRXhwcmVzc2lvbiwgMTApO1xuXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoc3RlcCkgfHwgc3RlcCA8PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEludmFsaWQgY3JvbiBzdGVwOiAke3NlZ21lbnR9YCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBzdGFydDogbnVtYmVyO1xuICAgICAgbGV0IGVuZDogbnVtYmVyO1xuXG4gICAgICBpZiAocmFuZ2VFeHByZXNzaW9uID09PSBcIipcIikge1xuICAgICAgICBzdGFydCA9IG1pbmltdW07XG4gICAgICAgIGVuZCA9IG1heGltdW07XG4gICAgICB9IGVsc2UgaWYgKHJhbmdlRXhwcmVzc2lvbi5pbmNsdWRlcyhcIi1cIikpIHtcbiAgICAgICAgY29uc3QgYm91bmRzID0gcmFuZ2VFeHByZXNzaW9uLnNwbGl0KFwiLVwiKTtcblxuICAgICAgICBpZiAoYm91bmRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEludmFsaWQgY3JvbiByYW5nZTogJHtzZWdtZW50fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhcnQgPSBOdW1iZXIucGFyc2VJbnQoYm91bmRzWzBdLCAxMCk7XG4gICAgICAgIGVuZCA9IE51bWJlci5wYXJzZUludChib3VuZHNbMV0sIDEwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KHJhbmdlRXhwcmVzc2lvbiwgMTApO1xuICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihzdGFydCkgfHxcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIoZW5kKSB8fFxuICAgICAgICBzdGFydCA8IG1pbmltdW0gfHxcbiAgICAgICAgZW5kID4gbWF4aW11bSB8fFxuICAgICAgICBzdGFydCA+IGVuZFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEludmFsaWQgY3JvbiBmaWVsZDogJHtzZWdtZW50fWApO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCB2YWx1ZSA9IHN0YXJ0OyB2YWx1ZSA8PSBlbmQ7IHZhbHVlICs9IHN0ZXApIHtcbiAgICAgICAgdmFsdWVzLmFkZCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi52YWx1ZXNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhwYW5kQ3JvbkRhdGVzKFxuICAgIGNyb246IHN0cmluZyxcbiAgICBzdGFydDogRGF0ZSxcbiAgICB0aW1lem9uZTogc3RyaW5nLFxuICAgIG1heGltdW06IG51bWJlcixcbiAgICB1bnRpbD86IERhdGVcbiAgKTogRGF0ZVtdIHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IENyb25FeHByZXNzaW9uUGFyc2VyLnBhcnNlKGNyb24sIHtcbiAgICAgIGN1cnJlbnREYXRlOiBzdGFydCxcbiAgICAgIHR6OiB0aW1lem9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IG9jY3VycmVuY2VzOiBEYXRlW10gPSBbXTtcblxuICAgIHdoaWxlIChvY2N1cnJlbmNlcy5sZW5ndGggPCBtYXhpbXVtKSB7XG4gICAgICBjb25zdCBuZXh0ID0gaW50ZXJ2YWwubmV4dCgpLnRvRGF0ZSgpO1xuXG4gICAgICBpZiAodW50aWwgJiYgbmV4dCA+IHVudGlsKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBvY2N1cnJlbmNlcy5wdXNoKG5leHQpO1xuICAgIH1cblxuICAgIGlmIChvY2N1cnJlbmNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgY3JvbiBleHByZXNzaW9uIHByb2R1Y2VkIG5vIG9jY3VycmVuY2VzIGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9jY3VycmVuY2VzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaXJzdE9jY3VycmVuY2UoXG4gICAgY3Jvbjogc3RyaW5nLFxuICAgIHN0YXJ0OiBEYXRlLFxuICAgIHRpbWV6b25lOiBzdHJpbmdcbiAgKTogRGF0ZSB7XG4gICAgY29uc3QgaW50ZXJ2YWwgPSBDcm9uRXhwcmVzc2lvblBhcnNlci5wYXJzZShjcm9uLCB7XG4gICAgICBjdXJyZW50RGF0ZTogc3RhcnQsXG4gICAgICB0ejogdGltZXpvbmUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW50ZXJ2YWwubmV4dCgpLnRvRGF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb2xkZWRSRGF0ZUxpbmVzKGRhdGVzOiBEYXRlW10sIHRpbWV6b25lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgcHJlZml4ID0gYFJEQVRFO1RaSUQ9JHt0aGlzLmVzY2FwZVBhcmFtZXRlcih0aW1lem9uZSl9OmA7XG5cbiAgICBjb25zdCB2YWx1ZXMgPSBkYXRlcy5tYXAoKGRhdGUpID0+IHRoaXMuZm9ybWF0TG9jYWxEYXRlKGRhdGUsIHRpbWV6b25lKSk7XG5cbiAgICAvLyBLZWVwIGVhY2ggbG9naWNhbCBwcm9wZXJ0eSByZWFzb25hYmx5IHNpemVkIGJlZm9yZSBSRkMgbGluZSBmb2xkaW5nLlxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgY3VycmVudCA9IHByZWZpeDtcblxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBjb25zdCBjYW5kaWRhdGUgPVxuICAgICAgICBjdXJyZW50ID09PSBwcmVmaXggPyBgJHtjdXJyZW50fSR7dmFsdWV9YCA6IGAke2N1cnJlbnR9LCR7dmFsdWV9YDtcblxuICAgICAgaWYgKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShjYW5kaWRhdGUpLmxlbmd0aCA+IDcwMCkge1xuICAgICAgICByZXN1bHQucHVzaChjdXJyZW50KTtcbiAgICAgICAgY3VycmVudCA9IGAke3ByZWZpeH0ke3ZhbHVlfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50ICE9PSBwcmVmaXgpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGN1cnJlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFV0Y0RhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGVcbiAgICAgIC50b0lTT1N0cmluZygpXG4gICAgICAucmVwbGFjZSgvWy06XS9nLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoL1xcLlxcZHszfVokLywgXCJaXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRMb2NhbERhdGUoZGF0ZTogRGF0ZSwgdGltZXpvbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLUNBXCIsIHtcbiAgICAgIHRpbWVab25lOiB0aW1lem9uZSxcbiAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgbW9udGg6IFwiMi1kaWdpdFwiLFxuICAgICAgZGF5OiBcIjItZGlnaXRcIixcbiAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICAgIHNlY29uZDogXCIyLWRpZ2l0XCIsXG4gICAgICBob3VyQ3ljbGU6IFwiaDIzXCIsXG4gICAgfSkuZm9ybWF0VG9QYXJ0cyhkYXRlKTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIHBhcnRzXG4gICAgICAgIC5maWx0ZXIoKHBhcnQpID0+IHBhcnQudHlwZSAhPT0gXCJsaXRlcmFsXCIpXG4gICAgICAgIC5tYXAoKHBhcnQpID0+IFtwYXJ0LnR5cGUsIHBhcnQudmFsdWVdKVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgYCR7dmFsdWVzLnllYXJ9JHt2YWx1ZXMubW9udGh9JHt2YWx1ZXMuZGF5fWAgK1xuICAgICAgYFQke3ZhbHVlcy5ob3VyfSR7dmFsdWVzLm1pbnV0ZX0ke3ZhbHVlcy5zZWNvbmR9YFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZvbGRMaW5lcyhsaW5lczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGxpbmVzLmZsYXRNYXAoKGxpbmUpID0+IHRoaXMuZm9sZExpbmUobGluZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJGQyA1NTQ1IGNvbnRlbnQgbGluZXMgc2hvdWxkIGJlIGZvbGRlZCBhdCA3NSBvY3RldHMuXG4gICAqL1xuICBwcml2YXRlIGZvbGRMaW5lKGxpbmU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCByZW1haW5pbmcgPSBsaW5lO1xuICAgIGxldCBmaXJzdCA9IHRydWU7XG5cbiAgICB3aGlsZSAoZW5jb2Rlci5lbmNvZGUoZmlyc3QgPyByZW1haW5pbmcgOiBgICR7cmVtYWluaW5nfWApLmxlbmd0aCA+IDc1KSB7XG4gICAgICBjb25zdCBwcmVmaXggPSBmaXJzdCA/IFwiXCIgOiBcIiBcIjtcbiAgICAgIGxldCBjaHVuayA9IFwiXCI7XG4gICAgICBsZXQgY29uc3VtZWQgPSAwO1xuXG4gICAgICBmb3IgKGNvbnN0IGNoYXJhY3RlciBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gYCR7cHJlZml4fSR7Y2h1bmt9JHtjaGFyYWN0ZXJ9YDtcblxuICAgICAgICBpZiAoZW5jb2Rlci5lbmNvZGUoY2FuZGlkYXRlKS5sZW5ndGggPiA3NSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2h1bmsgKz0gY2hhcmFjdGVyO1xuICAgICAgICBjb25zdW1lZCArPSBjaGFyYWN0ZXIubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNodW5rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmb2xkIGlDYWxlbmRhciBjb250ZW50IGxpbmUuXCIpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHQucHVzaChgJHtwcmVmaXh9JHtjaHVua31gKTtcbiAgICAgIHJlbWFpbmluZyA9IHJlbWFpbmluZy5zbGljZShjb25zdW1lZCk7XG4gICAgICBmaXJzdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlc3VsdC5wdXNoKGZpcnN0ID8gcmVtYWluaW5nIDogYCAke3JlbWFpbmluZ31gKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZVRleHQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICAucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpXG4gICAgICAucmVwbGFjZSgvXFxyP1xcbi9nLCBcIlxcXFxuXCIpXG4gICAgICAucmVwbGFjZSgvOy9nLCBcIlxcXFw7XCIpXG4gICAgICAucmVwbGFjZSgvLC9nLCBcIlxcXFwsXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1xcclxcbl0vZywgXCJcIik7XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZVBhcmFtZXRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIS9eW0EtWmEtejAtOV8rLi8tXSskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgVW5zYWZlIGlDYWxlbmRhciBwYXJhbWV0ZXI6ICR7dmFsdWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB3ZWVrZGF5VG9JY3MoZGF5OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRheXMgPSBbXCJTVVwiLCBcIk1PXCIsIFwiVFVcIiwgXCJXRVwiLCBcIlRIXCIsIFwiRlJcIiwgXCJTQVwiXTtcbiAgICBjb25zdCByZXN1bHQgPSBkYXlzW2RheV07XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgSW52YWxpZCB3ZWVrZGF5OiAke2RheX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVVaWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb20gPVxuICAgICAgZ2xvYmFsVGhpcy5jcnlwdG8/LnJhbmRvbVVVSUQ/LigpID8/XG4gICAgICBgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnNsaWNlKDIpfWA7XG5cbiAgICByZXR1cm4gYCR7cmFuZG9tfUBjYWxlbmRhci1zZXJ2aWNlYDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmlsZW5hbWUodGl0bGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2FmZVRpdGxlID0gdGl0bGVcbiAgICAgIC5ub3JtYWxpemUoXCJORktEXCIpXG4gICAgICAucmVwbGFjZSgvW15cXHcuLV0rL2csIFwiLVwiKVxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIilcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGAke3NhZmVUaXRsZSB8fCBcImNhbGVuZGFyLXJlbWluZGVyXCJ9Lmljc2A7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zOiBDYWxlbmRhclJlbWluZGVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucy5jcm9uPy50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXCJBIGNyb24gZXhwcmVzc2lvbiBpcyByZXF1aXJlZC5cIik7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnRpdGxlPy50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXCJBIGNhbGVuZGFyIHRpdGxlIGlzIHJlcXVpcmVkLlwiKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmR1cmF0aW9uTWludXRlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoIU51bWJlci5pc0Zpbml0ZShvcHRpb25zLmR1cmF0aW9uTWludXRlcykgfHxcbiAgICAgICAgb3B0aW9ucy5kdXJhdGlvbk1pbnV0ZXMgPD0gMClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXCJkdXJhdGlvbk1pbnV0ZXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby5cIik7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5hbGFybU1pbnV0ZXNCZWZvcmUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgKCFOdW1iZXIuaXNJbnRlZ2VyKG9wdGlvbnMuYWxhcm1NaW51dGVzQmVmb3JlKSB8fFxuICAgICAgICBvcHRpb25zLmFsYXJtTWludXRlc0JlZm9yZSA8IDApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBcImFsYXJtTWludXRlc0JlZm9yZSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgb3B0aW9ucy5tYXhPY2N1cnJlbmNlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoIU51bWJlci5pc0ludGVnZXIob3B0aW9ucy5tYXhPY2N1cnJlbmNlcykgfHwgb3B0aW9ucy5tYXhPY2N1cnJlbmNlcyA8PSAwKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcIm1heE9jY3VycmVuY2VzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLlwiKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
393
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQ2FsZW5kYXJTZXJ2aWNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUk7SUFDakYsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3SCxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVTtRQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDOztRQUMxSCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQUUsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEdB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Q0FBQyxDQUFDO0FBRXBCLDg3dENBQTg3dEMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19kZWNvcmF0ZSA9ICh0aGlzICYmIHRoaXMuX19kZWNvcmF0ZSkgfHwgZnVuY3Rpb24gKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcbn07XG52YXIgX19tZXRhZGF0YSA9ICh0aGlzICYmIHRoaXMuX19tZXRhZGF0YSkgfHwgZnVuY3Rpb24gKGssIHYpIHtcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEoaywgdik7XG59O1xuaW1wb3J0IHsgc2VydmljZSwgU2VydmljZSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ3JvbkV4cHJlc3Npb25QYXJzZXIgfSBmcm9tIFwiY3Jvbi1wYXJzZXJcIjtcbmltcG9ydCB7IE9wZXJhdGlvbktleXMsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSBcIkBkZWNhZi10cy9pbmplY3RhYmxlLWRlY29yYXRvcnNcIjtcbi8qKlxuICogQ3JlYXRlcyBpbnRlcm9wZXJhYmxlIGlDYWxlbmRhciBtZWRpY2F0aW9uIHJlbWluZGVycy5cbiAqXG4gKiBUaGUgc2VydmljZSBoYXMgbm8gc3RhdGljIE5vZGUgaW1wb3J0cywgc28gdGhlIHNhbWUgbW9kdWxlIGNhbiBiZSBidW5kbGVkXG4gKiBmb3IgYnJvd3NlcnMuIE5vZGUtb25seSBmaWxlc3lzdGVtIGJlaGF2aW9yIGlzIGxvYWRlZCBkeW5hbWljYWxseS5cbiAqL1xubGV0IENhbGVuZGFyU2VydmljZSA9IGNsYXNzIENhbGVuZGFyU2VydmljZSBleHRlbmRzIFNlcnZpY2Uge1xuICAgIGFzeW5jIGNyZWF0ZU1lZGljYXRpb25SZW1pbmRlcihvcHRpb25zLCAuLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IHsgbG9nLCBjdHggfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBPcGVyYXRpb25LZXlzLkNSRUFURSwgdHJ1ZSkpLmZvcih0aGlzLmNyZWF0ZU1lZGljYXRpb25SZW1pbmRlcik7XG4gICAgICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBzdGFydCA9IG9wdGlvbnMuc3RhcnQgPyBuZXcgRGF0ZShvcHRpb25zLnN0YXJ0KSA6IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHRpbWV6b25lID0gb3B0aW9ucy50aW1lem9uZSA/P1xuICAgICAgICAgICAgSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lID8/XG4gICAgICAgICAgICBcIlVUQ1wiO1xuICAgICAgICBjb25zdCBkdXJhdGlvbk1pbnV0ZXMgPSBvcHRpb25zLmR1cmF0aW9uTWludXRlcyA/PyAxNTtcbiAgICAgICAgY29uc3QgYWxhcm1NaW51dGVzQmVmb3JlID0gb3B0aW9ucy5hbGFybU1pbnV0ZXNCZWZvcmUgPz8gMTA7XG4gICAgICAgIGNvbnN0IHVpZCA9IG9wdGlvbnMudWlkID8/IHRoaXMuY3JlYXRlVWlkKCk7XG4gICAgICAgIGNvbnN0IHJlY3VycmVuY2UgPSB0aGlzLmNyZWF0ZVJlY3VycmVuY2Uob3B0aW9ucywgc3RhcnQsIHRpbWV6b25lLCBjdHgpO1xuICAgICAgICBjb25zdCBmaXJzdE9jY3VycmVuY2UgPSByZWN1cnJlbmNlLnJkYXRlcz8uWzBdID8/XG4gICAgICAgICAgICB0aGlzLmdldEZpcnN0T2NjdXJyZW5jZShvcHRpb25zLmNyb24sIHN0YXJ0LCB0aW1lem9uZSk7XG4gICAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKGZpcnN0T2NjdXJyZW5jZS5nZXRUaW1lKCkgKyBkdXJhdGlvbk1pbnV0ZXMgKiA2MF8wMDApO1xuICAgICAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgICAgICAgIFwiQkVHSU46VkNBTEVOREFSXCIsXG4gICAgICAgICAgICBcIlZFUlNJT046Mi4wXCIsXG4gICAgICAgICAgICBcIkNBTFNDQUxFOkdSRUdPUklBTlwiLFxuICAgICAgICAgICAgXCJQUk9ESUQ6LS8vUFRQLy9DYWxlbmRhciBTZXJ2aWNlLy9FTlwiLFxuICAgICAgICAgICAgXCJNRVRIT0Q6UFVCTElTSFwiLFxuICAgICAgICAgICAgXCJCRUdJTjpWRVZFTlRcIixcbiAgICAgICAgICAgIGBVSUQ6JHt0aGlzLmVzY2FwZVByb3BlcnR5KHVpZCl9YCxcbiAgICAgICAgICAgIGBEVFNUQU1QOiR7dGhpcy5mb3JtYXRVdGNEYXRlKG5ldyBEYXRlKCkpfWAsXG4gICAgICAgICAgICBgRFRTVEFSVDtUWklEPSR7dGhpcy5lc2NhcGVQYXJhbWV0ZXIodGltZXpvbmUpfToke3RoaXMuZm9ybWF0TG9jYWxEYXRlKGZpcnN0T2NjdXJyZW5jZSwgdGltZXpvbmUpfWAsXG4gICAgICAgICAgICBgRFRFTkQ7VFpJRD0ke3RoaXMuZXNjYXBlUGFyYW1ldGVyKHRpbWV6b25lKX06JHt0aGlzLmZvcm1hdExvY2FsRGF0ZShlbmQsIHRpbWV6b25lKX1gLFxuICAgICAgICAgICAgYFNVTU1BUlk6JHt0aGlzLmVzY2FwZVRleHQob3B0aW9ucy50aXRsZSl9YCxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKG9wdGlvbnMuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGxpbmVzLnB1c2goYERFU0NSSVBUSU9OOiR7dGhpcy5lc2NhcGVUZXh0KG9wdGlvbnMuZGVzY3JpcHRpb24pfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGBMT0NBVElPTjoke3RoaXMuZXNjYXBlVGV4dChvcHRpb25zLmxvY2F0aW9uKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjdXJyZW5jZS5ycnVsZSkge1xuICAgICAgICAgICAgbGluZXMucHVzaChgUlJVTEU6JHtyZWN1cnJlbmNlLnJydWxlfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWN1cnJlbmNlLnJkYXRlcyAmJiByZWN1cnJlbmNlLnJkYXRlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAvLyBEVFNUQVJUIGFscmVhZHkgcmVwcmVzZW50cyB0aGUgZmlyc3Qgb2NjdXJyZW5jZS5cbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IHJlY3VycmVuY2UucmRhdGVzLnNsaWNlKDEpO1xuICAgICAgICAgICAgbGluZXMucHVzaCguLi50aGlzLmNyZWF0ZUZvbGRlZFJEYXRlTGluZXMocmVtYWluaW5nLCB0aW1lem9uZSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm9yZ2FuaXplckVtYWlsKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKGBPUkdBTklaRVI6bWFpbHRvOiR7dGhpcy5lc2NhcGVQcm9wZXJ0eShvcHRpb25zLm9yZ2FuaXplckVtYWlsKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5hdHRlbmRlZUVtYWlsKSB7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKFtcbiAgICAgICAgICAgICAgICBcIkFUVEVOREVFXCIsXG4gICAgICAgICAgICAgICAgXCJDVVRZUEU9SU5ESVZJRFVBTFwiLFxuICAgICAgICAgICAgICAgIFwiUk9MRT1SRVEtUEFSVElDSVBBTlRcIixcbiAgICAgICAgICAgICAgICBcIlBBUlRTVEFUPU5FRURTLUFDVElPTlwiLFxuICAgICAgICAgICAgICAgIFwiUlNWUD1UUlVFXCIsXG4gICAgICAgICAgICBdLmpvaW4oXCI7XCIpICsgYDptYWlsdG86JHt0aGlzLmVzY2FwZVByb3BlcnR5KG9wdGlvbnMuYXR0ZW5kZWVFbWFpbCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaChcIkJFR0lOOlZBTEFSTVwiLCBcIkFDVElPTjpESVNQTEFZXCIsIGBUUklHR0VSOi1QVCR7YWxhcm1NaW51dGVzQmVmb3JlfU1gLCBgREVTQ1JJUFRJT046JHt0aGlzLmVzY2FwZVRleHQob3B0aW9ucy50aXRsZSl9YCwgXCJFTkQ6VkFMQVJNXCIsIFwiRU5EOlZFVkVOVFwiLCBcIkVORDpWQ0FMRU5EQVJcIik7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmZvbGRMaW5lcyhsaW5lcykuam9pbihcIlxcclxcblwiKSArIFwiXFxyXFxuXCI7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gdGhpcy5jcmVhdGVGaWxlbmFtZShvcHRpb25zLnRpdGxlKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYENhbGVuZGFyIGV2ZW50IGNyZWF0ZWQ6ICR7ZmlsZW5hbWV9YCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQ29udGVudCBmb3IgJHtmaWxlbmFtZX06ICR7Y29udGVudH1gKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBcInRleHQvY2FsZW5kYXJcIixcbiAgICAgICAgICAgIGJ5dGVzOiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoY29udGVudCksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIGNyZWF0ZUFuZFN0b3JlUmVtaW5kZXIob3B0aW9ucywgLi4uYXJncykge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gKGF3YWl0IHRoaXMubG9nQ3R4KGFyZ3MsIE9wZXJhdGlvbktleXMuQ1JFQVRFLCB0cnVlKSkuZm9yKHRoaXMuY3JlYXRlQW5kU3RvcmVSZW1pbmRlcik7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLmNyZWF0ZU1lZGljYXRpb25SZW1pbmRlcihvcHRpb25zLCBjdHgpO1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlci53cml0ZShmaWxlLCBjdHgpO1xuICAgIH1cbiAgICBjcmVhdGVSZWN1cnJlbmNlKG9wdGlvbnMsIHN0YXJ0LCB0aW1lem9uZSwgY3R4KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VTaW1wbGVDcm9uKG9wdGlvbnMuY3JvbiwgY3R4KTtcbiAgICAgICAgY29uc3QgdW50aWwgPSBvcHRpb25zLnVudGlsID8gdGhpcy5mb3JtYXRVdGNEYXRlKG9wdGlvbnMudW50aWwpIDogdW5kZWZpbmVkO1xuICAgICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBycnVsZSA9IHRoaXMuY29udmVydFNpbXBsZUNyb25Ub1JSdWxlKHBhcnNlZCwgdW50aWwpO1xuICAgICAgICAgICAgaWYgKHJydWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcnJ1bGUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmRhdGVzOiB0aGlzLmV4cGFuZENyb25EYXRlcyhvcHRpb25zLmNyb24sIHN0YXJ0LCB0aW1lem9uZSwgb3B0aW9ucy5tYXhPY2N1cnJlbmNlcyA/PyAzNjUsIG9wdGlvbnMudW50aWwpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgY29tbW9ubHkgbmVlZGVkIG1lZGljYXRpb24gc2NoZWR1bGVzLlxuICAgICAqXG4gICAgICogVW5zdXBwb3J0ZWQgY3JvbiBzaGFwZXMgZmFsbCBiYWNrIHRvIGV4cGxpY2l0IFJEQVRFIG9jY3VycmVuY2VzLlxuICAgICAqL1xuICAgIGNvbnZlcnRTaW1wbGVDcm9uVG9SUnVsZShjcm9uLCB1bnRpbCkge1xuICAgICAgICBjb25zdCBzdWZmaXggPSB1bnRpbCA/IGA7VU5USUw9JHt1bnRpbH1gIDogXCJcIjtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IGNyb24ubWludXRlLmpvaW4oXCIsXCIpO1xuICAgICAgICBjb25zdCBob3VycyA9IGNyb24uaG91ci5qb2luKFwiLFwiKTtcbiAgICAgICAgY29uc3QgdGltZVBhcnRzID0gYEJZSE9VUj0ke2hvdXJzfTtCWU1JTlVURT0ke21pbnV0ZXN9O0JZU0VDT05EPTBgO1xuICAgICAgICBjb25zdCBldmVyeURheSA9IGNyb24uZGF5T2ZNb250aCA9PT0gbnVsbCAmJlxuICAgICAgICAgICAgY3Jvbi5tb250aCA9PT0gbnVsbCAmJlxuICAgICAgICAgICAgY3Jvbi5kYXlPZldlZWsgPT09IG51bGw7XG4gICAgICAgIGlmIChldmVyeURheSkge1xuICAgICAgICAgICAgcmV0dXJuIGBGUkVRPURBSUxZOyR7dGltZVBhcnRzfSR7c3VmZml4fWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd2Vla2x5ID0gY3Jvbi5kYXlPZk1vbnRoID09PSBudWxsICYmXG4gICAgICAgICAgICBjcm9uLm1vbnRoID09PSBudWxsICYmXG4gICAgICAgICAgICBjcm9uLmRheU9mV2VlayAhPT0gbnVsbDtcbiAgICAgICAgaWYgKHdlZWtseSkge1xuICAgICAgICAgICAgY29uc3Qgd2Vla2RheXMgPSBjcm9uXG4gICAgICAgICAgICAgICAgLmRheU9mV2Vlay5tYXAoKGRheSkgPT4gdGhpcy53ZWVrZGF5VG9JY3MoZGF5KSlcbiAgICAgICAgICAgICAgICAuam9pbihcIixcIik7XG4gICAgICAgICAgICByZXR1cm4gYEZSRVE9V0VFS0xZO0JZREFZPSR7d2Vla2RheXN9OyR7dGltZVBhcnRzfSR7c3VmZml4fWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9udGhseSA9IGNyb24uZGF5T2ZNb250aCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgY3Jvbi5tb250aCA9PT0gbnVsbCAmJlxuICAgICAgICAgICAgY3Jvbi5kYXlPZldlZWsgPT09IG51bGw7XG4gICAgICAgIGlmIChtb250aGx5KSB7XG4gICAgICAgICAgICByZXR1cm4gKGBGUkVRPU1PTlRITFk7QllNT05USERBWT0ke2Nyb24uZGF5T2ZNb250aC5qb2luKFwiLFwiKX07YCArXG4gICAgICAgICAgICAgICAgYCR7dGltZVBhcnRzfSR7c3VmZml4fWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHllYXJseSA9IGNyb24uZGF5T2ZNb250aCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgY3Jvbi5tb250aCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgY3Jvbi5kYXlPZldlZWsgPT09IG51bGw7XG4gICAgICAgIGlmICh5ZWFybHkpIHtcbiAgICAgICAgICAgIHJldHVybiAoYEZSRVE9WUVBUkxZO0JZTU9OVEg9JHtjcm9uLm1vbnRoLmpvaW4oXCIsXCIpfTtgICtcbiAgICAgICAgICAgICAgICBgQllNT05USERBWT0ke2Nyb24uZGF5T2ZNb250aC5qb2luKFwiLFwiKX07YCArXG4gICAgICAgICAgICAgICAgYCR7dGltZVBhcnRzfSR7c3VmZml4fWApO1xuICAgICAgICB9XG4gICAgICAgIC8vIENyb24gZGF5LW9mLW1vbnRoL2RheS1vZi13ZWVrIGNvbWJpbmF0aW9ucyBoYXZlIE9SLWxpa2Ugc2VtYW50aWNzXG4gICAgICAgIC8vIGluIG1hbnkgaW1wbGVtZW50YXRpb25zIGFuZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgc2FmZWx5IGFzIG9uZSBSUlVMRS5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcGFyc2VTaW1wbGVDcm9uKGV4cHJlc3Npb24sIGN0eCkge1xuICAgICAgICBjb25zdCB7IGxvZyB9ID0gdGhpcy5sb2dDdHgoW2N0eF0sIHRoaXMucGFyc2VTaW1wbGVDcm9uKTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gZXhwcmVzc2lvbi50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgaWYgKGZpZWxkcy5sZW5ndGggIT09IDUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW21pbnV0ZSwgaG91ciwgZGF5T2ZNb250aCwgbW9udGgsIGRheU9mV2Vla10gPSBmaWVsZHM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5wYXJzZUNyb25GaWVsZChtaW51dGUsIDAsIDU5LCBjdHgpLFxuICAgICAgICAgICAgICAgIGhvdXI6IHRoaXMucGFyc2VDcm9uRmllbGQoaG91ciwgMCwgMjMsIGN0eCksXG4gICAgICAgICAgICAgICAgZGF5T2ZNb250aDogZGF5T2ZNb250aCA9PT0gXCIqXCJcbiAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wYXJzZUNyb25GaWVsZChkYXlPZk1vbnRoLCAxLCAzMSwgY3R4KSxcbiAgICAgICAgICAgICAgICBtb250aDogbW9udGggPT09IFwiKlwiID8gbnVsbCA6IHRoaXMucGFyc2VDcm9uRmllbGQobW9udGgsIDEsIDEyLCBjdHgpLFxuICAgICAgICAgICAgICAgIGRheU9mV2VlazogZGF5T2ZXZWVrID09PSBcIipcIlxuICAgICAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnBhcnNlQ3JvbkZpZWxkKGRheU9mV2VlaywgMCwgNywgY3R4KS5tYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gNyA/IDAgOiB2YWx1ZSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZyhgRmFpbGVkIHRvIGdlbmVyYXRlIHNpbXBsZSBjcm9uIGV4cHJlc3Npb24gZm9yICR7ZXhwcmVzc2lvbn1gKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcGFyc2VDcm9uRmllbGQoZmllbGQsIG1pbmltdW0sIG1heGltdW0sIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBjdHgpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gbmV3IFNldCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHNlZ21lbnQgb2YgZmllbGQuc3BsaXQoXCIsXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBbcmFuZ2VFeHByZXNzaW9uLCBzdGVwRXhwcmVzc2lvbl0gPSBzZWdtZW50LnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSBzdGVwRXhwcmVzc2lvbiA9PT0gdW5kZWZpbmVkID8gMSA6IE51bWJlci5wYXJzZUludChzdGVwRXhwcmVzc2lvbiwgMTApO1xuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHN0ZXApIHx8IHN0ZXAgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEludmFsaWQgY3JvbiBzdGVwOiAke3NlZ21lbnR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc3RhcnQ7XG4gICAgICAgICAgICBsZXQgZW5kO1xuICAgICAgICAgICAgaWYgKHJhbmdlRXhwcmVzc2lvbiA9PT0gXCIqXCIpIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IG1pbmltdW07XG4gICAgICAgICAgICAgICAgZW5kID0gbWF4aW11bTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJhbmdlRXhwcmVzc2lvbi5pbmNsdWRlcyhcIi1cIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib3VuZHMgPSByYW5nZUV4cHJlc3Npb24uc3BsaXQoXCItXCIpO1xuICAgICAgICAgICAgICAgIGlmIChib3VuZHMubGVuZ3RoICE9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEludmFsaWQgY3JvbiByYW5nZTogJHtzZWdtZW50fWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGFydCA9IE51bWJlci5wYXJzZUludChib3VuZHNbMF0sIDEwKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBOdW1iZXIucGFyc2VJbnQoYm91bmRzWzFdLCAxMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IE51bWJlci5wYXJzZUludChyYW5nZUV4cHJlc3Npb24sIDEwKTtcbiAgICAgICAgICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihzdGFydCkgfHxcbiAgICAgICAgICAgICAgICAhTnVtYmVyLmlzSW50ZWdlcihlbmQpIHx8XG4gICAgICAgICAgICAgICAgc3RhcnQgPCBtaW5pbXVtIHx8XG4gICAgICAgICAgICAgICAgZW5kID4gbWF4aW11bSB8fFxuICAgICAgICAgICAgICAgIHN0YXJ0ID4gZW5kKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgSW52YWxpZCBjcm9uIGZpZWxkOiAke3NlZ21lbnR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSA9IHN0YXJ0OyB2YWx1ZSA8PSBlbmQ7IHZhbHVlICs9IHN0ZXApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuYWRkKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLnZhbHVlc10uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIH1cbiAgICBleHBhbmRDcm9uRGF0ZXMoY3Jvbiwgc3RhcnQsIHRpbWV6b25lLCBtYXhpbXVtLCB1bnRpbCkge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IENyb25FeHByZXNzaW9uUGFyc2VyLnBhcnNlKGNyb24sIHtcbiAgICAgICAgICAgIGN1cnJlbnREYXRlOiBzdGFydCxcbiAgICAgICAgICAgIHR6OiB0aW1lem9uZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG9jY3VycmVuY2VzID0gW107XG4gICAgICAgIHdoaWxlIChvY2N1cnJlbmNlcy5sZW5ndGggPCBtYXhpbXVtKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gaW50ZXJ2YWwubmV4dCgpLnRvRGF0ZSgpO1xuICAgICAgICAgICAgaWYgKHVudGlsICYmIG5leHQgPiB1bnRpbCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2NjdXJyZW5jZXMucHVzaChuZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2NjdXJyZW5jZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgY3JvbiBleHByZXNzaW9uIHByb2R1Y2VkIG5vIG9jY3VycmVuY2VzIGluIHRoZSByZXF1ZXN0ZWQgcmFuZ2UuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvY2N1cnJlbmNlcztcbiAgICB9XG4gICAgZ2V0Rmlyc3RPY2N1cnJlbmNlKGNyb24sIHN0YXJ0LCB0aW1lem9uZSkge1xuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IENyb25FeHByZXNzaW9uUGFyc2VyLnBhcnNlKGNyb24sIHtcbiAgICAgICAgICAgIGN1cnJlbnREYXRlOiBzdGFydCxcbiAgICAgICAgICAgIHR6OiB0aW1lem9uZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpbnRlcnZhbC5uZXh0KCkudG9EYXRlKCk7XG4gICAgfVxuICAgIGNyZWF0ZUZvbGRlZFJEYXRlTGluZXMoZGF0ZXMsIHRpbWV6b25lKSB7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IGBSREFURTtUWklEPSR7dGhpcy5lc2NhcGVQYXJhbWV0ZXIodGltZXpvbmUpfTpgO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBkYXRlcy5tYXAoKGRhdGUpID0+IHRoaXMuZm9ybWF0TG9jYWxEYXRlKGRhdGUsIHRpbWV6b25lKSk7XG4gICAgICAgIC8vIEtlZXAgZWFjaCBsb2dpY2FsIHByb3BlcnR5IHJlYXNvbmFibHkgc2l6ZWQgYmVmb3JlIFJGQyBsaW5lIGZvbGRpbmcuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudCA9IHByZWZpeDtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGN1cnJlbnQgPT09IHByZWZpeCA/IGAke2N1cnJlbnR9JHt2YWx1ZX1gIDogYCR7Y3VycmVudH0sJHt2YWx1ZX1gO1xuICAgICAgICAgICAgaWYgKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShjYW5kaWRhdGUpLmxlbmd0aCA+IDcwMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBgJHtwcmVmaXh9JHt2YWx1ZX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3VycmVudCAhPT0gcHJlZml4KSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChjdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBmb3JtYXRVdGNEYXRlKGRhdGUpIHtcbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICAgICAgICAgIC50b0lTT1N0cmluZygpXG4gICAgICAgICAgICAucmVwbGFjZSgvWy06XS9nLCBcIlwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLlxcZHszfVokLywgXCJaXCIpO1xuICAgIH1cbiAgICBmb3JtYXRMb2NhbERhdGUoZGF0ZSwgdGltZXpvbmUpIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChcImVuLUNBXCIsIHtcbiAgICAgICAgICAgIHRpbWVab25lOiB0aW1lem9uZSxcbiAgICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgICAgbW9udGg6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgZGF5OiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgICAgbWludXRlOiBcIjItZGlnaXRcIixcbiAgICAgICAgICAgIHNlY29uZDogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgICBob3VyQ3ljbGU6IFwiaDIzXCIsXG4gICAgICAgIH0pLmZvcm1hdFRvUGFydHMoZGF0ZSk7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5mcm9tRW50cmllcyhwYXJ0c1xuICAgICAgICAgICAgLmZpbHRlcigocGFydCkgPT4gcGFydC50eXBlICE9PSBcImxpdGVyYWxcIilcbiAgICAgICAgICAgIC5tYXAoKHBhcnQpID0+IFtwYXJ0LnR5cGUsIHBhcnQudmFsdWVdKSk7XG4gICAgICAgIHJldHVybiAoYCR7dmFsdWVzLnllYXJ9JHt2YWx1ZXMubW9udGh9JHt2YWx1ZXMuZGF5fWAgK1xuICAgICAgICAgICAgYFQke3ZhbHVlcy5ob3VyfSR7dmFsdWVzLm1pbnV0ZX0ke3ZhbHVlcy5zZWNvbmR9YCk7XG4gICAgfVxuICAgIGZvbGRMaW5lcyhsaW5lcykge1xuICAgICAgICByZXR1cm4gbGluZXMuZmxhdE1hcCgobGluZSkgPT4gdGhpcy5mb2xkTGluZShsaW5lKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJGQyA1NTQ1IGNvbnRlbnQgbGluZXMgc2hvdWxkIGJlIGZvbGRlZCBhdCA3NSBvY3RldHMuXG4gICAgICovXG4gICAgZm9sZExpbmUobGluZSkge1xuICAgICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBsZXQgcmVtYWluaW5nID0gbGluZTtcbiAgICAgICAgbGV0IGZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGVuY29kZXIuZW5jb2RlKGZpcnN0ID8gcmVtYWluaW5nIDogYCAke3JlbWFpbmluZ31gKS5sZW5ndGggPiA3NSkge1xuICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gZmlyc3QgPyBcIlwiIDogXCIgXCI7XG4gICAgICAgICAgICBsZXQgY2h1bmsgPSBcIlwiO1xuICAgICAgICAgICAgbGV0IGNvbnN1bWVkID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hhcmFjdGVyIG9mIHJlbWFpbmluZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGAke3ByZWZpeH0ke2NodW5rfSR7Y2hhcmFjdGVyfWA7XG4gICAgICAgICAgICAgICAgaWYgKGVuY29kZXIuZW5jb2RlKGNhbmRpZGF0ZSkubGVuZ3RoID4gNzUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNodW5rICs9IGNoYXJhY3RlcjtcbiAgICAgICAgICAgICAgICBjb25zdW1lZCArPSBjaGFyYWN0ZXIubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFjaHVuaykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmb2xkIGlDYWxlbmRhciBjb250ZW50IGxpbmUuXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7cHJlZml4fSR7Y2h1bmt9YCk7XG4gICAgICAgICAgICByZW1haW5pbmcgPSByZW1haW5pbmcuc2xpY2UoY29uc3VtZWQpO1xuICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChmaXJzdCA/IHJlbWFpbmluZyA6IGAgJHtyZW1haW5pbmd9YCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGVzY2FwZVRleHQodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxyP1xcbi9nLCBcIlxcXFxuXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvOy9nLCBcIlxcXFw7XCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvLC9nLCBcIlxcXFwsXCIpO1xuICAgIH1cbiAgICBlc2NhcGVQcm9wZXJ0eSh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvW1xcclxcbl0vZywgXCJcIik7XG4gICAgfVxuICAgIGVzY2FwZVBhcmFtZXRlcih2YWx1ZSkge1xuICAgICAgICBpZiAoIS9eW0EtWmEtejAtOV8rLi8tXSskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgVW5zYWZlIGlDYWxlbmRhciBwYXJhbWV0ZXI6ICR7dmFsdWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICB3ZWVrZGF5VG9JY3MoZGF5KSB7XG4gICAgICAgIGNvbnN0IGRheXMgPSBbXCJTVVwiLCBcIk1PXCIsIFwiVFVcIiwgXCJXRVwiLCBcIlRIXCIsIFwiRlJcIiwgXCJTQVwiXTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGF5c1tkYXldO1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgSW52YWxpZCB3ZWVrZGF5OiAke2RheX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBjcmVhdGVVaWQoKSB7XG4gICAgICAgIGNvbnN0IHJhbmRvbSA9IGdsb2JhbFRoaXMuY3J5cHRvPy5yYW5kb21VVUlEPy4oKSA/P1xuICAgICAgICAgICAgYCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zbGljZSgyKX1gO1xuICAgICAgICByZXR1cm4gYCR7cmFuZG9tfUBjYWxlbmRhci1zZXJ2aWNlYDtcbiAgICB9XG4gICAgY3JlYXRlRmlsZW5hbWUodGl0bGUpIHtcbiAgICAgICAgY29uc3Qgc2FmZVRpdGxlID0gdGl0bGVcbiAgICAgICAgICAgIC5ub3JtYWxpemUoXCJORktEXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvW15cXHcuLV0rL2csIFwiLVwiKVxuICAgICAgICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIilcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gYCR7c2FmZVRpdGxlIHx8IFwiY2FsZW5kYXItcmVtaW5kZXJcIn0uaWNzYDtcbiAgICB9XG4gICAgdmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zLmNyb24/LnRyaW0oKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcIkEgY3JvbiBleHByZXNzaW9uIGlzIHJlcXVpcmVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMudGl0bGU/LnRyaW0oKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcIkEgY2FsZW5kYXIgdGl0bGUgaXMgcmVxdWlyZWQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmR1cmF0aW9uTWludXRlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAoIU51bWJlci5pc0Zpbml0ZShvcHRpb25zLmR1cmF0aW9uTWludXRlcykgfHxcbiAgICAgICAgICAgICAgICBvcHRpb25zLmR1cmF0aW9uTWludXRlcyA8PSAwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcImR1cmF0aW9uTWludXRlcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5hbGFybU1pbnV0ZXNCZWZvcmUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKCFOdW1iZXIuaXNJbnRlZ2VyKG9wdGlvbnMuYWxhcm1NaW51dGVzQmVmb3JlKSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuYWxhcm1NaW51dGVzQmVmb3JlIDwgMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXCJhbGFybU1pbnV0ZXNCZWZvcmUgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5tYXhPY2N1cnJlbmNlcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAoIU51bWJlci5pc0ludGVnZXIob3B0aW9ucy5tYXhPY2N1cnJlbmNlcykgfHwgb3B0aW9ucy5tYXhPY2N1cnJlbmNlcyA8PSAwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcIm1heE9jY3VycmVuY2VzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLlwiKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5fX2RlY29yYXRlKFtcbiAgICBpbmplY3QoJ1wiY2FsZW5kYXItd3JpdGVyXCInKSxcbiAgICBfX21ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgT2JqZWN0KVxuXSwgQ2FsZW5kYXJTZXJ2aWNlLnByb3RvdHlwZSwgXCJ3cml0ZXJcIiwgdm9pZCAwKTtcbkNhbGVuZGFyU2VydmljZSA9IF9fZGVjb3JhdGUoW1xuICAgIHNlcnZpY2UoKVxuXSwgQ2FsZW5kYXJTZXJ2aWNlKTtcbmV4cG9ydCB7IENhbGVuZGFyU2VydmljZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUTJGc1pXNWtZWEpUWlhKMmFXTmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dmMzSmpMMk5oYkdWdVpHRnlMME5oYkdWdVpHRnlVMlZ5ZG1salpTNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdRVUZCUVN4UFFVRlBMRVZCUVN0Q0xFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNUVUZCVFN4blFrRkJaMElzUTBGQlF6dEJRVU12UlN4UFFVRlBMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNUVUZCVFN4aFFVRmhMRU5CUVVNN1FVRlBia1FzVDBGQlR5eEZRVUZGTEdGQlFXRXNSVUZCUlN4bFFVRmxMRVZCUVVVc1RVRkJUU3g1UWtGQmVVSXNRMEZCUXp0QlFVVjZSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNhVU5CUVdsRExFTkJRVU03UVVGRmVrUTdPenM3TzBkQlMwYzdRVUZGU1N4SlFVRk5MR1ZCUVdVc1IwRkJja0lzVFVGQlRTeGxRVUZuUWl4VFFVRlJMRTlCUVU4N1NVRkpia01zUzBGQlN5eERRVUZETEhkQ1FVRjNRaXhEUVVOdVF5eFBRVUZuUXl4RlFVTm9ReXhIUVVGSExFbEJRVFpDTzFGQlJXaERMRTFCUVUwc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZEYmtJc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVU53UkN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zZDBKQlFYZENMRU5CUVVNc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJSVGxDTEUxQlFVMHNTMEZCU3l4SFFVRkhMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVWdVJTeE5RVUZOTEZGQlFWRXNSMEZEV2l4UFFVRlBMRU5CUVVNc1VVRkJVVHRaUVVOb1FpeEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU1zVVVGQlVUdFpRVU5vUkN4TFFVRkxMRU5CUVVNN1VVRkZVaXhOUVVGTkxHVkJRV1VzUjBGQlJ5eFBRVUZQTEVOQlFVTXNaVUZCWlN4SlFVRkpMRVZCUVVVc1EwRkJRenRSUVVOMFJDeE5RVUZOTEd0Q1FVRnJRaXhIUVVGSExFOUJRVThzUTBGQlF5eHJRa0ZCYTBJc1NVRkJTU3hGUVVGRkxFTkJRVU03VVVGRE5VUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1VVRkZOVU1zVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEU5QlFVOHNSVUZCUlN4TFFVRkxMRVZCUVVVc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJYaEZMRTFCUVUwc1pVRkJaU3hIUVVOdVFpeFZRVUZWTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM1JDTEVsQlFVa3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFJRVVY2UkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1pVRkJaU3hIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlJUTkZMRTFCUVUwc1MwRkJTeXhIUVVGaE8xbEJRM1JDTEdsQ1FVRnBRanRaUVVOcVFpeGhRVUZoTzFsQlEySXNiMEpCUVc5Q08xbEJRM0JDTEhGRFFVRnhRenRaUVVOeVF5eG5Ra0ZCWjBJN1dVRkRhRUlzWTBGQll6dFpRVU5rTEU5QlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJUdFpRVU5xUXl4WFFVRlhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXpORExHZENRVUZuUWl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUTNCRkxHVkJRV1VzUlVGRFppeFJRVUZSTEVOQlExUXNSVUZCUlR0WlFVTklMR05CUVdNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVOc1JTeEhRVUZITEVWQlEwZ3NVVUZCVVN4RFFVTlVMRVZCUVVVN1dVRkRTQ3hYUVVGWExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8xTkJRelZETEVOQlFVTTdVVUZGUml4SlFVRkpMRTlCUVU4c1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFpRVU40UWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEzQkZMRU5CUVVNN1VVRkZSQ3hKUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0WlFVTnlRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUXpsRUxFTkJRVU03VVVGRlJDeEpRVUZKTEZWQlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRaUVVOeVFpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1ZVRkJWU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZETVVNc1EwRkJRenRSUVVWRUxFbEJRVWtzVlVGQlZTeERRVUZETEUxQlFVMHNTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXp0WlFVTjBSQ3h0UkVGQmJVUTdXVUZEYmtRc1RVRkJUU3hUUVVGVExFZEJRVWNzVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRk4wTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhUUVVGVExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnNSU3hEUVVGRE8xRkJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNZMEZCWXl4RlFVRkZMRU5CUVVNN1dVRkRNMElzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZEVWl4dlFrRkJiMElzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1kwRkJZeXhEUVVGRExFVkJRVVVzUTBGRGJFVXNRMEZCUXp0UlFVTktMRU5CUVVNN1VVRkZSQ3hKUVVGSkxFOUJRVThzUTBGQlF5eGhRVUZoTEVWQlFVVXNRMEZCUXp0WlFVTXhRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVU5TTzJkQ1FVTkZMRlZCUVZVN1owSkJRMVlzYlVKQlFXMUNPMmRDUVVOdVFpeHpRa0ZCYzBJN1owSkJRM1JDTEhWQ1FVRjFRanRuUWtGRGRrSXNWMEZCVnp0aFFVTmFMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEZkQlFWY3NTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNRMEZEZEVVc1EwRkJRenRSUVVOS0xFTkJRVU03VVVGRlJDeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVTlNMR05CUVdNc1JVRkRaQ3huUWtGQlowSXNSVUZEYUVJc1kwRkJZeXhyUWtGQmEwSXNSMEZCUnl4RlFVTnVReXhsUVVGbExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFVkJReTlETEZsQlFWa3NSVUZEV2l4WlFVRlpMRVZCUTFvc1pVRkJaU3hEUVVOb1FpeERRVUZETzFGQlJVWXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETzFGQlF6VkVMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSWEJFTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc01rSkJRVEpDTEZGQlFWRXNSVUZCUlN4RFFVRkRMRU5CUVVNN1VVRkRia1FzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4bFFVRmxMRkZCUVZFc1MwRkJTeXhQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJXcEVMRTlCUVU4N1dVRkRUQ3hSUVVGUk8xbEJRMUlzVDBGQlR6dFpRVU5RTEZGQlFWRXNSVUZCUlN4bFFVRmxPMWxCUTNwQ0xFdEJRVXNzUlVGQlJTeEpRVUZKTEZkQlFWY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU03VTBGRGVrTXNRMEZCUXp0SlFVTktMRU5CUVVNN1NVRkZUU3hMUVVGTExFTkJRVU1zYzBKQlFYTkNMRU5CUTJwRExFOUJRV2RETEVWQlEyaERMRWRCUVVjc1NVRkJOa0k3VVVGRmFFTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hoUVVGaExFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVOMlJTeEpRVUZKTEVOQlFVTXNjMEpCUVhOQ0xFTkJRelZDTEVOQlFVTTdVVUZGUml4TlFVRk5MRWxCUVVrc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eDNRa0ZCZDBJc1EwRkJReXhQUVVGUExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGTDBRc1RVRkJUU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGNrTXNRMEZCUXp0SlFVVlBMR2RDUVVGblFpeERRVU4wUWl4UFFVRm5ReXhGUVVOb1F5eExRVUZYTEVWQlExZ3NVVUZCWjBJc1JVRkRhRUlzUjBGQmFVSTdVVUZGYWtJc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlEzWkVMRTFCUVUwc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU03VVVGRk5VVXNTVUZCU1N4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVOWUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4M1FrRkJkMElzUTBGQlF5eE5RVUZOTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1dVRkZNMFFzU1VGQlNTeExRVUZMTEVWQlFVVXNRMEZCUXp0blFrRkRWaXhQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZEYmtJc1EwRkJRenRSUVVOSUxFTkJRVU03VVVGRlJDeFBRVUZQTzFsQlEwd3NUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRekZDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRVZCUTFvc1MwRkJTeXhGUVVOTUxGRkJRVkVzUlVGRFVpeFBRVUZQTEVOQlFVTXNZMEZCWXl4SlFVRkpMRWRCUVVjc1JVRkROMElzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZEWkR0VFFVTkdMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVVE3T3pzN1QwRkpSenRKUVVOTExIZENRVUYzUWl4RFFVTTVRaXhKUVVGblFpeEZRVU5vUWl4TFFVRmpPMUZCUldRc1RVRkJUU3hOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4VlFVRlZMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdVVUZGT1VNc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZiRU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NWVUZCVlN4TFFVRkxMR0ZCUVdFc1QwRkJUeXhoUVVGaExFTkJRVU03VVVGRmJrVXNUVUZCVFN4UlFVRlJMRWRCUTFvc1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eEpRVUZKTzFsQlEzaENMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNUdFpRVU51UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExFbEJRVWtzUTBGQlF6dFJRVVV4UWl4SlFVRkpMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRMklzVDBGQlR5eGpRVUZqTEZOQlFWTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1EwRkJRenRSUVVNMVF5eERRVUZETzFGQlJVUXNUVUZCVFN4TlFVRk5MRWRCUTFZc1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eEpRVUZKTzFsQlEzaENMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNUdFpRVU51UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExFbEJRVWtzUTBGQlF6dFJRVVV4UWl4SlFVRkpMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRMWdzVFVGQlRTeFJRVUZSTEVkQlFVY3NTVUZCU1R0cFFrRkRiRUlzVTBGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRwUWtGREwwTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJSV0lzVDBGQlR5eHhRa0ZCY1VJc1VVRkJVU3hKUVVGSkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNRMEZCUXp0UlFVTXZSQ3hEUVVGRE8xRkJSVVFzVFVGQlRTeFBRVUZQTEVkQlExZ3NTVUZCU1N4RFFVRkRMRlZCUVZVc1MwRkJTeXhKUVVGSk8xbEJRM2hDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRXRCUVVzc1NVRkJTVHRaUVVOdVFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVVeFFpeEpRVUZKTEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTFvc1QwRkJUeXhEUVVOTUxESkNRVUV5UWl4SlFVRkpMRU5CUVVNc1ZVRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnp0blFrRkRlRVFzUjBGQlJ5eFRRVUZUTEVkQlFVY3NUVUZCVFN4RlFVRkZMRU5CUTNoQ0xFTkJRVU03VVVGRFNpeERRVUZETzFGQlJVUXNUVUZCVFN4TlFVRk5MRWRCUTFZc1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eEpRVUZKTzFsQlEzaENMRWxCUVVrc1EwRkJReXhMUVVGTExFdEJRVXNzU1VGQlNUdFpRVU51UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhMUVVGTExFbEJRVWtzUTBGQlF6dFJRVVV4UWl4SlFVRkpMRTFCUVUwc1JVRkJSU3hEUVVGRE8xbEJRMWdzVDBGQlR5eERRVU5NTEhWQ1FVRjFRaXhKUVVGSkxFTkJRVU1zUzBGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSenRuUWtGREwwTXNZMEZCWXl4SlFVRkpMRU5CUVVNc1ZVRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnp0blFrRkRNME1zUjBGQlJ5eFRRVUZUTEVkQlFVY3NUVUZCVFN4RlFVRkZMRU5CUTNoQ0xFTkJRVU03VVVGRFNpeERRVUZETzFGQlJVUXNiMFZCUVc5Rk8xRkJRM0JGTEhsRlFVRjVSVHRSUVVONlJTeFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVThzWlVGQlpTeERRVU55UWl4VlFVRnJRaXhGUVVOc1FpeEhRVUZwUWp0UlFVVnFRaXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1EwRkJRenRSUVVONlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4VlFVRlZMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRsRExFbEJRVWtzVFVGQlRTeERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVONFFpeFBRVUZQTEZOQlFWTXNRMEZCUXp0UlFVTnVRaXhEUVVGRE8xRkJSVVFzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNN1VVRkZOVVFzU1VGQlNTeERRVUZETzFsQlEwZ3NUMEZCVHp0blFrRkRUQ3hOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTTdaMEpCUXk5RExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVkQlFVY3NRMEZCUXp0blFrRkRNME1zVlVGQlZTeEZRVU5TTEZWQlFWVXNTMEZCU3l4SFFVRkhPMjlDUVVOb1FpeERRVUZETEVOQlFVTXNTVUZCU1R0dlFrRkRUaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJTeEhRVUZITEVOQlFVTTdaMEpCUTJwRUxFdEJRVXNzUlVGQlJTeExRVUZMTEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVWQlFVVXNSMEZCUnl4RFFVRkRPMmRDUVVOd1JTeFRRVUZUTEVWQlExQXNVMEZCVXl4TFFVRkxMRWRCUVVjN2IwSkJRMllzUTBGQlF5eERRVUZETEVsQlFVazdiMEpCUTA0c1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGRGRFUXNTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUTNoQ08yRkJRMUlzUTBGQlF6dFJRVU5LTEVOQlFVTTdVVUZCUXl4TlFVRk5MRU5CUVVNN1dVRkRVQ3hIUVVGSExFTkJRVU1zUzBGQlN5eERRVUZETEdsRVFVRnBSQ3hWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlEzcEZMRTlCUVU4c1UwRkJVeXhEUVVGRE8xRkJRMjVDTEVOQlFVTTdTVUZEU0N4RFFVRkRPMGxCUlU4c1kwRkJZeXhEUVVOd1FpeExRVUZoTEVWQlEySXNUMEZCWlN4RlFVTm1MRTlCUVdVN1NVRkRaaXcyUkVGQk5rUTdTVUZETjBRc1IwRkJhVUk3VVVGRmFrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hIUVVGSExFVkJRVlVzUTBGQlF6dFJRVVZxUXl4TFFVRkxMRTFCUVUwc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVOMlF5eE5RVUZOTEVOQlFVTXNaVUZCWlN4RlFVRkZMR05CUVdNc1EwRkJReXhIUVVGSExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkZOMFFzVFVGQlRTeEpRVUZKTEVkQlExSXNZMEZCWXl4TFFVRkxMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExHTkJRV01zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVVjZSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTTdaMEpCUTNwRExFMUJRVTBzU1VGQlNTeGxRVUZsTEVOQlFVTXNjMEpCUVhOQ0xFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTTdXVUZETjBRc1EwRkJRenRaUVVWRUxFbEJRVWtzUzBGQllTeERRVUZETzFsQlEyeENMRWxCUVVrc1IwRkJWeXhEUVVGRE8xbEJSV2hDTEVsQlFVa3NaVUZCWlN4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU0xUWl4TFFVRkxMRWRCUVVjc1QwRkJUeXhEUVVGRE8yZENRVU5vUWl4SFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRE8xbEJRMmhDTEVOQlFVTTdhVUpCUVUwc1NVRkJTU3hsUVVGbExFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNN1owSkJRM3BETEUxQlFVMHNUVUZCVFN4SFFVRkhMR1ZCUVdVc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdaMEpCUlRGRExFbEJRVWtzVFVGQlRTeERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJRenR2UWtGRGVFSXNUVUZCVFN4SlFVRkpMR1ZCUVdVc1EwRkJReXgxUWtGQmRVSXNUMEZCVHl4RlFVRkZMRU5CUVVNc1EwRkJRenRuUWtGRE9VUXNRMEZCUXp0blFrRkZSQ3hMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdaMEpCUTNaRExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTjJReXhEUVVGRE8ybENRVUZOTEVOQlFVTTdaMEpCUTA0c1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eFJRVUZSTEVOQlFVTXNaVUZCWlN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8yZENRVU0zUXl4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVGRE8xbEJRMlFzUTBGQlF6dFpRVVZFTEVsQlEwVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF6dG5Ra0ZEZUVJc1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXp0blFrRkRkRUlzUzBGQlN5eEhRVUZITEU5QlFVODdaMEpCUTJZc1IwRkJSeXhIUVVGSExFOUJRVTg3WjBKQlEySXNTMEZCU3l4SFFVRkhMRWRCUVVjc1JVRkRXQ3hEUVVGRE8yZENRVU5FTEUxQlFVMHNTVUZCU1N4bFFVRmxMRU5CUVVNc2RVSkJRWFZDTEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkRPVVFzUTBGQlF6dFpRVVZFTEV0QlFVc3NTVUZCU1N4TFFVRkxMRWRCUVVjc1MwRkJTeXhGUVVGRkxFdEJRVXNzU1VGQlNTeEhRVUZITEVWQlFVVXNTMEZCU3l4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRE8yZENRVU53UkN4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlEzQkNMRU5CUVVNN1VVRkRTQ3hEUVVGRE8xRkJSVVFzVDBGQlR5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6TkRMRU5CUVVNN1NVRkZUeXhsUVVGbExFTkJRM0pDTEVsQlFWa3NSVUZEV2l4TFFVRlhMRVZCUTFnc1VVRkJaMElzUlVGRGFFSXNUMEZCWlN4RlFVTm1MRXRCUVZrN1VVRkZXaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTzFsQlEyaEVMRmRCUVZjc1JVRkJSU3hMUVVGTE8xbEJRMnhDTEVWQlFVVXNSVUZCUlN4UlFVRlJPMU5CUTJJc1EwRkJReXhEUVVGRE8xRkJSVWdzVFVGQlRTeFhRVUZYTEVkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUlM5Q0xFOUJRVThzVjBGQlZ5eERRVUZETEUxQlFVMHNSMEZCUnl4UFFVRlBMRVZCUVVVc1EwRkJRenRaUVVOd1F5eE5RVUZOTEVsQlFVa3NSMEZCUnl4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTTdXVUZGZEVNc1NVRkJTU3hMUVVGTExFbEJRVWtzU1VGQlNTeEhRVUZITEV0QlFVc3NSVUZCUlN4RFFVRkRPMmRDUVVNeFFpeE5RVUZOTzFsQlExSXNRMEZCUXp0WlFVVkVMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEZWtJc1EwRkJRenRSUVVWRUxFbEJRVWtzVjBGQlZ5eERRVUZETEUxQlFVMHNTMEZCU3l4RFFVRkRMRVZCUVVVc1EwRkJRenRaUVVNM1FpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVTmlMSEZGUVVGeFJTeERRVU4wUlN4RFFVRkRPMUZCUTBvc1EwRkJRenRSUVVWRUxFOUJRVThzVjBGQlZ5eERRVUZETzBsQlEzSkNMRU5CUVVNN1NVRkZUeXhyUWtGQmEwSXNRMEZEZUVJc1NVRkJXU3hGUVVOYUxFdEJRVmNzUlVGRFdDeFJRVUZuUWp0UlFVVm9RaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEZRVUZGTzFsQlEyaEVMRmRCUVZjc1JVRkJSU3hMUVVGTE8xbEJRMnhDTEVWQlFVVXNSVUZCUlN4UlFVRlJPMU5CUTJJc1EwRkJReXhEUVVGRE8xRkJSVWdzVDBGQlR5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03U1VGRGJFTXNRMEZCUXp0SlFVVlBMSE5DUVVGelFpeERRVUZETEV0QlFXRXNSVUZCUlN4UlFVRm5RanRSUVVNMVJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4alFVRmpMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXp0UlFVVXZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYcEZMSFZGUVVGMVJUdFJRVU4yUlN4TlFVRk5MRTFCUVUwc1IwRkJZU3hGUVVGRkxFTkJRVU03VVVGRE5VSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJSWEpDTEV0QlFVc3NUVUZCVFN4TFFVRkxMRWxCUVVrc1RVRkJUU3hGUVVGRkxFTkJRVU03V1VGRE0wSXNUVUZCVFN4VFFVRlRMRWRCUTJJc1QwRkJUeXhMUVVGTExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UFFVRlBMRWRCUVVjc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUMEZCVHl4SlFVRkpMRXRCUVVzc1JVRkJSU3hEUVVGRE8xbEJSWEJGTEVsQlFVa3NTVUZCU1N4WFFVRlhMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRE8yZENRVU55UkN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzJkQ1FVTnlRaXhQUVVGUExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVkQlFVY3NTMEZCU3l4RlFVRkZMRU5CUVVNN1dVRkRhRU1zUTBGQlF6dHBRa0ZCVFN4RFFVRkRPMmRDUVVOT0xFOUJRVThzUjBGQlJ5eFRRVUZUTEVOQlFVTTdXVUZEZEVJc1EwRkJRenRSUVVOSUxFTkJRVU03VVVGRlJDeEpRVUZKTEU5QlFVOHNTMEZCU3l4TlFVRk5MRVZCUVVVc1EwRkJRenRaUVVOMlFpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM1pDTEVOQlFVTTdVVUZGUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVOHNZVUZCWVN4RFFVRkRMRWxCUVZVN1VVRkRPVUlzVDBGQlR5eEpRVUZKTzJGQlExSXNWMEZCVnl4RlFVRkZPMkZCUTJJc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEVOQlFVTTdZVUZEY0VJc1QwRkJUeXhEUVVGRExGZEJRVmNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTXZRaXhEUVVGRE8wbEJSVThzWlVGQlpTeERRVUZETEVsQlFWVXNSVUZCUlN4UlFVRm5RanRSUVVOc1JDeE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zVDBGQlR5eEZRVUZGTzFsQlF6ZERMRkZCUVZFc1JVRkJSU3hSUVVGUk8xbEJRMnhDTEVsQlFVa3NSVUZCUlN4VFFVRlRPMWxCUTJZc1MwRkJTeXhGUVVGRkxGTkJRVk03V1VGRGFFSXNSMEZCUnl4RlFVRkZMRk5CUVZNN1dVRkRaQ3hKUVVGSkxFVkJRVVVzVTBGQlV6dFpRVU5tTEUxQlFVMHNSVUZCUlN4VFFVRlRPMWxCUTJwQ0xFMUJRVTBzUlVGQlJTeFRRVUZUTzFsQlEycENMRk5CUVZNc1JVRkJSU3hMUVVGTE8xTkJRMnBDTEVOQlFVTXNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRmRrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRExGZEJRVmNzUTBGREwwSXNTMEZCU3p0aFFVTkdMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhUUVVGVExFTkJRVU03WVVGRGVrTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlF6RkRMRU5CUVVNN1VVRkZSaXhQUVVGUExFTkJRMHdzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4SFFVRkhMRTFCUVUwc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlR0WlFVTTFReXhKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlEyeEVMRU5CUVVNN1NVRkRTaXhEUVVGRE8wbEJSVThzVTBGQlV5eERRVUZETEV0QlFXVTdVVUZETDBJc1QwRkJUeXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRkRVFzUTBGQlF6dEpRVVZFT3p0UFFVVkhPMGxCUTBzc1VVRkJVU3hEUVVGRExFbEJRVms3VVVGRE0wSXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hYUVVGWExFVkJRVVVzUTBGQlF6dFJRVU5zUXl4TlFVRk5MRTFCUVUwc1IwRkJZU3hGUVVGRkxFTkJRVU03VVVGRE5VSXNTVUZCU1N4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVWcVFpeFBRVUZQTEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkRka1VzVFVGQlRTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXp0WlFVTm9ReXhKUVVGSkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEWml4SlFVRkpMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRmFrSXNTMEZCU3l4TlFVRk5MRk5CUVZNc1NVRkJTU3hUUVVGVExFVkJRVVVzUTBGQlF6dG5Ra0ZEYkVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUjBGQlJ5eE5RVUZOTEVkQlFVY3NTMEZCU3l4SFFVRkhMRk5CUVZNc1JVRkJSU3hEUVVGRE8yZENRVVZzUkN4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRE8yOUNRVU14UXl4TlFVRk5PMmRDUVVOU0xFTkJRVU03WjBKQlJVUXNTMEZCU3l4SlFVRkpMRk5CUVZNc1EwRkJRenRuUWtGRGJrSXNVVUZCVVN4SlFVRkpMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU03V1VGREwwSXNRMEZCUXp0WlFVVkVMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZEV0N4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIZERRVUYzUXl4RFFVRkRMRU5CUVVNN1dVRkROVVFzUTBGQlF6dFpRVVZFTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhOUVVGTkxFZEJRVWNzUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXp0WlFVTnFReXhUUVVGVExFZEJRVWNzVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRaUVVOMFF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTJoQ0xFTkJRVU03VVVGRlJDeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRmFrUXNUMEZCVHl4TlFVRk5MRU5CUVVNN1NVRkRhRUlzUTBGQlF6dEpRVVZQTEZWQlFWVXNRMEZCUXl4TFFVRmhPMUZCUXpsQ0xFOUJRVThzUzBGQlN6dGhRVU5VTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hEUVVGRE8yRkJRM1JDTEU5QlFVOHNRMEZCUXl4UlFVRlJMRVZCUVVVc1MwRkJTeXhEUVVGRE8yRkJRM2hDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRE8yRkJRM0JDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03U1VGRE1VSXNRMEZCUXp0SlFVVlBMR05CUVdNc1EwRkJReXhMUVVGaE8xRkJRMnhETEU5QlFVOHNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdTVUZEZEVNc1EwRkJRenRKUVVWUExHVkJRV1VzUTBGQlF5eExRVUZoTzFGQlEyNURMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzUTBGQlF6dFpRVU4yUXl4TlFVRk5MRWxCUVVrc1pVRkJaU3hEUVVGRExDdENRVUVyUWl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRM0JGTEVOQlFVTTdVVUZGUkN4UFFVRlBMRXRCUVVzc1EwRkJRenRKUVVObUxFTkJRVU03U1VGRlR5eFpRVUZaTEVOQlFVTXNSMEZCVnp0UlFVTTVRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM2hFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVY2UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03V1VGRFdpeE5RVUZOTEVsQlFVa3NaVUZCWlN4RFFVRkRMRzlDUVVGdlFpeEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNaRUxFTkJRVU03VVVGRlJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJSVThzVTBGQlV6dFJRVU5tTEUxQlFVMHNUVUZCVFN4SFFVTldMRlZCUVZVc1EwRkJReXhOUVVGTkxFVkJRVVVzVlVGQlZTeEZRVUZGTEVWQlFVVTdXVUZEYWtNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6dFJRVVY2UkN4UFFVRlBMRWRCUVVjc1RVRkJUU3h0UWtGQmJVSXNRMEZCUXp0SlFVTjBReXhEUVVGRE8wbEJSVThzWTBGQll5eERRVUZETEV0QlFXRTdVVUZEYkVNc1RVRkJUU3hUUVVGVExFZEJRVWNzUzBGQlN6dGhRVU53UWl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRE8yRkJRMnBDTEU5QlFVOHNRMEZCUXl4WFFVRlhMRVZCUVVVc1IwRkJSeXhEUVVGRE8yRkJRM3BDTEU5QlFVOHNRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRE8yRkJRM1pDTEZkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUldwQ0xFOUJRVThzUjBGQlJ5eFRRVUZUTEVsQlFVa3NiVUpCUVcxQ0xFMUJRVTBzUTBGQlF6dEpRVU51UkN4RFFVRkRPMGxCUlU4c1pVRkJaU3hEUVVGRExFOUJRV2RETzFGQlEzUkVMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkRNVUlzVFVGQlRTeEpRVUZKTEdWQlFXVXNRMEZCUXl4blEwRkJaME1zUTBGQlF5eERRVUZETzFGQlF6bEVMRU5CUVVNN1VVRkZSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRek5DTEUxQlFVMHNTVUZCU1N4bFFVRmxMRU5CUVVNc0swSkJRU3RDTEVOQlFVTXNRMEZCUXp0UlFVTTNSQ3hEUVVGRE8xRkJSVVFzU1VGRFJTeFBRVUZQTEVOQlFVTXNaVUZCWlN4TFFVRkxMRk5CUVZNN1dVRkRja01zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExHVkJRV1VzUTBGQlF6dG5Ra0ZEZUVNc1QwRkJUeXhEUVVGRExHVkJRV1VzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZETDBJc1EwRkJRenRaUVVORUxFMUJRVTBzU1VGQlNTeGxRVUZsTEVOQlFVTXNORU5CUVRSRExFTkJRVU1zUTBGQlF6dFJRVU14UlN4RFFVRkRPMUZCUlVRc1NVRkRSU3hQUVVGUExFTkJRVU1zYTBKQlFXdENMRXRCUVVzc1UwRkJVenRaUVVONFF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1owSkJRelZETEU5QlFVOHNRMEZCUXl4clFrRkJhMElzUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZEYWtNc1EwRkJRenRaUVVORUxFMUJRVTBzU1VGQlNTeGxRVUZsTEVOQlEzWkNMRzlFUVVGdlJDeERRVU55UkN4RFFVRkRPMUZCUTBvc1EwRkJRenRSUVVWRUxFbEJRMFVzVDBGQlR5eERRVUZETEdOQlFXTXNTMEZCU3l4VFFVRlRPMWxCUTNCRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNZMEZCWXl4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVNeFJTeERRVUZETzFsQlEwUXNUVUZCVFN4SlFVRkpMR1ZCUVdVc1EwRkJReXcwUTBGQk5FTXNRMEZCUXl4RFFVRkRPMUZCUXpGRkxFTkJRVU03U1VGRFNDeERRVUZETzBOQlEwWXNRMEZCUVR0QlFTOW9RbGM3U1VGRVZDeE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU03T3l0RFFVTlBPMEZCUm5oQ0xHVkJRV1U3U1VGRU0wSXNUMEZCVHl4RlFVRkZPMGRCUTBjc1pVRkJaU3hEUVdscFFqTkNJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnUTI5dWRHVjRkQ3dnVFdGNVltVkRiMjUwWlhoMGRXRnNRWEpuTENCelpYSjJhV05sTENCVFpYSjJhV05sSUgwZ1puSnZiU0JjSWtCa1pXTmhaaTEwY3k5amIzSmxYQ0k3WEc1cGJYQnZjblFnZXlCRGNtOXVSWGh3Y21WemMybHZibEJoY25ObGNpQjlJR1p5YjIwZ1hDSmpjbTl1TFhCaGNuTmxjbHdpTzF4dWFXMXdiM0owSUh0Y2JpQWdRMkZzWlc1a1lYSkdhV3hsTEZ4dUlDQkRZV3hsYm1SaGNsSmxiV2x1WkdWeVQzQjBhVzl1Y3l4Y2JpQWdVR0Z5YzJWa1EzSnZiaXhjYmlBZ1VtVmpkWEp5Wlc1alpWSmxjM1ZzZEN4Y2JuMGdabkp2YlNCY0lpNHZkSGx3WlhOY0lqdGNibWx0Y0c5eWRDQjdJRTl3WlhKaGRHbHZia3RsZVhNc0lGWmhiR2xrWVhScGIyNUZjbkp2Y2lCOUlHWnliMjBnWENKQVpHVmpZV1l0ZEhNdlpHSXRaR1ZqYjNKaGRHOXljMXdpTzF4dWFXMXdiM0owSUhzZ2RIbHdaU0JKUTJGc1pXNWtZWEpYY21sMFpYSWdmU0JtY205dElGd2lMaTkzY21sMFpYSnpMMGxEWVd4bGJtUmhjbGR5YVhSbGNsd2lPMXh1YVcxd2IzSjBJSHNnYVc1cVpXTjBJSDBnWm5KdmJTQmNJa0JrWldOaFppMTBjeTlwYm1wbFkzUmhZbXhsTFdSbFkyOXlZWFJ2Y25OY0lqdGNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR2x1ZEdWeWIzQmxjbUZpYkdVZ2FVTmhiR1Z1WkdGeUlHMWxaR2xqWVhScGIyNGdjbVZ0YVc1a1pYSnpMbHh1SUNwY2JpQXFJRlJvWlNCelpYSjJhV05sSUdoaGN5QnVieUJ6ZEdGMGFXTWdUbTlrWlNCcGJYQnZjblJ6TENCemJ5QjBhR1VnYzJGdFpTQnRiMlIxYkdVZ1kyRnVJR0psSUdKMWJtUnNaV1JjYmlBcUlHWnZjaUJpY205M2MyVnljeTRnVG05a1pTMXZibXg1SUdacGJHVnplWE4wWlcwZ1ltVm9ZWFpwYjNJZ2FYTWdiRzloWkdWa0lHUjVibUZ0YVdOaGJHeDVMbHh1SUNvdlhHNUFjMlZ5ZG1salpTZ3BYRzVsZUhCdmNuUWdZMnhoYzNNZ1EyRnNaVzVrWVhKVFpYSjJhV05sSUdWNGRHVnVaSE1nVTJWeWRtbGpaU0I3WEc0Z0lFQnBibXBsWTNRb0oxd2lZMkZzWlc1a1lYSXRkM0pwZEdWeVhDSW5LVnh1SUNCd2NtOTBaV04wWldRZ2QzSnBkR1Z5SVRvZ1NVTmhiR1Z1WkdGeVYzSnBkR1Z5TzF4dVhHNGdJSEIxWW14cFl5QmhjM2x1WXlCamNtVmhkR1ZOWldScFkyRjBhVzl1VW1WdGFXNWtaWElvWEc0Z0lDQWdiM0IwYVc5dWN6b2dRMkZzWlc1a1lYSlNaVzFwYm1SbGNrOXdkR2x2Ym5Nc1hHNGdJQ0FnTGk0dVlYSm5jem9nVFdGNVltVkRiMjUwWlhoMGRXRnNRWEpuUEdGdWVUNWNiaUFnS1RvZ1VISnZiV2x6WlR4RFlXeGxibVJoY2tacGJHVStJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHeHZaeXdnWTNSNElIMGdQU0FvWEc0Z0lDQWdJQ0JoZDJGcGRDQjBhR2x6TG14dlowTjBlQ2hoY21kekxDQlBjR1Z5WVhScGIyNUxaWGx6TGtOU1JVRlVSU3dnZEhKMVpTbGNiaUFnSUNBcExtWnZjaWgwYUdsekxtTnlaV0YwWlUxbFpHbGpZWFJwYjI1U1pXMXBibVJsY2lrN1hHNGdJQ0FnZEdocGN5NTJZV3hwWkdGMFpVOXdkR2x2Ym5Nb2IzQjBhVzl1Y3lrN1hHNWNiaUFnSUNCamIyNXpkQ0J6ZEdGeWRDQTlJRzl3ZEdsdmJuTXVjM1JoY25RZ1B5QnVaWGNnUkdGMFpTaHZjSFJwYjI1ekxuTjBZWEowS1NBNklHNWxkeUJFWVhSbEtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCMGFXMWxlbTl1WlNBOVhHNGdJQ0FnSUNCdmNIUnBiMjV6TG5ScGJXVjZiMjVsSUQ4L1hHNGdJQ0FnSUNCSmJuUnNMa1JoZEdWVWFXMWxSbTl5YldGMEtDa3VjbVZ6YjJ4MlpXUlBjSFJwYjI1ektDa3VkR2x0WlZwdmJtVWdQejljYmlBZ0lDQWdJRndpVlZSRFhDSTdYRzVjYmlBZ0lDQmpiMjV6ZENCa2RYSmhkR2x2YmsxcGJuVjBaWE1nUFNCdmNIUnBiMjV6TG1SMWNtRjBhVzl1VFdsdWRYUmxjeUEvUHlBeE5UdGNiaUFnSUNCamIyNXpkQ0JoYkdGeWJVMXBiblYwWlhOQ1pXWnZjbVVnUFNCdmNIUnBiMjV6TG1Gc1lYSnRUV2x1ZFhSbGMwSmxabTl5WlNBL1B5QXhNRHRjYmlBZ0lDQmpiMjV6ZENCMWFXUWdQU0J2Y0hScGIyNXpMblZwWkNBL1B5QjBhR2x6TG1OeVpXRjBaVlZwWkNncE8xeHVYRzRnSUNBZ1kyOXVjM1FnY21WamRYSnlaVzVqWlNBOUlIUm9hWE11WTNKbFlYUmxVbVZqZFhKeVpXNWpaU2h2Y0hScGIyNXpMQ0J6ZEdGeWRDd2dkR2x0WlhwdmJtVXNJR04wZUNrN1hHNWNiaUFnSUNCamIyNXpkQ0JtYVhKemRFOWpZM1Z5Y21WdVkyVWdQVnh1SUNBZ0lDQWdjbVZqZFhKeVpXNWpaUzV5WkdGMFpYTS9MbHN3WFNBL1AxeHVJQ0FnSUNBZ2RHaHBjeTVuWlhSR2FYSnpkRTlqWTNWeWNtVnVZMlVvYjNCMGFXOXVjeTVqY205dUxDQnpkR0Z5ZEN3Z2RHbHRaWHB2Ym1VcE8xeHVYRzRnSUNBZ1kyOXVjM1FnWlc1a0lEMGdibVYzSUVSaGRHVW9abWx5YzNSUFkyTjFjbkpsYm1ObExtZGxkRlJwYldVb0tTQXJJR1IxY21GMGFXOXVUV2x1ZFhSbGN5QXFJRFl3WHpBd01DazdYRzVjYmlBZ0lDQmpiMjV6ZENCc2FXNWxjem9nYzNSeWFXNW5XMTBnUFNCYlhHNGdJQ0FnSUNCY0lrSkZSMGxPT2xaRFFVeEZUa1JCVWx3aUxGeHVJQ0FnSUNBZ1hDSldSVkpUU1U5T09qSXVNRndpTEZ4dUlDQWdJQ0FnWENKRFFVeFRRMEZNUlRwSFVrVkhUMUpKUVU1Y0lpeGNiaUFnSUNBZ0lGd2lVRkpQUkVsRU9pMHZMMUJVVUM4dlEyRnNaVzVrWVhJZ1UyVnlkbWxqWlM4dlJVNWNJaXhjYmlBZ0lDQWdJRndpVFVWVVNFOUVPbEJWUWt4SlUwaGNJaXhjYmlBZ0lDQWdJRndpUWtWSFNVNDZWa1ZXUlU1VVhDSXNYRzRnSUNBZ0lDQmdWVWxFT2lSN2RHaHBjeTVsYzJOaGNHVlFjbTl3WlhKMGVTaDFhV1FwZldBc1hHNGdJQ0FnSUNCZ1JGUlRWRUZOVURva2UzUm9hWE11Wm05eWJXRjBWWFJqUkdGMFpTaHVaWGNnUkdGMFpTZ3BLWDFnTEZ4dUlDQWdJQ0FnWUVSVVUxUkJVbFE3VkZwSlJEMGtlM1JvYVhNdVpYTmpZWEJsVUdGeVlXMWxkR1Z5S0hScGJXVjZiMjVsS1gwNkpIdDBhR2x6TG1admNtMWhkRXh2WTJGc1JHRjBaU2hjYmlBZ0lDQWdJQ0FnWm1seWMzUlBZMk4xY25KbGJtTmxMRnh1SUNBZ0lDQWdJQ0IwYVcxbGVtOXVaVnh1SUNBZ0lDQWdLWDFnTEZ4dUlDQWdJQ0FnWUVSVVJVNUVPMVJhU1VROUpIdDBhR2x6TG1WelkyRndaVkJoY21GdFpYUmxjaWgwYVcxbGVtOXVaU2w5T2lSN2RHaHBjeTVtYjNKdFlYUk1iMk5oYkVSaGRHVW9YRzRnSUNBZ0lDQWdJR1Z1WkN4Y2JpQWdJQ0FnSUNBZ2RHbHRaWHB2Ym1WY2JpQWdJQ0FnSUNsOVlDeGNiaUFnSUNBZ0lHQlRWVTFOUVZKWk9pUjdkR2hwY3k1bGMyTmhjR1ZVWlhoMEtHOXdkR2x2Ym5NdWRHbDBiR1VwZldBc1hHNGdJQ0FnWFR0Y2JseHVJQ0FnSUdsbUlDaHZjSFJwYjI1ekxtUmxjMk55YVhCMGFXOXVLU0I3WEc0Z0lDQWdJQ0JzYVc1bGN5NXdkWE5vS0dCRVJWTkRVa2xRVkVsUFRqb2tlM1JvYVhNdVpYTmpZWEJsVkdWNGRDaHZjSFJwYjI1ekxtUmxjMk55YVhCMGFXOXVLWDFnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1c2IyTmhkR2x2YmlrZ2UxeHVJQ0FnSUNBZ2JHbHVaWE11Y0hWemFDaGdURTlEUVZSSlQwNDZKSHQwYUdsekxtVnpZMkZ3WlZSbGVIUW9iM0IwYVc5dWN5NXNiMk5oZEdsdmJpbDlZQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hKbFkzVnljbVZ1WTJVdWNuSjFiR1VwSUh0Y2JpQWdJQ0FnSUd4cGJtVnpMbkIxYzJnb1lGSlNWVXhGT2lSN2NtVmpkWEp5Wlc1alpTNXljblZzWlgxZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jbVZqZFhKeVpXNWpaUzV5WkdGMFpYTWdKaVlnY21WamRYSnlaVzVqWlM1eVpHRjBaWE11YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ0x5OGdSRlJUVkVGU1ZDQmhiSEpsWVdSNUlISmxjSEpsYzJWdWRITWdkR2hsSUdacGNuTjBJRzlqWTNWeWNtVnVZMlV1WEc0Z0lDQWdJQ0JqYjI1emRDQnlaVzFoYVc1cGJtY2dQU0J5WldOMWNuSmxibU5sTG5Ka1lYUmxjeTV6YkdsalpTZ3hLVHRjYmx4dUlDQWdJQ0FnYkdsdVpYTXVjSFZ6YUNndUxpNTBhR2x6TG1OeVpXRjBaVVp2YkdSbFpGSkVZWFJsVEdsdVpYTW9jbVZ0WVdsdWFXNW5MQ0IwYVcxbGVtOXVaU2twTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodmNIUnBiMjV6TG05eVoyRnVhWHBsY2tWdFlXbHNLU0I3WEc0Z0lDQWdJQ0JzYVc1bGN5NXdkWE5vS0Z4dUlDQWdJQ0FnSUNCZ1QxSkhRVTVKV2tWU09tMWhhV3gwYnpva2UzUm9hWE11WlhOallYQmxVSEp2Y0dWeWRIa29iM0IwYVc5dWN5NXZjbWRoYm1sNlpYSkZiV0ZwYkNsOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iM0IwYVc5dWN5NWhkSFJsYm1SbFpVVnRZV2xzS1NCN1hHNGdJQ0FnSUNCc2FXNWxjeTV3ZFhOb0tGeHVJQ0FnSUNBZ0lDQmJYRzRnSUNBZ0lDQWdJQ0FnWENKQlZGUkZUa1JGUlZ3aUxGeHVJQ0FnSUNBZ0lDQWdJRndpUTFWVVdWQkZQVWxPUkVsV1NVUlZRVXhjSWl4Y2JpQWdJQ0FnSUNBZ0lDQmNJbEpQVEVVOVVrVlJMVkJCVWxSSlEwbFFRVTVVWENJc1hHNGdJQ0FnSUNBZ0lDQWdYQ0pRUVZKVVUxUkJWRDFPUlVWRVV5MUJRMVJKVDA1Y0lpeGNiaUFnSUNBZ0lDQWdJQ0JjSWxKVFZsQTlWRkpWUlZ3aUxGeHVJQ0FnSUNBZ0lDQmRMbXB2YVc0b1hDSTdYQ0lwSUNzZ1lEcHRZV2xzZEc4NkpIdDBhR2x6TG1WelkyRndaVkJ5YjNCbGNuUjVLRzl3ZEdsdmJuTXVZWFIwWlc1a1pXVkZiV0ZwYkNsOVlGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc2FXNWxjeTV3ZFhOb0tGeHVJQ0FnSUNBZ1hDSkNSVWRKVGpwV1FVeEJVazFjSWl4Y2JpQWdJQ0FnSUZ3aVFVTlVTVTlPT2tSSlUxQk1RVmxjSWl4Y2JpQWdJQ0FnSUdCVVVrbEhSMFZTT2kxUVZDUjdZV3hoY20xTmFXNTFkR1Z6UW1WbWIzSmxmVTFnTEZ4dUlDQWdJQ0FnWUVSRlUwTlNTVkJVU1U5T09pUjdkR2hwY3k1bGMyTmhjR1ZVWlhoMEtHOXdkR2x2Ym5NdWRHbDBiR1VwZldBc1hHNGdJQ0FnSUNCY0lrVk9SRHBXUVV4QlVrMWNJaXhjYmlBZ0lDQWdJRndpUlU1RU9sWkZWa1ZPVkZ3aUxGeHVJQ0FnSUNBZ1hDSkZUa1E2VmtOQlRFVk9SRUZTWENKY2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWTI5dWMzUWdZMjl1ZEdWdWRDQTlJSFJvYVhNdVptOXNaRXhwYm1WektHeHBibVZ6S1M1cWIybHVLRndpWEZ4eVhGeHVYQ0lwSUNzZ1hDSmNYSEpjWEc1Y0lqdGNiaUFnSUNCamIyNXpkQ0JtYVd4bGJtRnRaU0E5SUhSb2FYTXVZM0psWVhSbFJtbHNaVzVoYldVb2IzQjBhVzl1Y3k1MGFYUnNaU2s3WEc1Y2JpQWdJQ0JzYjJjdWRtVnlZbTl6WlNoZ1EyRnNaVzVrWVhJZ1pYWmxiblFnWTNKbFlYUmxaRG9nSkh0bWFXeGxibUZ0WlgxZ0tUdGNiaUFnSUNCc2IyY3VaR1ZpZFdjb1lFTnZiblJsYm5RZ1ptOXlJQ1I3Wm1sc1pXNWhiV1Y5T2lBa2UyTnZiblJsYm5SOVlDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2UxeHVJQ0FnSUNBZ1ptbHNaVzVoYldVc1hHNGdJQ0FnSUNCamIyNTBaVzUwTEZ4dUlDQWdJQ0FnYldsdFpWUjVjR1U2SUZ3aWRHVjRkQzlqWVd4bGJtUmhjbHdpTEZ4dUlDQWdJQ0FnWW5sMFpYTTZJRzVsZHlCVVpYaDBSVzVqYjJSbGNpZ3BMbVZ1WTI5a1pTaGpiMjUwWlc1MEtTeGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHRnplVzVqSUdOeVpXRjBaVUZ1WkZOMGIzSmxVbVZ0YVc1a1pYSW9YRzRnSUNBZ2IzQjBhVzl1Y3pvZ1EyRnNaVzVrWVhKU1pXMXBibVJsY2s5d2RHbHZibk1zWEc0Z0lDQWdMaTR1WVhKbmN6b2dUV0Y1WW1WRGIyNTBaWGgwZFdGc1FYSm5QR0Z1ZVQ1Y2JpQWdLVG9nVUhKdmJXbHpaVHgyYjJsa1BpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCamRIZ2dmU0E5SUNoaGQyRnBkQ0IwYUdsekxteHZaME4wZUNoaGNtZHpMQ0JQY0dWeVlYUnBiMjVMWlhsekxrTlNSVUZVUlN3Z2RISjFaU2twTG1admNpaGNiaUFnSUNBZ0lIUm9hWE11WTNKbFlYUmxRVzVrVTNSdmNtVlNaVzFwYm1SbGNseHVJQ0FnSUNrN1hHNWNiaUFnSUNCamIyNXpkQ0JtYVd4bElEMGdZWGRoYVhRZ2RHaHBjeTVqY21WaGRHVk5aV1JwWTJGMGFXOXVVbVZ0YVc1a1pYSW9iM0IwYVc5dWN5d2dZM1I0S1R0Y2JseHVJQ0FnSUdGM1lXbDBJSFJvYVhNdWQzSnBkR1Z5TG5keWFYUmxLR1pwYkdVc0lHTjBlQ2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUdOeVpXRjBaVkpsWTNWeWNtVnVZMlVvWEc0Z0lDQWdiM0IwYVc5dWN6b2dRMkZzWlc1a1lYSlNaVzFwYm1SbGNrOXdkR2x2Ym5Nc1hHNGdJQ0FnYzNSaGNuUTZJRVJoZEdVc1hHNGdJQ0FnZEdsdFpYcHZibVU2SUhOMGNtbHVaeXhjYmlBZ0lDQmpkSGc2SUVOdmJuUmxlSFE4WVc1NVBseHVJQ0FwT2lCU1pXTjFjbkpsYm1ObFVtVnpkV3gwSUh0Y2JpQWdJQ0JqYjI1emRDQndZWEp6WldRZ1BTQjBhR2x6TG5CaGNuTmxVMmx0Y0d4bFEzSnZiaWh2Y0hScGIyNXpMbU55YjI0c0lHTjBlQ2s3WEc0Z0lDQWdZMjl1YzNRZ2RXNTBhV3dnUFNCdmNIUnBiMjV6TG5WdWRHbHNJRDhnZEdocGN5NW1iM0p0WVhSVmRHTkVZWFJsS0c5d2RHbHZibk11ZFc1MGFXd3BJRG9nZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnYVdZZ0tIQmhjbk5sWkNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnY25KMWJHVWdQU0IwYUdsekxtTnZiblpsY25SVGFXMXdiR1ZEY205dVZHOVNVblZzWlNod1lYSnpaV1FzSUhWdWRHbHNLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tISnlkV3hsS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lISnlkV3hsSUgwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSHRjYmlBZ0lDQWdJSEprWVhSbGN6b2dkR2hwY3k1bGVIQmhibVJEY205dVJHRjBaWE1vWEc0Z0lDQWdJQ0FnSUc5d2RHbHZibk11WTNKdmJpeGNiaUFnSUNBZ0lDQWdjM1JoY25Rc1hHNGdJQ0FnSUNBZ0lIUnBiV1Y2YjI1bExGeHVJQ0FnSUNBZ0lDQnZjSFJwYjI1ekxtMWhlRTlqWTNWeWNtVnVZMlZ6SUQ4L0lETTJOU3hjYmlBZ0lDQWdJQ0FnYjNCMGFXOXVjeTUxYm5ScGJGeHVJQ0FnSUNBZ0tTeGNiaUFnSUNCOU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU52Ym5abGNuUnpJSFJvWlNCamIyMXRiMjVzZVNCdVpXVmtaV1FnYldWa2FXTmhkR2x2YmlCelkyaGxaSFZzWlhNdVhHNGdJQ0FxWEc0Z0lDQXFJRlZ1YzNWd2NHOXlkR1ZrSUdOeWIyNGdjMmhoY0dWeklHWmhiR3dnWW1GamF5QjBieUJsZUhCc2FXTnBkQ0JTUkVGVVJTQnZZMk4xY25KbGJtTmxjeTVjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWTI5dWRtVnlkRk5wYlhCc1pVTnliMjVVYjFKU2RXeGxLRnh1SUNBZ0lHTnliMjQ2SUZCaGNuTmxaRU55YjI0c1hHNGdJQ0FnZFc1MGFXdy9PaUJ6ZEhKcGJtZGNiaUFnS1RvZ2MzUnlhVzVuSUh3Z2RXNWtaV1pwYm1Wa0lIdGNiaUFnSUNCamIyNXpkQ0J6ZFdabWFYZ2dQU0IxYm5ScGJDQS9JR0E3VlU1VVNVdzlKSHQxYm5ScGJIMWdJRG9nWENKY0lqdGNibHh1SUNBZ0lHTnZibk4wSUcxcGJuVjBaWE1nUFNCamNtOXVMbTFwYm5WMFpTNXFiMmx1S0Z3aUxGd2lLVHRjYmlBZ0lDQmpiMjV6ZENCb2IzVnljeUE5SUdOeWIyNHVhRzkxY2k1cWIybHVLRndpTEZ3aUtUdGNibHh1SUNBZ0lHTnZibk4wSUhScGJXVlFZWEowY3lBOUlHQkNXVWhQVlZJOUpIdG9iM1Z5YzMwN1FsbE5TVTVWVkVVOUpIdHRhVzUxZEdWemZUdENXVk5GUTA5T1JEMHdZRHRjYmx4dUlDQWdJR052Ym5OMElHVjJaWEo1UkdGNUlEMWNiaUFnSUNBZ0lHTnliMjR1WkdGNVQyWk5iMjUwYUNBOVBUMGdiblZzYkNBbUpseHVJQ0FnSUNBZ1kzSnZiaTV0YjI1MGFDQTlQVDBnYm5Wc2JDQW1KbHh1SUNBZ0lDQWdZM0p2Ymk1a1lYbFBabGRsWldzZ1BUMDlJRzUxYkd3N1hHNWNiaUFnSUNCcFppQW9aWFpsY25sRVlYa3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmdSbEpGVVQxRVFVbE1XVHNrZTNScGJXVlFZWEowYzMwa2UzTjFabVpwZUgxZ08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSGRsWld0c2VTQTlYRzRnSUNBZ0lDQmpjbTl1TG1SaGVVOW1UVzl1ZEdnZ1BUMDlJRzUxYkd3Z0ppWmNiaUFnSUNBZ0lHTnliMjR1Ylc5dWRHZ2dQVDA5SUc1MWJHd2dKaVpjYmlBZ0lDQWdJR055YjI0dVpHRjVUMlpYWldWcklDRTlQU0J1ZFd4c08xeHVYRzRnSUNBZ2FXWWdLSGRsWld0c2VTa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2QyVmxhMlJoZVhNZ1BTQmpjbTl1WEc0Z0lDQWdJQ0FnSUM1a1lYbFBabGRsWldzaExtMWhjQ2dvWkdGNUtTQTlQaUIwYUdsekxuZGxaV3RrWVhsVWIwbGpjeWhrWVhrcEtWeHVJQ0FnSUNBZ0lDQXVhbTlwYmloY0lpeGNJaWs3WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUJnUmxKRlVUMVhSVVZMVEZrN1FsbEVRVms5Skh0M1pXVnJaR0Y1YzMwN0pIdDBhVzFsVUdGeWRITjlKSHR6ZFdabWFYaDlZRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCdGIyNTBhR3g1SUQxY2JpQWdJQ0FnSUdOeWIyNHVaR0Y1VDJaTmIyNTBhQ0FoUFQwZ2JuVnNiQ0FtSmx4dUlDQWdJQ0FnWTNKdmJpNXRiMjUwYUNBOVBUMGdiblZzYkNBbUpseHVJQ0FnSUNBZ1kzSnZiaTVrWVhsUFpsZGxaV3NnUFQwOUlHNTFiR3c3WEc1Y2JpQWdJQ0JwWmlBb2JXOXVkR2hzZVNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUNBZ1lFWlNSVkU5VFU5T1ZFaE1XVHRDV1UxUFRsUklSRUZaUFNSN1kzSnZiaTVrWVhsUFprMXZiblJvSVM1cWIybHVLRndpTEZ3aUtYMDdZQ0FyWEc0Z0lDQWdJQ0FnSUdBa2UzUnBiV1ZRWVhKMGMzMGtlM04xWm1acGVIMWdYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHTnZibk4wSUhsbFlYSnNlU0E5WEc0Z0lDQWdJQ0JqY205dUxtUmhlVTltVFc5dWRHZ2dJVDA5SUc1MWJHd2dKaVpjYmlBZ0lDQWdJR055YjI0dWJXOXVkR2dnSVQwOUlHNTFiR3dnSmlaY2JpQWdJQ0FnSUdOeWIyNHVaR0Y1VDJaWFpXVnJJRDA5UFNCdWRXeHNPMXh1WEc0Z0lDQWdhV1lnS0hsbFlYSnNlU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2hjYmlBZ0lDQWdJQ0FnWUVaU1JWRTlXVVZCVWt4Wk8wSlpUVTlPVkVnOUpIdGpjbTl1TG0xdmJuUm9JUzVxYjJsdUtGd2lMRndpS1gwN1lDQXJYRzRnSUNBZ0lDQWdJR0JDV1UxUFRsUklSRUZaUFNSN1kzSnZiaTVrWVhsUFprMXZiblJvSVM1cWIybHVLRndpTEZ3aUtYMDdZQ0FyWEc0Z0lDQWdJQ0FnSUdBa2UzUnBiV1ZRWVhKMGMzMGtlM04xWm1acGVIMWdYRzRnSUNBZ0lDQXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lDOHZJRU55YjI0Z1pHRjVMVzltTFcxdmJuUm9MMlJoZVMxdlppMTNaV1ZySUdOdmJXSnBibUYwYVc5dWN5Qm9ZWFpsSUU5U0xXeHBhMlVnYzJWdFlXNTBhV056WEc0Z0lDQWdMeThnYVc0Z2JXRnVlU0JwYlhCc1pXMWxiblJoZEdsdmJuTWdZVzVrSUdOaGJtNXZkQ0JpWlNCeVpYQnlaWE5sYm5SbFpDQnpZV1psYkhrZ1lYTWdiMjVsSUZKU1ZVeEZMbHh1SUNBZ0lISmxkSFZ5YmlCMWJtUmxabWx1WldRN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElIQmhjbk5sVTJsdGNHeGxRM0p2YmloY2JpQWdJQ0JsZUhCeVpYTnphVzl1T2lCemRISnBibWNzWEc0Z0lDQWdZM1I0T2lCRGIyNTBaWGgwUEdGdWVUNWNiaUFnS1RvZ1VHRnljMlZrUTNKdmJpQjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdZMjl1YzNRZ2V5QnNiMmNnZlNBOUlIUm9hWE11Ykc5blEzUjRLRnRqZEhoZExDQjBhR2x6TG5CaGNuTmxVMmx0Y0d4bFEzSnZiaWs3WEc0Z0lDQWdZMjl1YzNRZ1ptbGxiR1J6SUQwZ1pYaHdjbVZ6YzJsdmJpNTBjbWx0S0NrdWMzQnNhWFFvTDF4Y2N5c3ZLVHRjYmx4dUlDQWdJR2xtSUNobWFXVnNaSE11YkdWdVozUm9JQ0U5UFNBMUtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJRnR0YVc1MWRHVXNJR2h2ZFhJc0lHUmhlVTltVFc5dWRHZ3NJRzF2Ym5Sb0xDQmtZWGxQWmxkbFpXdGRJRDBnWm1sbGJHUnpPMXh1WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUcxcGJuVjBaVG9nZEdocGN5NXdZWEp6WlVOeWIyNUdhV1ZzWkNodGFXNTFkR1VzSURBc0lEVTVMQ0JqZEhncExGeHVJQ0FnSUNBZ0lDQm9iM1Z5T2lCMGFHbHpMbkJoY25ObFEzSnZia1pwWld4a0tHaHZkWElzSURBc0lESXpMQ0JqZEhncExGeHVJQ0FnSUNBZ0lDQmtZWGxQWmsxdmJuUm9PbHh1SUNBZ0lDQWdJQ0FnSUdSaGVVOW1UVzl1ZEdnZ1BUMDlJRndpS2x3aVhHNGdJQ0FnSUNBZ0lDQWdJQ0EvSUc1MWJHeGNiaUFnSUNBZ0lDQWdJQ0FnSURvZ2RHaHBjeTV3WVhKelpVTnliMjVHYVdWc1pDaGtZWGxQWmsxdmJuUm9MQ0F4TENBek1Td2dZM1I0S1N4Y2JpQWdJQ0FnSUNBZ2JXOXVkR2c2SUcxdmJuUm9JRDA5UFNCY0lpcGNJaUEvSUc1MWJHd2dPaUIwYUdsekxuQmhjbk5sUTNKdmJrWnBaV3hrS0cxdmJuUm9MQ0F4TENBeE1pd2dZM1I0S1N4Y2JpQWdJQ0FnSUNBZ1pHRjVUMlpYWldWck9seHVJQ0FnSUNBZ0lDQWdJR1JoZVU5bVYyVmxheUE5UFQwZ1hDSXFYQ0pjYmlBZ0lDQWdJQ0FnSUNBZ0lEOGdiblZzYkZ4dUlDQWdJQ0FnSUNBZ0lDQWdPaUIwYUdsekxuQmhjbk5sUTNKdmJrWnBaV3hrS0dSaGVVOW1WMlZsYXl3Z01Dd2dOeXdnWTNSNEtTNXRZWEFvS0haaGJIVmxLU0E5UGx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGJIVmxJRDA5UFNBM0lEOGdNQ0E2SUhaaGJIVmxYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDa3NYRzRnSUNBZ0lDQjlPMXh1SUNBZ0lIMGdZMkYwWTJnZ2UxeHVJQ0FnSUNBZ2JHOW5MbVJsWW5WbktHQkdZV2xzWldRZ2RHOGdaMlZ1WlhKaGRHVWdjMmx0Y0d4bElHTnliMjRnWlhod2NtVnpjMmx2YmlCbWIzSWdKSHRsZUhCeVpYTnphVzl1ZldBcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhCaGNuTmxRM0p2YmtacFpXeGtLRnh1SUNBZ0lHWnBaV3hrT2lCemRISnBibWNzWEc0Z0lDQWdiV2x1YVcxMWJUb2diblZ0WW1WeUxGeHVJQ0FnSUcxaGVHbHRkVzA2SUc1MWJXSmxjaXhjYmlBZ0lDQXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXVaWGgwTFd4cGJtVWdRSFI1Y0dWelkzSnBjSFF0WlhOc2FXNTBMMjV2TFhWdWRYTmxaQzEyWVhKelhHNGdJQ0FnWTNSNE9pQkRiMjUwWlhoMFBHRnVlVDVjYmlBZ0tUb2diblZ0WW1WeVcxMGdlMXh1SUNBZ0lHTnZibk4wSUhaaGJIVmxjeUE5SUc1bGR5QlRaWFE4Ym5WdFltVnlQaWdwTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCelpXZHRaVzUwSUc5bUlHWnBaV3hrTG5Od2JHbDBLRndpTEZ3aUtTa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1czSmhibWRsUlhod2NtVnpjMmx2Yml3Z2MzUmxjRVY0Y0hKbGMzTnBiMjVkSUQwZ2MyVm5iV1Z1ZEM1emNHeHBkQ2hjSWk5Y0lpazdYRzVjYmlBZ0lDQWdJR052Ym5OMElITjBaWEFnUFZ4dUlDQWdJQ0FnSUNCemRHVndSWGh3Y21WemMybHZiaUE5UFQwZ2RXNWtaV1pwYm1Wa0lEOGdNU0E2SUU1MWJXSmxjaTV3WVhKelpVbHVkQ2h6ZEdWd1JYaHdjbVZ6YzJsdmJpd2dNVEFwTzF4dVhHNGdJQ0FnSUNCcFppQW9JVTUxYldKbGNpNXBjMGx1ZEdWblpYSW9jM1JsY0NrZ2ZId2djM1JsY0NBOFBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCV1lXeHBaR0YwYVc5dVJYSnliM0lvWUVsdWRtRnNhV1FnWTNKdmJpQnpkR1Z3T2lBa2UzTmxaMjFsYm5SOVlDazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR3hsZENCemRHRnlkRG9nYm5WdFltVnlPMXh1SUNBZ0lDQWdiR1YwSUdWdVpEb2diblZ0WW1WeU8xeHVYRzRnSUNBZ0lDQnBaaUFvY21GdVoyVkZlSEJ5WlhOemFXOXVJRDA5UFNCY0lpcGNJaWtnZTF4dUlDQWdJQ0FnSUNCemRHRnlkQ0E5SUcxcGJtbHRkVzA3WEc0Z0lDQWdJQ0FnSUdWdVpDQTlJRzFoZUdsdGRXMDdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEpoYm1kbFJYaHdjbVZ6YzJsdmJpNXBibU5zZFdSbGN5aGNJaTFjSWlrcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1ltOTFibVJ6SUQwZ2NtRnVaMlZGZUhCeVpYTnphVzl1TG5Od2JHbDBLRndpTFZ3aUtUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb1ltOTFibVJ6TG14bGJtZDBhQ0FoUFQwZ01pa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCV1lXeHBaR0YwYVc5dVJYSnliM0lvWUVsdWRtRnNhV1FnWTNKdmJpQnlZVzVuWlRvZ0pIdHpaV2R0Wlc1MGZXQXBPMXh1SUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ2MzUmhjblFnUFNCT2RXMWlaWEl1Y0dGeWMyVkpiblFvWW05MWJtUnpXekJkTENBeE1DazdYRzRnSUNBZ0lDQWdJR1Z1WkNBOUlFNTFiV0psY2k1d1lYSnpaVWx1ZENoaWIzVnVaSE5iTVYwc0lERXdLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSE4wWVhKMElEMGdUblZ0WW1WeUxuQmhjbk5sU1c1MEtISmhibWRsUlhod2NtVnpjMmx2Yml3Z01UQXBPMXh1SUNBZ0lDQWdJQ0JsYm1RZ1BTQnpkR0Z5ZER0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLRnh1SUNBZ0lDQWdJQ0FoVG5WdFltVnlMbWx6U1c1MFpXZGxjaWh6ZEdGeWRDa2dmSHhjYmlBZ0lDQWdJQ0FnSVU1MWJXSmxjaTVwYzBsdWRHVm5aWElvWlc1a0tTQjhmRnh1SUNBZ0lDQWdJQ0J6ZEdGeWRDQThJRzFwYm1sdGRXMGdmSHhjYmlBZ0lDQWdJQ0FnWlc1a0lENGdiV0Y0YVcxMWJTQjhmRnh1SUNBZ0lDQWdJQ0J6ZEdGeWRDQStJR1Z1WkZ4dUlDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QldZV3hwWkdGMGFXOXVSWEp5YjNJb1lFbHVkbUZzYVdRZ1kzSnZiaUJtYVdWc1pEb2dKSHR6WldkdFpXNTBmV0FwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCbWIzSWdLR3hsZENCMllXeDFaU0E5SUhOMFlYSjBPeUIyWVd4MVpTQThQU0JsYm1RN0lIWmhiSFZsSUNzOUlITjBaWEFwSUh0Y2JpQWdJQ0FnSUNBZ2RtRnNkV1Z6TG1Ga1pDaDJZV3gxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRnN1TGk1MllXeDFaWE5kTG5OdmNuUW9LR0VzSUdJcElEMCtJR0VnTFNCaUtUdGNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdaWGh3WVc1a1EzSnZia1JoZEdWektGeHVJQ0FnSUdOeWIyNDZJSE4wY21sdVp5eGNiaUFnSUNCemRHRnlkRG9nUkdGMFpTeGNiaUFnSUNCMGFXMWxlbTl1WlRvZ2MzUnlhVzVuTEZ4dUlDQWdJRzFoZUdsdGRXMDZJRzUxYldKbGNpeGNiaUFnSUNCMWJuUnBiRDg2SUVSaGRHVmNiaUFnS1RvZ1JHRjBaVnRkSUh0Y2JpQWdJQ0JqYjI1emRDQnBiblJsY25aaGJDQTlJRU55YjI1RmVIQnlaWE56YVc5dVVHRnljMlZ5TG5CaGNuTmxLR055YjI0c0lIdGNiaUFnSUNBZ0lHTjFjbkpsYm5SRVlYUmxPaUJ6ZEdGeWRDeGNiaUFnSUNBZ0lIUjZPaUIwYVcxbGVtOXVaU3hjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJR052Ym5OMElHOWpZM1Z5Y21WdVkyVnpPaUJFWVhSbFcxMGdQU0JiWFR0Y2JseHVJQ0FnSUhkb2FXeGxJQ2h2WTJOMWNuSmxibU5sY3k1c1pXNW5kR2dnUENCdFlYaHBiWFZ0S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0J1WlhoMElEMGdhVzUwWlhKMllXd3VibVY0ZENncExuUnZSR0YwWlNncE8xeHVYRzRnSUNBZ0lDQnBaaUFvZFc1MGFXd2dKaVlnYm1WNGRDQStJSFZ1ZEdsc0tTQjdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnZZMk4xY25KbGJtTmxjeTV3ZFhOb0tHNWxlSFFwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodlkyTjFjbkpsYm1ObGN5NXNaVzVuZEdnZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWENKVWFHVWdZM0p2YmlCbGVIQnlaWE56YVc5dUlIQnliMlIxWTJWa0lHNXZJRzlqWTNWeWNtVnVZMlZ6SUdsdUlIUm9aU0J5WlhGMVpYTjBaV1FnY21GdVoyVXVYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHOWpZM1Z5Y21WdVkyVnpPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JuWlhSR2FYSnpkRTlqWTNWeWNtVnVZMlVvWEc0Z0lDQWdZM0p2YmpvZ2MzUnlhVzVuTEZ4dUlDQWdJSE4wWVhKME9pQkVZWFJsTEZ4dUlDQWdJSFJwYldWNmIyNWxPaUJ6ZEhKcGJtZGNiaUFnS1RvZ1JHRjBaU0I3WEc0Z0lDQWdZMjl1YzNRZ2FXNTBaWEoyWVd3Z1BTQkRjbTl1Ulhod2NtVnpjMmx2YmxCaGNuTmxjaTV3WVhKelpTaGpjbTl1TENCN1hHNGdJQ0FnSUNCamRYSnlaVzUwUkdGMFpUb2djM1JoY25Rc1hHNGdJQ0FnSUNCMGVqb2dkR2x0WlhwdmJtVXNYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2FXNTBaWEoyWVd3dWJtVjRkQ2dwTG5SdlJHRjBaU2dwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCamNtVmhkR1ZHYjJ4a1pXUlNSR0YwWlV4cGJtVnpLR1JoZEdWek9pQkVZWFJsVzEwc0lIUnBiV1Y2YjI1bE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ1kyOXVjM1FnY0hKbFptbDRJRDBnWUZKRVFWUkZPMVJhU1VROUpIdDBhR2x6TG1WelkyRndaVkJoY21GdFpYUmxjaWgwYVcxbGVtOXVaU2w5T21BN1hHNWNiaUFnSUNCamIyNXpkQ0IyWVd4MVpYTWdQU0JrWVhSbGN5NXRZWEFvS0dSaGRHVXBJRDArSUhSb2FYTXVabTl5YldGMFRHOWpZV3hFWVhSbEtHUmhkR1VzSUhScGJXVjZiMjVsS1NrN1hHNWNiaUFnSUNBdkx5QkxaV1Z3SUdWaFkyZ2diRzluYVdOaGJDQndjbTl3WlhKMGVTQnlaV0Z6YjI1aFlteDVJSE5wZW1Wa0lHSmxabTl5WlNCU1JrTWdiR2x1WlNCbWIyeGthVzVuTGx4dUlDQWdJR052Ym5OMElISmxjM1ZzZERvZ2MzUnlhVzVuVzEwZ1BTQmJYVHRjYmlBZ0lDQnNaWFFnWTNWeWNtVnVkQ0E5SUhCeVpXWnBlRHRjYmx4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnZG1Gc2RXVWdiMllnZG1Gc2RXVnpLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpZVzVrYVdSaGRHVWdQVnh1SUNBZ0lDQWdJQ0JqZFhKeVpXNTBJRDA5UFNCd2NtVm1hWGdnUHlCZ0pIdGpkWEp5Wlc1MGZTUjdkbUZzZFdWOVlDQTZJR0FrZTJOMWNuSmxiblI5TENSN2RtRnNkV1Y5WUR0Y2JseHVJQ0FnSUNBZ2FXWWdLRzVsZHlCVVpYaDBSVzVqYjJSbGNpZ3BMbVZ1WTI5a1pTaGpZVzVrYVdSaGRHVXBMbXhsYm1kMGFDQStJRGN3TUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWE4xYkhRdWNIVnphQ2hqZFhKeVpXNTBLVHRjYmlBZ0lDQWdJQ0FnWTNWeWNtVnVkQ0E5SUdBa2UzQnlaV1pwZUgwa2UzWmhiSFZsZldBN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCamRYSnlaVzUwSUQwZ1kyRnVaR2xrWVhSbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaGpkWEp5Wlc1MElDRTlQU0J3Y21WbWFYZ3BJSHRjYmlBZ0lDQWdJSEpsYzNWc2RDNXdkWE5vS0dOMWNuSmxiblFwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHWnZjbTFoZEZWMFkwUmhkR1VvWkdGMFpUb2dSR0YwWlNrNklITjBjbWx1WnlCN1hHNGdJQ0FnY21WMGRYSnVJR1JoZEdWY2JpQWdJQ0FnSUM1MGIwbFRUMU4wY21sdVp5Z3BYRzRnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZXeTA2WFM5bkxDQmNJbHdpS1Z4dUlDQWdJQ0FnTG5KbGNHeGhZMlVvTDF4Y0xseGNaSHN6ZlZva0x5d2dYQ0phWENJcE8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQm1iM0p0WVhSTWIyTmhiRVJoZEdVb1pHRjBaVG9nUkdGMFpTd2dkR2x0WlhwdmJtVTZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnY0dGeWRITWdQU0J1WlhjZ1NXNTBiQzVFWVhSbFZHbHRaVVp2Y20xaGRDaGNJbVZ1TFVOQlhDSXNJSHRjYmlBZ0lDQWdJSFJwYldWYWIyNWxPaUIwYVcxbGVtOXVaU3hjYmlBZ0lDQWdJSGxsWVhJNklGd2liblZ0WlhKcFkxd2lMRnh1SUNBZ0lDQWdiVzl1ZEdnNklGd2lNaTFrYVdkcGRGd2lMRnh1SUNBZ0lDQWdaR0Y1T2lCY0lqSXRaR2xuYVhSY0lpeGNiaUFnSUNBZ0lHaHZkWEk2SUZ3aU1pMWthV2RwZEZ3aUxGeHVJQ0FnSUNBZ2JXbHVkWFJsT2lCY0lqSXRaR2xuYVhSY0lpeGNiaUFnSUNBZ0lITmxZMjl1WkRvZ1hDSXlMV1JwWjJsMFhDSXNYRzRnSUNBZ0lDQm9iM1Z5UTNsamJHVTZJRndpYURJelhDSXNYRzRnSUNBZ2ZTa3VabTl5YldGMFZHOVFZWEowY3loa1lYUmxLVHRjYmx4dUlDQWdJR052Ym5OMElIWmhiSFZsY3lBOUlFOWlhbVZqZEM1bWNtOXRSVzUwY21sbGN5aGNiaUFnSUNBZ0lIQmhjblJ6WEc0Z0lDQWdJQ0FnSUM1bWFXeDBaWElvS0hCaGNuUXBJRDArSUhCaGNuUXVkSGx3WlNBaFBUMGdYQ0pzYVhSbGNtRnNYQ0lwWEc0Z0lDQWdJQ0FnSUM1dFlYQW9LSEJoY25RcElEMCtJRnR3WVhKMExuUjVjR1VzSUhCaGNuUXVkbUZzZFdWZEtWeHVJQ0FnSUNrN1hHNWNiaUFnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnWUNSN2RtRnNkV1Z6TG5sbFlYSjlKSHQyWVd4MVpYTXViVzl1ZEdoOUpIdDJZV3gxWlhNdVpHRjVmV0FnSzF4dUlDQWdJQ0FnWUZRa2UzWmhiSFZsY3k1b2IzVnlmU1I3ZG1Gc2RXVnpMbTFwYm5WMFpYMGtlM1poYkhWbGN5NXpaV052Ym1SOVlGeHVJQ0FnSUNrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHWnZiR1JNYVc1bGN5aHNhVzVsY3pvZ2MzUnlhVzVuVzEwcE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ2NtVjBkWEp1SUd4cGJtVnpMbVpzWVhSTllYQW9LR3hwYm1VcElEMCtJSFJvYVhNdVptOXNaRXhwYm1Vb2JHbHVaU2twTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGSkdReUExTlRRMUlHTnZiblJsYm5RZ2JHbHVaWE1nYzJodmRXeGtJR0psSUdadmJHUmxaQ0JoZENBM05TQnZZM1JsZEhNdVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHWnZiR1JNYVc1bEtHeHBibVU2SUhOMGNtbHVaeWs2SUhOMGNtbHVaMXRkSUh0Y2JpQWdJQ0JqYjI1emRDQmxibU52WkdWeUlEMGdibVYzSUZSbGVIUkZibU52WkdWeUtDazdYRzRnSUNBZ1kyOXVjM1FnY21WemRXeDBPaUJ6ZEhKcGJtZGJYU0E5SUZ0ZE8xeHVJQ0FnSUd4bGRDQnlaVzFoYVc1cGJtY2dQU0JzYVc1bE8xeHVJQ0FnSUd4bGRDQm1hWEp6ZENBOUlIUnlkV1U3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9aVzVqYjJSbGNpNWxibU52WkdVb1ptbHljM1FnUHlCeVpXMWhhVzVwYm1jZ09pQmdJQ1I3Y21WdFlXbHVhVzVuZldBcExteGxibWQwYUNBK0lEYzFLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQndjbVZtYVhnZ1BTQm1hWEp6ZENBL0lGd2lYQ0lnT2lCY0lpQmNJanRjYmlBZ0lDQWdJR3hsZENCamFIVnVheUE5SUZ3aVhDSTdYRzRnSUNBZ0lDQnNaWFFnWTI5dWMzVnRaV1FnUFNBd08xeHVYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJR05vWVhKaFkzUmxjaUJ2WmlCeVpXMWhhVzVwYm1jcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1kyRnVaR2xrWVhSbElEMGdZQ1I3Y0hKbFptbDRmU1I3WTJoMWJtdDlKSHRqYUdGeVlXTjBaWEo5WUR0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvWlc1amIyUmxjaTVsYm1OdlpHVW9ZMkZ1Wkdsa1lYUmxLUzVzWlc1bmRHZ2dQaUEzTlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnWTJoMWJtc2dLejBnWTJoaGNtRmpkR1Z5TzF4dUlDQWdJQ0FnSUNCamIyNXpkVzFsWkNBclBTQmphR0Z5WVdOMFpYSXViR1Z1WjNSb08xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvSVdOb2RXNXJLU0I3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjSWxWdVlXSnNaU0IwYnlCbWIyeGtJR2xEWVd4bGJtUmhjaUJqYjI1MFpXNTBJR3hwYm1VdVhDSXBPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhOMWJIUXVjSFZ6YUNoZ0pIdHdjbVZtYVhoOUpIdGphSFZ1YTMxZ0tUdGNiaUFnSUNBZ0lISmxiV0ZwYm1sdVp5QTlJSEpsYldGcGJtbHVaeTV6YkdsalpTaGpiMjV6ZFcxbFpDazdYRzRnSUNBZ0lDQm1hWEp6ZENBOUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsYzNWc2RDNXdkWE5vS0dacGNuTjBJRDhnY21WdFlXbHVhVzVuSURvZ1lDQWtlM0psYldGcGJtbHVaMzFnS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ5WlhOMWJIUTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJR1Z6WTJGd1pWUmxlSFFvZG1Gc2RXVTZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUhaaGJIVmxYRzRnSUNBZ0lDQXVjbVZ3YkdGalpTZ3ZYRnhjWEM5bkxDQmNJbHhjWEZ4Y1hGeGNYQ0lwWEc0Z0lDQWdJQ0F1Y21Wd2JHRmpaU2d2WEZ4eVAxeGNiaTluTENCY0lseGNYRnh1WENJcFhHNGdJQ0FnSUNBdWNtVndiR0ZqWlNndk95OW5MQ0JjSWx4Y1hGdzdYQ0lwWEc0Z0lDQWdJQ0F1Y21Wd2JHRmpaU2d2TEM5bkxDQmNJbHhjWEZ3c1hDSXBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JsYzJOaGNHVlFjbTl3WlhKMGVTaDJZV3gxWlRvZ2MzUnlhVzVuS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVdWNtVndiR0ZqWlNndlcxeGNjbHhjYmwwdlp5d2dYQ0pjSWlrN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElHVnpZMkZ3WlZCaGNtRnRaWFJsY2loMllXeDFaVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnBaaUFvSVM5ZVcwRXRXbUV0ZWpBdE9WOHJMaTh0WFNza0x5NTBaWE4wS0haaGJIVmxLU2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUZaaGJHbGtZWFJwYjI1RmNuSnZjaWhnVlc1ellXWmxJR2xEWVd4bGJtUmhjaUJ3WVhKaGJXVjBaWEk2SUNSN2RtRnNkV1Y5WUNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQjNaV1ZyWkdGNVZHOUpZM01vWkdGNU9pQnVkVzFpWlhJcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdOdmJuTjBJR1JoZVhNZ1BTQmJYQ0pUVlZ3aUxDQmNJazFQWENJc0lGd2lWRlZjSWl3Z1hDSlhSVndpTENCY0lsUklYQ0lzSUZ3aVJsSmNJaXdnWENKVFFWd2lYVHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFFnUFNCa1lYbHpXMlJoZVYwN1hHNWNiaUFnSUNCcFppQW9JWEpsYzNWc2RDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRlpoYkdsa1lYUnBiMjVGY25KdmNpaGdTVzUyWVd4cFpDQjNaV1ZyWkdGNU9pQWtlMlJoZVgxZ0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnY21WemRXeDBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JqY21WaGRHVlZhV1FvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0JqYjI1emRDQnlZVzVrYjIwZ1BWeHVJQ0FnSUNBZ1oyeHZZbUZzVkdocGN5NWpjbmx3ZEc4L0xuSmhibVJ2YlZWVlNVUS9MaWdwSUQ4L1hHNGdJQ0FnSUNCZ0pIdEVZWFJsTG01dmR5Z3BmUzBrZTAxaGRHZ3VjbUZ1Wkc5dEtDa3VkRzlUZEhKcGJtY29NVFlwTG5Oc2FXTmxLRElwZldBN1hHNWNiaUFnSUNCeVpYUjFjbTRnWUNSN2NtRnVaRzl0ZlVCallXeGxibVJoY2kxelpYSjJhV05sWUR0Y2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1kzSmxZWFJsUm1sc1pXNWhiV1VvZEdsMGJHVTZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYzJGbVpWUnBkR3hsSUQwZ2RHbDBiR1ZjYmlBZ0lDQWdJQzV1YjNKdFlXeHBlbVVvWENKT1JrdEVYQ0lwWEc0Z0lDQWdJQ0F1Y21Wd2JHRmpaU2d2VzE1Y1hIY3VMVjByTDJjc0lGd2lMVndpS1Z4dUlDQWdJQ0FnTG5KbGNHeGhZMlVvTDE0dEszd3RLeVF2Wnl3Z1hDSmNJaWxjYmlBZ0lDQWdJQzUwYjB4dmQyVnlRMkZ6WlNncE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdBa2UzTmhabVZVYVhSc1pTQjhmQ0JjSW1OaGJHVnVaR0Z5TFhKbGJXbHVaR1Z5WENKOUxtbGpjMkE3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhaaGJHbGtZWFJsVDNCMGFXOXVjeWh2Y0hScGIyNXpPaUJEWVd4bGJtUmhjbEpsYldsdVpHVnlUM0IwYVc5dWN5azZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDZ2hiM0IwYVc5dWN5NWpjbTl1UHk1MGNtbHRLQ2twSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCV1lXeHBaR0YwYVc5dVJYSnliM0lvWENKQklHTnliMjRnWlhod2NtVnpjMmx2YmlCcGN5QnlaWEYxYVhKbFpDNWNJaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0NGdmNIUnBiMjV6TG5ScGRHeGxQeTUwY21sdEtDa3BJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJXWVd4cFpHRjBhVzl1UlhKeWIzSW9YQ0pCSUdOaGJHVnVaR0Z5SUhScGRHeGxJR2x6SUhKbGNYVnBjbVZrTGx3aUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9YRzRnSUNBZ0lDQnZjSFJwYjI1ekxtUjFjbUYwYVc5dVRXbHVkWFJsY3lBaFBUMGdkVzVrWldacGJtVmtJQ1ltWEc0Z0lDQWdJQ0FvSVU1MWJXSmxjaTVwYzBacGJtbDBaU2h2Y0hScGIyNXpMbVIxY21GMGFXOXVUV2x1ZFhSbGN5a2dmSHhjYmlBZ0lDQWdJQ0FnYjNCMGFXOXVjeTVrZFhKaGRHbHZiazFwYm5WMFpYTWdQRDBnTUNsY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCV1lXeHBaR0YwYVc5dVJYSnliM0lvWENKa2RYSmhkR2x2YmsxcGJuVjBaWE1nYlhWemRDQmlaU0JuY21WaGRHVnlJSFJvWVc0Z2VtVnlieTVjSWlrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tGeHVJQ0FnSUNBZ2IzQjBhVzl1Y3k1aGJHRnliVTFwYm5WMFpYTkNaV1p2Y21VZ0lUMDlJSFZ1WkdWbWFXNWxaQ0FtSmx4dUlDQWdJQ0FnS0NGT2RXMWlaWEl1YVhOSmJuUmxaMlZ5S0c5d2RHbHZibk11WVd4aGNtMU5hVzUxZEdWelFtVm1iM0psS1NCOGZGeHVJQ0FnSUNBZ0lDQnZjSFJwYjI1ekxtRnNZWEp0VFdsdWRYUmxjMEpsWm05eVpTQThJREFwWEc0Z0lDQWdLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnVm1Gc2FXUmhkR2x2YmtWeWNtOXlLRnh1SUNBZ0lDQWdJQ0JjSW1Gc1lYSnRUV2x1ZFhSbGMwSmxabTl5WlNCdGRYTjBJR0psSUdFZ2JtOXVMVzVsWjJGMGFYWmxJR2x1ZEdWblpYSXVYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0Z4dUlDQWdJQ0FnYjNCMGFXOXVjeTV0WVhoUFkyTjFjbkpsYm1ObGN5QWhQVDBnZFc1a1pXWnBibVZrSUNZbVhHNGdJQ0FnSUNBb0lVNTFiV0psY2k1cGMwbHVkR1ZuWlhJb2IzQjBhVzl1Y3k1dFlYaFBZMk4xY25KbGJtTmxjeWtnZkh3Z2IzQjBhVzl1Y3k1dFlYaFBZMk4xY25KbGJtTmxjeUE4UFNBd0tWeHVJQ0FnSUNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lGWmhiR2xrWVhScGIyNUZjbkp2Y2loY0ltMWhlRTlqWTNWeWNtVnVZMlZ6SUcxMWMzUWdZbVVnWVNCd2IzTnBkR2wyWlNCcGJuUmxaMlZ5TGx3aUtUdGNiaUFnSUNCOVhHNGdJSDFjYm4xY2JpSmRmUT09Il19
|
|
@@ -44,5 +44,5 @@ exports.CalendarEnvironment = logging_1.LoggedEnvironment.accumulate({
|
|
|
44
44
|
},
|
|
45
45
|
},
|
|
46
46
|
});
|
|
47
|
-
//# sourceMappingURL=
|
|
48
|
-
//# sourceMappingURL=
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2FsZW5kYXIvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUNILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBMEJ0RDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztJQUM5RCxRQUFRLEVBQUU7UUFDUixjQUFjLEVBQUU7WUFDZCxLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxFQUFFO1lBQ1YsVUFBVSxFQUFFLEVBQUU7WUFDZCxPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxTQUE4QjtTQUN4QztLQUNGO0NBQzBCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvY2FsZW5kYXIvZW52aXJvbm1lbnRcbiAqIEBzdW1tYXJ5IEVudmlyb25tZW50IGNvbnRyYWN0IGFuZCBhY2N1bXVsYXRlZCBlbnZpcm9ubWVudCBmb3IgdGhlIGNhbGVuZGFyIGludGVncmF0aW9uIHNlcnZpY2VzLlxuICogQGRlc2NyaXB0aW9uIERlY2xhcmVzIHRoZSBgQ2FsZW5kYXJFbnZpcm9ubWVudFNoYXBlYCBjb25zdW1lZCBieSB0aGUgR29vZ2xlXG4gKiBDYWxlbmRhciBzZXJ2aWNlJ3MgYGNvbmZpZ0Zyb21FbnZpcm9ubWVudCgpYCBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlXG4gKiBgQ2FsZW5kYXJFbnZpcm9ubWVudGAgc2luZ2xldG9uIGNyZWF0ZWQgdmlhIGBMb2dnZWRFbnZpcm9ubWVudC5hY2N1bXVsYXRlYC5cbiAqIFNlcnZpY2VzIHJlYWQgdGhlaXIgY3JlZGVudGlhbHMgYW5kIGRlZmF1bHRzIGZyb20gdGhlIG1hdGNoaW5nXG4gKiBgY2FsZW5kYXIuPHByb3ZpZGVyPmAgc2xpY2UsIHVzaW5nIHRoZSBgZW52U3RyaW5nYC9gZW52TnVtYmVyYCBoZWxwZXJzIGZyb21cbiAqIGBzaGFyZWQvZW52aXJvbm1lbnRWYWx1ZWAgdG8gcmVqZWN0IHVuc2V0LWxlYWYgcHJveGllcy4gVGhlIG1hdGNoaW5nIHB1YmxpY1xuICogc3VicGF0aCBleHBvcnQgaXMgYEBkZWNhZi10cy9pbnRlZ3JhdGlvbnMvY2FsZW5kYXIvZ29vZ2xlLWNhbGVuZGFyYC5cbiAqL1xuaW1wb3J0IHsgTG9nZ2VkRW52aXJvbm1lbnQgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRW52aXJvbm1lbnQgc2hhcGUgZm9yIHRoZSBjYWxlbmRhciBpbnRlZ3JhdGlvbiBzZXJ2aWNlc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYGNhbGVuZGFyYCByb290IHdpdGggdGhlIGBnb29nbGVDYWxlbmRhcmAgc2xpY2UuIFRoZVxuICogc2xpY2UgY2FycmllcyB0aGUgT0F1dGggYHRva2VuYCBhbmQvb3IgYGFwaUtleWAsIHRoZSBkZWZhdWx0IGBjYWxlbmRhcklkYCxcbiAqIGFuZCBhbiBvcHRpb25hbCBgYmFzZVVybGAgb3ZlcnJpZGUgYW5kIGB0aW1lb3V0YC4gRmllbGRzIGFyZSB0eXBlZCBhc1xuICogcmVxdWlyZWQgaGVyZSBzbyBgTG9nZ2VkRW52aXJvbm1lbnQuYWNjdW11bGF0ZWAgcmVnaXN0ZXJzIHRoZW07IGFic2VudCB2YWx1ZXNcbiAqIHJlc29sdmUgdG8gcHJveHkgcGxhY2Vob2xkZXJzIGF0IHJ1bnRpbWUgYW5kIG11c3QgcGFzcyB0aHJvdWdoXG4gKiBgZW52U3RyaW5nYC9gZW52TnVtYmVyYC4gVmFsdWVzIGFyZSBjcmVkZW50aWFsIHJlZmVyZW5jZXMgc3VwcGxpZWQgYnkgdGhlXG4gKiBlbnZpcm9ubWVudCwgbmV2ZXIgbGl0ZXJhbHMgZW1iZWRkZWQgaW4gc291cmNlLlxuICogQG1lbWJlck9mIG1vZHVsZTppbnRlZ3JhdGlvbnMvY2FsZW5kYXIvZW52aXJvbm1lbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWxlbmRhckVudmlyb25tZW50U2hhcGUge1xuICBjYWxlbmRhcjoge1xuICAgIC8qKiBHb29nbGUgQ2FsZW5kYXIgT0F1dGggdG9rZW4vQVBJIGtleSBhbmQgZGVmYXVsdCBjYWxlbmRhciAoYGNhbGVuZGFyL2dvb2dsZS1jYWxlbmRhcmApLiAqL1xuICAgIGdvb2dsZUNhbGVuZGFyOiB7XG4gICAgICB0b2tlbjogc3RyaW5nO1xuICAgICAgYXBpS2V5OiBzdHJpbmc7XG4gICAgICBjYWxlbmRhcklkOiBzdHJpbmc7XG4gICAgICBiYXNlVXJsOiBzdHJpbmc7XG4gICAgICB0aW1lb3V0PzogbnVtYmVyO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEFjY3VtdWxhdGVkIGNhbGVuZGFyIGVudmlyb25tZW50IHNpbmdsZXRvblxuICogQHN1bW1hcnkgVGhlIGBMb2dnZWRFbnZpcm9ubWVudC5hY2N1bXVsYXRlYC1yZWdpc3RlcmVkIGluc3RhbmNlIGJhY2tpbmcgdGhlXG4gKiBgQ2FsZW5kYXJFbnZpcm9ubWVudFNoYXBlYCBjb250cmFjdC4gVGhlIEdvb2dsZSBDYWxlbmRhciBzZXJ2aWNlIHJlYWRzXG4gKiBgQ2FsZW5kYXJFbnZpcm9ubWVudC5jYWxlbmRhci5nb29nbGVDYWxlbmRhcmAgaW5zaWRlXG4gKiBgY29uZmlnRnJvbUVudmlyb25tZW50KClgIGFuZCB0cmFuc2xhdGVzIGl0IGludG8gaXRzXG4gKiBgSHR0cEFwaVNlcnZpY2VDb25maWdgLWRlcml2ZWQgY29uZmlnLiBDcmVkZW50aWFscyBjb21lIGZyb20gZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlczsgZm9yIGFzLWdyYXBoIG5vZGUgdXNhZ2UgdGhvc2UgYXJlIHByb3ZpZGVkIGFzXG4gKiBgR1JBUEhfQ1JFREVOVElBTF8qYCB2YWx1ZXMgKHBsYWNlaG9sZGVycyBpbiB0aGlzIGV4YW1wbGUpLlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBHb29nbGVDYWxlbmRhclNlcnZpY2UgfSBmcm9tIFwiQGRlY2FmLXRzL2ludGVncmF0aW9ucy9jYWxlbmRhci9nb29nbGUtY2FsZW5kYXJcIjtcbiAqXG4gKiAvLyB3aXRoIGNhbGVuZGFyLmdvb2dsZUNhbGVuZGFyLnRva2VuIC8gY2FsZW5kYXJJZCBjb25maWd1cmVkIGluIHRoZSBlbnZpcm9ubWVudFxuICogY29uc3QgY2FsZW5kYXIgPSBuZXcgR29vZ2xlQ2FsZW5kYXJTZXJ2aWNlKCk7XG4gKiBhd2FpdCBjYWxlbmRhci5pbml0aWFsaXplKCk7XG4gKiBgYGBcbiAqIEBjb25zdGFudCB7TG9nZ2VkRW52aXJvbm1lbnR9IENhbGVuZGFyRW52aXJvbm1lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6aW50ZWdyYXRpb25zL2NhbGVuZGFyL2Vudmlyb25tZW50XG4gKi9cbmV4cG9ydCBjb25zdCBDYWxlbmRhckVudmlyb25tZW50ID0gTG9nZ2VkRW52aXJvbm1lbnQuYWNjdW11bGF0ZSh7XG4gIGNhbGVuZGFyOiB7XG4gICAgZ29vZ2xlQ2FsZW5kYXI6IHtcbiAgICAgIHRva2VuOiBcIlwiLFxuICAgICAgYXBpS2V5OiBcIlwiLFxuICAgICAgY2FsZW5kYXJJZDogXCJcIixcbiAgICAgIGJhc2VVcmw6IFwiXCIsXG4gICAgICB0aW1lb3V0OiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBudW1iZXIsXG4gICAgfSxcbiAgfSxcbn0gYXMgQ2FsZW5kYXJFbnZpcm9ubWVudFNoYXBlKTtcbiJdfQ==
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsK0NBQXNEO0FBQ3REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRywyQkFBaUIsQ0FBQyxVQUFVLENBQUM7SUFDNUQsUUFBUSxFQUFFO1FBQ04sY0FBYyxFQUFFO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxNQUFNLEVBQUUsRUFBRTtZQUNWLFVBQVUsRUFBRSxFQUFFO1lBQ2QsT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPLEVBQUUsU0FBUztTQUNyQjtLQUNKO0NBQ0osQ0FBQyxDQUFDO0FBQ0gsMC9JQUEwL0kiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgaW50ZWdyYXRpb25zL2NhbGVuZGFyL2Vudmlyb25tZW50XG4gKiBAc3VtbWFyeSBFbnZpcm9ubWVudCBjb250cmFjdCBhbmQgYWNjdW11bGF0ZWQgZW52aXJvbm1lbnQgZm9yIHRoZSBjYWxlbmRhciBpbnRlZ3JhdGlvbiBzZXJ2aWNlcy5cbiAqIEBkZXNjcmlwdGlvbiBEZWNsYXJlcyB0aGUgYENhbGVuZGFyRW52aXJvbm1lbnRTaGFwZWAgY29uc3VtZWQgYnkgdGhlIEdvb2dsZVxuICogQ2FsZW5kYXIgc2VydmljZSdzIGBjb25maWdGcm9tRW52aXJvbm1lbnQoKWAgaW1wbGVtZW50YXRpb24gYW5kIHRoZVxuICogYENhbGVuZGFyRW52aXJvbm1lbnRgIHNpbmdsZXRvbiBjcmVhdGVkIHZpYSBgTG9nZ2VkRW52aXJvbm1lbnQuYWNjdW11bGF0ZWAuXG4gKiBTZXJ2aWNlcyByZWFkIHRoZWlyIGNyZWRlbnRpYWxzIGFuZCBkZWZhdWx0cyBmcm9tIHRoZSBtYXRjaGluZ1xuICogYGNhbGVuZGFyLjxwcm92aWRlcj5gIHNsaWNlLCB1c2luZyB0aGUgYGVudlN0cmluZ2AvYGVudk51bWJlcmAgaGVscGVycyBmcm9tXG4gKiBgc2hhcmVkL2Vudmlyb25tZW50VmFsdWVgIHRvIHJlamVjdCB1bnNldC1sZWFmIHByb3hpZXMuIFRoZSBtYXRjaGluZyBwdWJsaWNcbiAqIHN1YnBhdGggZXhwb3J0IGlzIGBAZGVjYWYtdHMvaW50ZWdyYXRpb25zL2NhbGVuZGFyL2dvb2dsZS1jYWxlbmRhcmAuXG4gKi9cbmltcG9ydCB7IExvZ2dlZEVudmlyb25tZW50IH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBY2N1bXVsYXRlZCBjYWxlbmRhciBlbnZpcm9ubWVudCBzaW5nbGV0b25cbiAqIEBzdW1tYXJ5IFRoZSBgTG9nZ2VkRW52aXJvbm1lbnQuYWNjdW11bGF0ZWAtcmVnaXN0ZXJlZCBpbnN0YW5jZSBiYWNraW5nIHRoZVxuICogYENhbGVuZGFyRW52aXJvbm1lbnRTaGFwZWAgY29udHJhY3QuIFRoZSBHb29nbGUgQ2FsZW5kYXIgc2VydmljZSByZWFkc1xuICogYENhbGVuZGFyRW52aXJvbm1lbnQuY2FsZW5kYXIuZ29vZ2xlQ2FsZW5kYXJgIGluc2lkZVxuICogYGNvbmZpZ0Zyb21FbnZpcm9ubWVudCgpYCBhbmQgdHJhbnNsYXRlcyBpdCBpbnRvIGl0c1xuICogYEh0dHBBcGlTZXJ2aWNlQ29uZmlnYC1kZXJpdmVkIGNvbmZpZy4gQ3JlZGVudGlhbHMgY29tZSBmcm9tIGVudmlyb25tZW50XG4gKiB2YXJpYWJsZXM7IGZvciBhcy1ncmFwaCBub2RlIHVzYWdlIHRob3NlIGFyZSBwcm92aWRlZCBhc1xuICogYEdSQVBIX0NSRURFTlRJQUxfKmAgdmFsdWVzIChwbGFjZWhvbGRlcnMgaW4gdGhpcyBleGFtcGxlKS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgR29vZ2xlQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9pbnRlZ3JhdGlvbnMvY2FsZW5kYXIvZ29vZ2xlLWNhbGVuZGFyXCI7XG4gKlxuICogLy8gd2l0aCBjYWxlbmRhci5nb29nbGVDYWxlbmRhci50b2tlbiAvIGNhbGVuZGFySWQgY29uZmlndXJlZCBpbiB0aGUgZW52aXJvbm1lbnRcbiAqIGNvbnN0IGNhbGVuZGFyID0gbmV3IEdvb2dsZUNhbGVuZGFyU2VydmljZSgpO1xuICogYXdhaXQgY2FsZW5kYXIuaW5pdGlhbGl6ZSgpO1xuICogYGBgXG4gKiBAY29uc3RhbnQge0xvZ2dlZEVudmlyb25tZW50fSBDYWxlbmRhckVudmlyb25tZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmludGVncmF0aW9ucy9jYWxlbmRhci9lbnZpcm9ubWVudFxuICovXG5leHBvcnQgY29uc3QgQ2FsZW5kYXJFbnZpcm9ubWVudCA9IExvZ2dlZEVudmlyb25tZW50LmFjY3VtdWxhdGUoe1xuICAgIGNhbGVuZGFyOiB7XG4gICAgICAgIGdvb2dsZUNhbGVuZGFyOiB7XG4gICAgICAgICAgICB0b2tlbjogXCJcIixcbiAgICAgICAgICAgIGFwaUtleTogXCJcIixcbiAgICAgICAgICAgIGNhbGVuZGFySWQ6IFwiXCIsXG4gICAgICAgICAgICBiYXNlVXJsOiBcIlwiLFxuICAgICAgICAgICAgdGltZW91dDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgIH0sXG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpXNTJhWEp2Ym0xbGJuUXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMkZzWlc1a1lYSXZaVzUyYVhKdmJtMWxiblF1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRTdPenM3T3pzN096czdSMEZWUnp0QlFVTklMRTlCUVU4c1JVRkJSU3hwUWtGQmFVSXNSVUZCUlN4TlFVRk5MRzFDUVVGdFFpeERRVUZETzBGQk1FSjBSRHM3T3pzN096czdPenM3T3pzN096czdPenRIUVcxQ1J6dEJRVU5JTEUxQlFVMHNRMEZCUXl4TlFVRk5MRzFDUVVGdFFpeEhRVUZITEdsQ1FVRnBRaXhEUVVGRExGVkJRVlVzUTBGQlF6dEpRVU01UkN4UlFVRlJMRVZCUVVVN1VVRkRVaXhqUVVGakxFVkJRVVU3V1VGRFpDeExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTlVMRTFCUVUwc1JVRkJSU3hGUVVGRk8xbEJRMVlzVlVGQlZTeEZRVUZGTEVWQlFVVTdXVUZEWkN4UFFVRlBMRVZCUVVVc1JVRkJSVHRaUVVOWUxFOUJRVThzUlVGQlJTeFRRVUU0UWp0VFFVTjRRenRMUVVOR08wTkJRekJDTEVOQlFVTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1FHMXZaSFZzWlNCcGJuUmxaM0poZEdsdmJuTXZZMkZzWlc1a1lYSXZaVzUyYVhKdmJtMWxiblJjYmlBcUlFQnpkVzF0WVhKNUlFVnVkbWx5YjI1dFpXNTBJR052Ym5SeVlXTjBJR0Z1WkNCaFkyTjFiWFZzWVhSbFpDQmxiblpwY205dWJXVnVkQ0JtYjNJZ2RHaGxJR05oYkdWdVpHRnlJR2x1ZEdWbmNtRjBhVzl1SUhObGNuWnBZMlZ6TGx4dUlDb2dRR1JsYzJOeWFYQjBhVzl1SUVSbFkyeGhjbVZ6SUhSb1pTQmdRMkZzWlc1a1lYSkZiblpwY205dWJXVnVkRk5vWVhCbFlDQmpiMjV6ZFcxbFpDQmllU0IwYUdVZ1IyOXZaMnhsWEc0Z0tpQkRZV3hsYm1SaGNpQnpaWEoyYVdObEozTWdZR052Ym1acFowWnliMjFGYm5acGNtOXViV1Z1ZENncFlDQnBiWEJzWlcxbGJuUmhkR2x2YmlCaGJtUWdkR2hsWEc0Z0tpQmdRMkZzWlc1a1lYSkZiblpwY205dWJXVnVkR0FnYzJsdVoyeGxkRzl1SUdOeVpXRjBaV1FnZG1saElHQk1iMmRuWldSRmJuWnBjbTl1YldWdWRDNWhZMk4xYlhWc1lYUmxZQzVjYmlBcUlGTmxjblpwWTJWeklISmxZV1FnZEdobGFYSWdZM0psWkdWdWRHbGhiSE1nWVc1a0lHUmxabUYxYkhSeklHWnliMjBnZEdobElHMWhkR05vYVc1blhHNGdLaUJnWTJGc1pXNWtZWEl1UEhCeWIzWnBaR1Z5UG1BZ2MyeHBZMlVzSUhWemFXNW5JSFJvWlNCZ1pXNTJVM1J5YVc1bllDOWdaVzUyVG5WdFltVnlZQ0JvWld4d1pYSnpJR1p5YjIxY2JpQXFJR0J6YUdGeVpXUXZaVzUyYVhKdmJtMWxiblJXWVd4MVpXQWdkRzhnY21WcVpXTjBJSFZ1YzJWMExXeGxZV1lnY0hKdmVHbGxjeTRnVkdobElHMWhkR05vYVc1bklIQjFZbXhwWTF4dUlDb2djM1ZpY0dGMGFDQmxlSEJ2Y25RZ2FYTWdZRUJrWldOaFppMTBjeTlwYm5SbFozSmhkR2x2Ym5NdlkyRnNaVzVrWVhJdloyOXZaMnhsTFdOaGJHVnVaR0Z5WUM1Y2JpQXFMMXh1YVcxd2IzSjBJSHNnVEc5bloyVmtSVzUyYVhKdmJtMWxiblFnZlNCbWNtOXRJRndpUUdSbFkyRm1MWFJ6TDJ4dloyZHBibWRjSWp0Y2JseHVMeW9xWEc0Z0tpQkFaR1Z6WTNKcGNIUnBiMjRnUlc1MmFYSnZibTFsYm5RZ2MyaGhjR1VnWm05eUlIUm9aU0JqWVd4bGJtUmhjaUJwYm5SbFozSmhkR2x2YmlCelpYSjJhV05sYzF4dUlDb2dRSE4xYlcxaGNua2dSR1ZtYVc1bGN5QjBhR1VnWUdOaGJHVnVaR0Z5WUNCeWIyOTBJSGRwZEdnZ2RHaGxJR0JuYjI5bmJHVkRZV3hsYm1SaGNtQWdjMnhwWTJVdUlGUm9aVnh1SUNvZ2MyeHBZMlVnWTJGeWNtbGxjeUIwYUdVZ1QwRjFkR2dnWUhSdmEyVnVZQ0JoYm1RdmIzSWdZR0Z3YVV0bGVXQXNJSFJvWlNCa1pXWmhkV3gwSUdCallXeGxibVJoY2tsa1lDeGNiaUFxSUdGdVpDQmhiaUJ2Y0hScGIyNWhiQ0JnWW1GelpWVnliR0FnYjNabGNuSnBaR1VnWVc1a0lHQjBhVzFsYjNWMFlDNGdSbWxsYkdSeklHRnlaU0IwZVhCbFpDQmhjMXh1SUNvZ2NtVnhkV2x5WldRZ2FHVnlaU0J6YnlCZ1RHOW5aMlZrUlc1MmFYSnZibTFsYm5RdVlXTmpkVzExYkdGMFpXQWdjbVZuYVhOMFpYSnpJSFJvWlcwN0lHRmljMlZ1ZENCMllXeDFaWE5jYmlBcUlISmxjMjlzZG1VZ2RHOGdjSEp2ZUhrZ2NHeGhZMlZvYjJ4a1pYSnpJR0YwSUhKMWJuUnBiV1VnWVc1a0lHMTFjM1FnY0dGemN5QjBhSEp2ZFdkb1hHNGdLaUJnWlc1MlUzUnlhVzVuWUM5Z1pXNTJUblZ0WW1WeVlDNGdWbUZzZFdWeklHRnlaU0JqY21Wa1pXNTBhV0ZzSUhKbFptVnlaVzVqWlhNZ2MzVndjR3hwWldRZ1lua2dkR2hsWEc0Z0tpQmxiblpwY205dWJXVnVkQ3dnYm1WMlpYSWdiR2wwWlhKaGJITWdaVzFpWldSa1pXUWdhVzRnYzI5MWNtTmxMbHh1SUNvZ1FHMWxiV0psY2s5bUlHMXZaSFZzWlRwcGJuUmxaM0poZEdsdmJuTXZZMkZzWlc1a1lYSXZaVzUyYVhKdmJtMWxiblJjYmlBcUwxeHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkRZV3hsYm1SaGNrVnVkbWx5YjI1dFpXNTBVMmhoY0dVZ2UxeHVJQ0JqWVd4bGJtUmhjam9nZTF4dUlDQWdJQzhxS2lCSGIyOW5iR1VnUTJGc1pXNWtZWElnVDBGMWRHZ2dkRzlyWlc0dlFWQkpJR3RsZVNCaGJtUWdaR1ZtWVhWc2RDQmpZV3hsYm1SaGNpQW9ZR05oYkdWdVpHRnlMMmR2YjJkc1pTMWpZV3hsYm1SaGNtQXBMaUFxTDF4dUlDQWdJR2R2YjJkc1pVTmhiR1Z1WkdGeU9pQjdYRzRnSUNBZ0lDQjBiMnRsYmpvZ2MzUnlhVzVuTzF4dUlDQWdJQ0FnWVhCcFMyVjVPaUJ6ZEhKcGJtYzdYRzRnSUNBZ0lDQmpZV3hsYm1SaGNrbGtPaUJ6ZEhKcGJtYzdYRzRnSUNBZ0lDQmlZWE5sVlhKc09pQnpkSEpwYm1jN1hHNGdJQ0FnSUNCMGFXMWxiM1YwUHpvZ2JuVnRZbVZ5TzF4dUlDQWdJSDA3WEc0Z0lIMDdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FHUmxjMk55YVhCMGFXOXVJRUZqWTNWdGRXeGhkR1ZrSUdOaGJHVnVaR0Z5SUdWdWRtbHliMjV0Wlc1MElITnBibWRzWlhSdmJseHVJQ29nUUhOMWJXMWhjbmtnVkdobElHQk1iMmRuWldSRmJuWnBjbTl1YldWdWRDNWhZMk4xYlhWc1lYUmxZQzF5WldkcGMzUmxjbVZrSUdsdWMzUmhibU5sSUdKaFkydHBibWNnZEdobFhHNGdLaUJnUTJGc1pXNWtZWEpGYm5acGNtOXViV1Z1ZEZOb1lYQmxZQ0JqYjI1MGNtRmpkQzRnVkdobElFZHZiMmRzWlNCRFlXeGxibVJoY2lCelpYSjJhV05sSUhKbFlXUnpYRzRnS2lCZ1EyRnNaVzVrWVhKRmJuWnBjbTl1YldWdWRDNWpZV3hsYm1SaGNpNW5iMjluYkdWRFlXeGxibVJoY21BZ2FXNXphV1JsWEc0Z0tpQmdZMjl1Wm1sblJuSnZiVVZ1ZG1seWIyNXRaVzUwS0NsZ0lHRnVaQ0IwY21GdWMyeGhkR1Z6SUdsMElHbHVkRzhnYVhSelhHNGdLaUJnU0hSMGNFRndhVk5sY25acFkyVkRiMjVtYVdkZ0xXUmxjbWwyWldRZ1kyOXVabWxuTGlCRGNtVmtaVzUwYVdGc2N5QmpiMjFsSUdaeWIyMGdaVzUyYVhKdmJtMWxiblJjYmlBcUlIWmhjbWxoWW14bGN6c2dabTl5SUdGekxXZHlZWEJvSUc1dlpHVWdkWE5oWjJVZ2RHaHZjMlVnWVhKbElIQnliM1pwWkdWa0lHRnpYRzRnS2lCZ1IxSkJVRWhmUTFKRlJFVk9WRWxCVEY4cVlDQjJZV3gxWlhNZ0tIQnNZV05sYUc5c1pHVnljeUJwYmlCMGFHbHpJR1Y0WVcxd2JHVXBMbHh1SUNvZ1FHVjRZVzF3YkdWY2JpQXFJR0JnWUhSelhHNGdLaUJwYlhCdmNuUWdleUJIYjI5bmJHVkRZV3hsYm1SaGNsTmxjblpwWTJVZ2ZTQm1jbTl0SUZ3aVFHUmxZMkZtTFhSekwybHVkR1ZuY21GMGFXOXVjeTlqWVd4bGJtUmhjaTluYjI5bmJHVXRZMkZzWlc1a1lYSmNJanRjYmlBcVhHNGdLaUF2THlCM2FYUm9JR05oYkdWdVpHRnlMbWR2YjJkc1pVTmhiR1Z1WkdGeUxuUnZhMlZ1SUM4Z1kyRnNaVzVrWVhKSlpDQmpiMjVtYVdkMWNtVmtJR2x1SUhSb1pTQmxiblpwY205dWJXVnVkRnh1SUNvZ1kyOXVjM1FnWTJGc1pXNWtZWElnUFNCdVpYY2dSMjl2WjJ4bFEyRnNaVzVrWVhKVFpYSjJhV05sS0NrN1hHNGdLaUJoZDJGcGRDQmpZV3hsYm1SaGNpNXBibWwwYVdGc2FYcGxLQ2s3WEc0Z0tpQmdZR0JjYmlBcUlFQmpiMjV6ZEdGdWRDQjdURzluWjJWa1JXNTJhWEp2Ym0xbGJuUjlJRU5oYkdWdVpHRnlSVzUyYVhKdmJtMWxiblJjYmlBcUlFQnRaVzFpWlhKUFppQnRiMlIxYkdVNmFXNTBaV2R5WVhScGIyNXpMMk5oYkdWdVpHRnlMMlZ1ZG1seWIyNXRaVzUwWEc0Z0tpOWNibVY0Y0c5eWRDQmpiMjV6ZENCRFlXeGxibVJoY2tWdWRtbHliMjV0Wlc1MElEMGdURzluWjJWa1JXNTJhWEp2Ym0xbGJuUXVZV05qZFcxMWJHRjBaU2g3WEc0Z0lHTmhiR1Z1WkdGeU9pQjdYRzRnSUNBZ1oyOXZaMnhsUTJGc1pXNWtZWEk2SUh0Y2JpQWdJQ0FnSUhSdmEyVnVPaUJjSWx3aUxGeHVJQ0FnSUNBZ1lYQnBTMlY1T2lCY0lsd2lMRnh1SUNBZ0lDQWdZMkZzWlc1a1lYSkpaRG9nWENKY0lpeGNiaUFnSUNBZ0lHSmhjMlZWY213NklGd2lYQ0lzWEc0Z0lDQWdJQ0IwYVcxbGIzVjBPaUIxYm1SbFptbHVaV1FnWVhNZ2RXNXJibTkzYmlCaGN5QnVkVzFpWlhJc1hHNGdJQ0FnZlN4Y2JpQWdmU3hjYm4wZ1lYTWdRMkZzWlc1a1lYSkZiblpwY205dWJXVnVkRk5vWVhCbEtUdGNiaUpkZlE9PSJdfQ==
|