From 221c207c3fed9ed9d67915050bfbfcf11aa8e80f Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Tue, 16 Jul 2024 17:21:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InterFaceContorl/Dy_Exchange/.gitattributes | 1 + InterFaceContorl/Dy_Exchange/.gitignore | 265 + InterFaceContorl/Dy_Exchange/.prettierrc | 5 + InterFaceContorl/Dy_Exchange/Dy_Exchange.sln | 102 + .../Dy_Exchange/Dy_Exchange.sln.DotSettings | 23 + InterFaceContorl/Dy_Exchange/NuGet.Config | 5 + InterFaceContorl/Dy_Exchange/common.props | 19 + .../FasterAuditedEntityBaseDto.cs | 10 + .../FasterCreateUpdateBaseDto.cs | 10 + .../AppBase/Filters/Condition.cs | 8 + .../AppBase/Filters/EnumFilterAction.cs | 62 + .../AppBase/Filters/EnumFilterLogic.cs | 17 + .../AppBase/Filters/Filter.cs | 40 + .../AppBase/Filters/FilterExtensions.cs | 370 + .../AppBase/ISfsRequest.cs | 12 + .../AppBase/IZbxBase.cs | 57 + .../AppBase/SfsRequestInputBase.cs | 12 + .../AllTableColumnTypeDto.cs | 22 + .../AppBase/TableColumnTypeDto/ColumnType.cs | 31 + .../CreateUpdateExportCustomUserSettingDto.cs | 33 + .../Dtos/ExportCustomUserSettingDto.cs | 38 + .../ExportCustomUserSettingGetListInput.cs | 35 + .../IExportCustomUserSettingAppService.cs | 24 + .../Dy_Exchange.Application.Contracts.csproj | 26 + .../Dy_ExchangeApplicationContractsModule.cs | 28 + .../Dy_ExchangeDtoExtensions.cs | 28 + ...Dy_ExchangePermissionDefinitionProvider.cs | 25 + .../Permissions/Dy_ExchangePermissions.cs | 29 + ...ateUpdateDataExchangeInterfaceConfigDto.cs | 39 + .../Dtos/DataExchangeInterfaceConfigDto.cs | 48 + .../IDataExchangeInterfaceConfigAppService.cs | 21 + .../Extensions/ExpressionExtensions.cs | 27 + .../Extensions/ObjectExpressionExtensions.cs | 54 + .../Extensions/ObjectMapperExtensions.cs | 119 + .../AppBase/Extensions/StringExtensions.cs | 17 + .../AppBase/ZbxBase.cs | 899 ++ .../ExportCustomUserSettingAppService.cs | 52 + .../Dy_Exchange.Application.csproj | 27 + .../Dy_ExchangeAppService.cs | 17 + ...Dy_ExchangeApplicationAutoMapperProfile.cs | 17 + .../Dy_ExchangeApplicationModule.cs | 31 + .../Properties/AssemblyInfo.cs | 2 + .../DataExchangeInterfaceConfigAppService.cs | 30 + .../Dy_Exchange.AuthServer.csproj | 56 + .../Dy_ExchangeAuthServerModule.cs | 194 + .../Dy_ExchangeBrandingProvider.cs | 10 + .../Dy_Exchange.AuthServer/Pages/Index.cshtml | 115 + .../Pages/Index.cshtml.cs | 35 + .../Pages/_ViewImports.cshtml | 4 + .../src/Dy_Exchange.AuthServer/Program.cs | 56 + .../Properties/launchSettings.json | 27 + .../abp.resourcemapping.js | 11 + .../appsettings.Development.json | 2 + .../Dy_Exchange.AuthServer/appsettings.json | 17 + .../appsettings.secrets.json | 2 + .../Dy_Exchange.AuthServer/package-lock.json | 7663 ++++++++++++++++ .../src/Dy_Exchange.AuthServer/package.json | 8 + .../src/Dy_Exchange.AuthServer/web.config | 18 + .../wwwroot/global-styles.css | 6 + .../logo/leptonx/logo-dark-thumbnail.png | Bin 0 -> 17592 bytes .../wwwroot/images/logo/leptonx/logo-dark.png | Bin 0 -> 47227 bytes .../logo/leptonx/logo-light-thumbnail.png | Bin 0 -> 13598 bytes .../images/logo/leptonx/logo-light.png | Bin 0 -> 38531 bytes .../DbMigratorHostedService.cs | 51 + .../Dy_Exchange.DbMigrator.csproj | 46 + .../Dy_ExchangeDbMigratorModule.cs | 21 + .../src/Dy_Exchange.DbMigrator/Program.cs | 41 + .../Dy_Exchange.DbMigrator/appsettings.json | 30 + .../appsettings.secrets.json | 2 + .../Dy_Exchange.Domain.Shared.csproj | 32 + .../Dy_ExchangeDomainErrorCodes.cs | 6 + .../Dy_ExchangeDomainSharedModule.cs | 58 + .../Dy_ExchangeGlobalFeatureConfigurator.cs | 22 + .../Dy_ExchangeModuleExtensionConfigurator.cs | 73 + .../Enums/Enum_ExportCustomUserSetting.cs | 13 + .../Localization/Dy_Exchange/ar.json | 30 + .../Localization/Dy_Exchange/cs.json | 8 + .../Localization/Dy_Exchange/de.json | 8 + .../Localization/Dy_Exchange/en-GB.json | 8 + .../Localization/Dy_Exchange/en.json | 8 + .../Localization/Dy_Exchange/es.json | 8 + .../Localization/Dy_Exchange/fi.json | 8 + .../Localization/Dy_Exchange/fr.json | 8 + .../Localization/Dy_Exchange/hi.json | 8 + .../Localization/Dy_Exchange/hr.json | 8 + .../Localization/Dy_Exchange/hu.json | 8 + .../Localization/Dy_Exchange/is.json | 8 + .../Localization/Dy_Exchange/it.json | 8 + .../Localization/Dy_Exchange/nl.json | 8 + .../Localization/Dy_Exchange/pl-PL.json | 8 + .../Localization/Dy_Exchange/pt-BR.json | 8 + .../Localization/Dy_Exchange/ro-RO.json | 8 + .../Localization/Dy_Exchange/ru.json | 8 + .../Localization/Dy_Exchange/sk.json | 8 + .../Localization/Dy_Exchange/sl.json | 8 + .../Localization/Dy_Exchange/tr.json | 8 + .../Localization/Dy_Exchange/vi.json | 8 + .../Localization/Dy_Exchange/zh-Hans.json | 8 + .../Localization/Dy_Exchange/zh-Hant.json | 8 + .../Localization/Dy_ExchangeResource.cs | 9 + .../MultiTenancy/MultiTenancyConsts.cs | 10 + .../ExportCustomUserSetting.cs | 50 + .../IExportCustomUserSettingRepository.cs | 12 + .../Data/Dy_ExchangeDbMigrationService.cs | 218 + .../Data/IDy_ExchangeDbSchemaMigrator.cs | 8 + .../Data/NullDy_ExchangeDbSchemaMigrator.cs | 15 + .../Dy_Exchange.Domain.csproj | 33 + .../Dy_Exchange.Domain/Dy_ExchangeConsts.cs | 8 + .../Dy_ExchangeDomainModule.cs | 68 + .../OpenIddictDataSeedContributor.cs | 415 + .../Properties/AssemblyInfo.cs | 3 + .../Dy_ExchangeSettingDefinitionProvider.cs | 12 + .../Settings/Dy_ExchangeSettings.cs | 9 + .../ArchivedIncomingToWm.cs | 54 + .../ArchivedOutgoingToExternal.cs | 69 + ...ataExchangeArchivedIncomingFromExternal.cs | 67 + .../DataExchangeArchivedOutgoingFromWm.cs | 53 + .../DataExchangeIncomingFromExternal.cs | 67 + .../DataExchangeInterfaceConfig.cs | 20 + .../DataExchangeMessageReceive.cs | 29 + .../DataExchangeOutgoingFromWm.cs | 55 + .../IDataExchangeInterfaceConfigRepository.cs | 11 + .../Z_Business/IncomingToWm/IncomingToWm.cs | 51 + .../OutgoingToExternal/OutgoingToExternal.cs | 69 + ...stomUserSettingEfCoreQuerableExtensions.cs | 21 + .../ExportCustomUserSettingRepository.cs | 21 + .../Dy_Exchange.EntityFrameworkCore.csproj | 31 + .../Dy_ExchangeDbContext.cs | 102 + .../Dy_ExchangeDbContextFactory.cs | 33 + ...y_ExchangeEfCoreEntityExtensionMappings.cs | 44 + .../Dy_ExchangeEntityFrameworkCoreModule.cs | 56 + ...rameworkCoreDy_ExchangeDbSchemaMigrator.cs | 34 + .../20240711062225_Initial.Designer.cs | 1870 ++++ .../Migrations/20240711062225_Initial.cs | 1084 +++ .../Dy_ExchangeDbContextModelSnapshot.cs | 1867 ++++ .../Properties/AssemblyInfo.cs | 2 + ...InterfaceConfigEfCoreQuerableExtensions.cs | 22 + .../DataExchangeInterfaceConfigRepository.cs | 20 + .../Dy_Exchange.HttpApi.Client.csproj | 29 + .../Dy_ExchangeHttpApiClientModule.cs | 38 + .../Controllers/HomeController.cs | 12 + .../Dy_Exchange.HttpApi.Host.csproj | 40 + .../Dy_ExchangeHttpApiHostModule.cs | 210 + .../src/Dy_Exchange.HttpApi.Host/Program.cs | 56 + .../Properties/launchSettings.json | 27 + .../appsettings.Development.json | 2 + .../Dy_Exchange.HttpApi.Host/appsettings.json | 26 + .../appsettings.secrets.json | 2 + .../src/Dy_Exchange.HttpApi.Host/web.config | 18 + .../Controllers/Dy_ExchangeController.cs | 14 + .../Dy_Exchange.HttpApi.csproj | 24 + .../Dy_ExchangeHttpApiModule.cs | 41 + .../Models/Test/TestModel.cs | 10 + .../Toolbar/LoginLink/Default.cshtml | 4 + .../LoginLink/LoginLinkViewComponent.cs | 12 + .../Components/_ViewImports.cshtml | 4 + .../Controllers/AccountController.cs | 8 + .../Dy_Exchange.Web/Dy_Exchange.Web.csproj | 62 + .../Dy_ExchangeBrandingProvider.cs | 10 + .../Dy_ExchangeWebAutoMapperProfile.cs | 11 + .../Dy_Exchange.Web/Dy_ExchangeWebModule.cs | 277 + .../Menus/Dy_ExchangeMenuContributor.cs | 81 + .../Dy_Exchange.Web/Menus/Dy_ExchangeMenus.cs | 10 + .../Menus/Dy_ExchangeToolbarContributor.cs | 25 + .../Pages/Dy_ExchangePageModel.cs | 12 + .../src/Dy_Exchange.Web/Pages/Index.cshtml | 187 + .../src/Dy_Exchange.Web/Pages/Index.cshtml.cs | 17 + .../src/Dy_Exchange.Web/Pages/Index.css | 3 + .../src/Dy_Exchange.Web/Pages/Index.js | 3 + .../Dy_Exchange.Web/Pages/_ViewImports.cshtml | 4 + .../src/Dy_Exchange.Web/Program.cs | 56 + .../Properties/AssemblyInfo.cs | 2 + .../Properties/launchSettings.json | 27 + .../Dy_Exchange.Web/Views/_ViewImports.cshtml | 4 + .../Dy_Exchange.Web/abp.resourcemapping.js | 11 + .../appsettings.Development.json | 3 + .../src/Dy_Exchange.Web/appsettings.json | 22 + .../Dy_Exchange.Web/appsettings.secrets.json | 2 + .../src/Dy_Exchange.Web/package-lock.json | 7663 ++++++++++++++++ .../src/Dy_Exchange.Web/package.json | 8 + .../src/Dy_Exchange.Web/web.config | 18 + .../Dy_Exchange.Web/wwwroot/global-styles.css | 6 + .../logo/leptonx/logo-dark-thumbnail.png | Bin 0 -> 17592 bytes .../wwwroot/images/logo/leptonx/logo-dark.png | Bin 0 -> 47227 bytes .../logo/leptonx/logo-light-thumbnail.png | Bin 0 -> 13598 bytes .../images/logo/leptonx/logo-light.png | Bin 0 -> 38531 bytes .../Dy_Exchange.Application.Tests.csproj | 20 + .../Dy_ExchangeApplicationTestBase.cs | 6 + .../Dy_ExchangeApplicationTestModule.cs | 12 + .../Samples/SampleAppServiceTests.cs | 32 + .../Dy_Exchange.Domain.Tests.csproj | 19 + .../Dy_ExchangeDomainTestBase.cs | 6 + .../Dy_ExchangeDomainTestModule.cs | 12 + .../Samples/SampleDomainTests.cs | 44 + ..._Exchange.EntityFrameworkCore.Tests.csproj | 21 + .../Dy_ExchangeEntityFrameworkCoreTestBase.cs | 8 + ...y_ExchangeEntityFrameworkCoreTestModule.cs | 76 + .../Samples/SampleRepositoryTests.cs | 43 + .../ClientDemoService.cs | 25 + .../ConsoleTestAppHostedService.cs | 40 + ...hange.HttpApi.Client.ConsoleTestApp.csproj | 33 + .../Dy_ExchangeConsoleApiClientModule.cs | 30 + .../Program.cs | 22 + .../appsettings.json | 17 + .../appsettings.secrets.json | 2 + .../Dy_Exchange.TestBase.csproj | 31 + .../Dy_ExchangeTestBase.cs | 60 + .../Dy_ExchangeTestBaseModule.cs | 52 + .../Dy_ExchangeTestDataSeedContributor.cs | 15 + .../Security/FakeCurrentPrincipalAccessor.cs | 25 + .../.gitattributes | 1 + .../WinIn.FasterZ.AuthSiteCenter/.gitignore | 265 + .../WinIn.FasterZ.AuthSiteCenter/.prettierrc | 5 + .../WinIn.FasterZ.AuthSiteCenter/NuGet.Config | 5 + .../WinIn.FasterZ.AuthSiteCenter.sln | 97 + ...nIn.FasterZ.AuthSiteCenter.sln.DotSettings | 23 + .../WinIn.FasterZ.AuthSiteCenter/common.props | 19 + ...uthSiteCenterApplicationContractsModule.cs | 28 + .../AuthSiteCenterDtoExtensions.cs | 28 + ...hSiteCenterPermissionDefinitionProvider.cs | 20 + .../Permissions/AuthSiteCenterPermissions.cs | 9 + ...uthSiteCenter.Application.Contracts.csproj | 25 + .../AuthSiteCenterAppService.cs | 17 + ...hSiteCenterApplicationAutoMapperProfile.cs | 13 + .../AuthSiteCenterApplicationModule.cs | 31 + .../Permissions/AuthenticationFeatures.cs | 41 + .../Permissions/IAuthenticateResultFeature.cs | 15 + .../Permissions/PermissionChecker.cs | 168 + .../Permissions/PermissionGrantCacheItem.cs | 34 + .../Permissions/PermissionStore.cs | 148 + .../Permissions/PermissionStoreAppService.cs | 153 + .../Permissions/ZAuthAppBuilderExtensions.cs | 25 + .../Permissions/ZAuthenticationMiddleware.cs | 91 + .../ZRolePermissionValueProvider.cs | 89 + .../Properties/AssemblyInfo.cs | 2 + ....FasterZ.AuthSiteCenter.Application.csproj | 37 + .../AuthSiteCenterDbMigratorModule.cs | 14 + .../DbMigratorHostedService.cs | 51 + .../Program.cs | 41 + ...n.FasterZ.AuthSiteCenter.DbMigrator.csproj | 45 + .../appsettings.json | 30 + .../appsettings.secrets.json | 2 + .../AuthSiteCenterDomainErrorCodes.cs | 6 + .../AuthSiteCenterDomainSharedModule.cs | 58 + ...AuthSiteCenterGlobalFeatureConfigurator.cs | 22 + ...thSiteCenterModuleExtensionConfigurator.cs | 73 + .../Localization/AuthSiteCenter/ar.json | 8 + .../Localization/AuthSiteCenter/cs.json | 8 + .../Localization/AuthSiteCenter/de.json | 8 + .../Localization/AuthSiteCenter/en-GB.json | 8 + .../Localization/AuthSiteCenter/en.json | 8 + .../Localization/AuthSiteCenter/es.json | 8 + .../Localization/AuthSiteCenter/fi.json | 8 + .../Localization/AuthSiteCenter/fr.json | 8 + .../Localization/AuthSiteCenter/hi.json | 8 + .../Localization/AuthSiteCenter/hr.json | 8 + .../Localization/AuthSiteCenter/hu.json | 8 + .../Localization/AuthSiteCenter/is.json | 8 + .../Localization/AuthSiteCenter/it.json | 8 + .../Localization/AuthSiteCenter/nl.json | 8 + .../Localization/AuthSiteCenter/pl-PL.json | 8 + .../Localization/AuthSiteCenter/pt-BR.json | 8 + .../Localization/AuthSiteCenter/ro-RO.json | 8 + .../Localization/AuthSiteCenter/ru.json | 8 + .../Localization/AuthSiteCenter/sk.json | 8 + .../Localization/AuthSiteCenter/sl.json | 8 + .../Localization/AuthSiteCenter/tr.json | 8 + .../Localization/AuthSiteCenter/vi.json | 8 + .../Localization/AuthSiteCenter/zh-Hans.json | 8 + .../Localization/AuthSiteCenter/zh-Hant.json | 8 + .../Localization/AuthSiteCenterResource.cs | 9 + .../MultiTenancy/MultiTenancyConsts.cs | 10 + ...asterZ.AuthSiteCenter.Domain.Shared.csproj | 32 + .../AuthSiteCenterConsts.cs | 8 + .../AuthSiteCenterDomainModule.cs | 68 + .../Data/AuthSiteCenterDbMigrationService.cs | 218 + .../Data/IAuthSiteCenterDbSchemaMigrator.cs | 8 + .../NullAuthSiteCenterDbSchemaMigrator.cs | 15 + .../OpenIddictDataSeedContributor.cs | 415 + .../Properties/AssemblyInfo.cs | 3 + ...AuthSiteCenterSettingDefinitionProvider.cs | 12 + .../Settings/AuthSiteCenterSettings.cs | 9 + ...WinIn.FasterZ.AuthSiteCenter.Domain.csproj | 28 + .../AuthSiteCenterDbContext.cs | 86 + .../AuthSiteCenterDbContextFactory.cs | 33 + ...SiteCenterEfCoreEntityExtensionMappings.cs | 44 + ...AuthSiteCenterEntityFrameworkCoreModule.cs | 54 + ...eworkCoreAuthSiteCenterDbSchemaMigrator.cs | 34 + .../20230908213846_Initial.Designer.cs | 1870 ++++ .../Migrations/20230908213846_Initial.cs | 1084 +++ .../AuthSiteCenterDbContextModelSnapshot.cs | 1867 ++++ .../Properties/AssemblyInfo.cs | 2 + ....AuthSiteCenter.EntityFrameworkCore.csproj | 31 + .../AuthSiteCenterHttpApiClientModule.cs | 38 + ...sterZ.AuthSiteCenter.HttpApi.Client.csproj | 29 + .../AuthSiteCenterHttpApiModule.cs | 41 + .../Controllers/AuthSiteCenterController.cs | 14 + .../Models/Test/TestModel.cs | 10 + ...inIn.FasterZ.AuthSiteCenter.HttpApi.csproj | 24 + .../AuthSiteCenterAutoMapperProfile.cs | 17 + .../AuthSiteCenterBrandingProvider.cs | 10 + .../AuthSiteCenterWebAutoMapperProfile.cs | 11 + .../AuthSiteCenterWebModule.cs | 342 + .../Components/_ViewImports.cshtml | 4 + .../Controllers/CustAccountController.cs | 154 + .../Menus/AuthSiteCenterMenuContributor.cs | 51 + .../Menus/AuthSiteCenterMenus.cs | 10 + .../Pages/AuthSiteCenterPageModel.cs | 14 + .../Pages/Index.cshtml | 187 + .../Pages/Index.cshtml.cs | 9 + .../Pages/Index.css | 3 + .../Pages/Index.js | 3 + .../Pages/_ViewImports.cshtml | 4 + .../Program.cs | 56 + .../Properties/AssemblyInfo.cs | 2 + .../Properties/launchSettings.json | 27 + .../Views/_ViewImports.cshtml | 4 + .../WinIn.FasterZ.AuthSiteCenter.Web.csproj | 66 + .../abp.resourcemapping.js | 11 + .../appsettings.Development.json | 2 + .../appsettings.json | 22 + .../appsettings.secrets.json | 2 + .../package-lock.json | 7947 +++++++++++++++++ .../package.json | 8 + .../serilogsettings.json | 40 + .../web.config | 18 + .../wwwroot/global-styles.css | 6 + .../logo/leptonx/logo-dark-thumbnail.png | Bin 0 -> 17592 bytes .../wwwroot/images/logo/leptonx/logo-dark.png | Bin 0 -> 47227 bytes .../logo/leptonx/logo-light-thumbnail.png | Bin 0 -> 13598 bytes .../images/logo/leptonx/logo-light.png | Bin 0 -> 38531 bytes 331 files changed, 44993 insertions(+) create mode 100644 InterFaceContorl/Dy_Exchange/.gitattributes create mode 100644 InterFaceContorl/Dy_Exchange/.gitignore create mode 100644 InterFaceContorl/Dy_Exchange/.prettierrc create mode 100644 InterFaceContorl/Dy_Exchange/Dy_Exchange.sln create mode 100644 InterFaceContorl/Dy_Exchange/Dy_Exchange.sln.DotSettings create mode 100644 InterFaceContorl/Dy_Exchange/NuGet.Config create mode 100644 InterFaceContorl/Dy_Exchange/common.props create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterAuditedEntityBaseDto.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterCreateUpdateBaseDto.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Condition.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterAction.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterLogic.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Filter.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/FilterExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/ISfsRequest.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/IZbxBase.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/SfsRequestInputBase.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/AllTableColumnTypeDto.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/ColumnType.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/CreateUpdateExportCustomUserSettingDto.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingDto.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingGetListInput.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingAppService.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_Exchange.Application.Contracts.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeApplicationContractsModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeDtoExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissionDefinitionProvider.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/CreateUpdateDataExchangeInterfaceConfigDto.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/DataExchangeInterfaceConfigDto.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/IDataExchangeInterfaceConfigAppService.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ExpressionExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectExpressionExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectMapperExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/StringExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/ZbxBase.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingAppService.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_Exchange.Application.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeAppService.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationAutoMapperProfile.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_Exchange.AuthServer.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeAuthServerModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeBrandingProvider.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/_ViewImports.cshtml create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Program.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Properties/launchSettings.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/abp.resourcemapping.js create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.Development.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.secrets.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package-lock.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/web.config create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/global-styles.css create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/images/logo/leptonx/logo-dark.png create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/images/logo/leptonx/logo-light-thumbnail.png create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/images/logo/leptonx/logo-light.png create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/DbMigratorHostedService.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_Exchange.DbMigrator.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_ExchangeDbMigratorModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Program.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.secrets.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_Exchange.Domain.Shared.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainErrorCodes.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainSharedModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeGlobalFeatureConfigurator.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeModuleExtensionConfigurator.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Enums/Enum_ExportCustomUserSetting.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ar.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/cs.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/de.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en-GB.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/es.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fi.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fr.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hi.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hr.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hu.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/is.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/it.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/nl.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pl-PL.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pt-BR.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ro-RO.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ru.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sk.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sl.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/tr.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/vi.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hans.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hant.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_ExchangeResource.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSetting.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingRepository.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/Dy_ExchangeDbMigrationService.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/IDy_ExchangeDbSchemaMigrator.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/NullDy_ExchangeDbSchemaMigrator.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_Exchange.Domain.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeConsts.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeDomainModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/OpenIddict/OpenIddictDataSeedContributor.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettingDefinitionProvider.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettings.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedIncomingToWm/ArchivedIncomingToWm.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedOutgoingToExternal/ArchivedOutgoingToExternal.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedIncomingFromExternal/DataExchangeArchivedIncomingFromExternal.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedOutgoingFromWm/DataExchangeArchivedOutgoingFromWm.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeIncomingFromExternal/DataExchangeIncomingFromExternal.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeInterfaceConfig/DataExchangeInterfaceConfig.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeMessageReceive/DataExchangeMessageReceive.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeOutgoingFromWm/DataExchangeOutgoingFromWm.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IDataExchangeInterfaceConfigRepository.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IncomingToWm/IncomingToWm.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/OutgoingToExternal/OutgoingToExternal.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingEfCoreQuerableExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingRepository.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Dy_Exchange.EntityFrameworkCore.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContext.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContextFactory.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEfCoreEntityExtensionMappings.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreDy_ExchangeDbSchemaMigrator.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.Designer.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/Dy_ExchangeDbContextModelSnapshot.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigEfCoreQuerableExtensions.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigRepository.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_Exchange.HttpApi.Client.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_ExchangeHttpApiClientModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Controllers/HomeController.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_Exchange.HttpApi.Host.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_ExchangeHttpApiHostModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Program.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Properties/launchSettings.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.Development.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.secrets.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/web.config create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Controllers/Dy_ExchangeController.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_Exchange.HttpApi.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_ExchangeHttpApiModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Models/Test/TestModel.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/Default.cshtml create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/LoginLinkViewComponent.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/_ViewImports.cshtml create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Controllers/AccountController.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_Exchange.Web.csproj create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeBrandingProvider.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebAutoMapperProfile.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenuContributor.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenus.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeToolbarContributor.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Dy_ExchangePageModel.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.css create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.js create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/_ViewImports.cshtml create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Program.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/launchSettings.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Views/_ViewImports.cshtml create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/abp.resourcemapping.js create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.Development.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.secrets.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package-lock.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package.json create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/web.config create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/global-styles.css create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/images/logo/leptonx/logo-dark.png create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/images/logo/leptonx/logo-light-thumbnail.png create mode 100644 InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/images/logo/leptonx/logo-light.png create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_Exchange.Application.Tests.csproj create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestBase.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Samples/SampleAppServiceTests.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_Exchange.Domain.Tests.csproj create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestBase.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Samples/SampleDomainTests.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/Dy_Exchange.EntityFrameworkCore.Tests.csproj create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestBase.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_Exchange.HttpApi.Client.ConsoleTestApp.csproj create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_ExchangeConsoleApiClientModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Program.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.json create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_Exchange.TestBase.csproj create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBase.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBaseModule.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestDataSeedContributor.cs create mode 100644 InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Security/FakeCurrentPrincipalAccessor.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitattributes create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitignore create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.prettierrc create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/NuGet.Config create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln.DotSettings create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/common.props create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterApplicationContractsModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterDtoExtensions.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissionDefinitionProvider.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissions.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/WinIn.FasterZ.AuthSiteCenter.Application.Contracts.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterAppService.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationAutoMapperProfile.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/AuthenticationFeatures.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/IAuthenticateResultFeature.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionChecker.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionGrantCacheItem.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStore.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStoreAppService.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthAppBuilderExtensions.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthenticationMiddleware.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZRolePermissionValueProvider.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/WinIn.FasterZ.AuthSiteCenter.Application.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/AuthSiteCenterDbMigratorModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/DbMigratorHostedService.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/Program.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/WinIn.FasterZ.AuthSiteCenter.DbMigrator.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.secrets.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainErrorCodes.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainSharedModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterGlobalFeatureConfigurator.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterModuleExtensionConfigurator.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ar.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/cs.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/de.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en-GB.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/es.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fi.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fr.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hi.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hr.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hu.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/is.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/it.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/nl.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pl-PL.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pt-BR.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ro-RO.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ru.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sk.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sl.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/tr.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/vi.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hans.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hant.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenterResource.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/WinIn.FasterZ.AuthSiteCenter.Domain.Shared.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterConsts.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterDomainModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/AuthSiteCenterDbMigrationService.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/IAuthSiteCenterDbSchemaMigrator.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/NullAuthSiteCenterDbSchemaMigrator.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/OpenIddict/OpenIddictDataSeedContributor.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettingDefinitionProvider.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettings.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/WinIn.FasterZ.AuthSiteCenter.Domain.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContext.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContextFactory.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEfCoreEntityExtensionMappings.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEntityFrameworkCoreModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreAuthSiteCenterDbSchemaMigrator.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.Designer.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/AuthSiteCenterDbContextModelSnapshot.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/AuthSiteCenterHttpApiClientModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/AuthSiteCenterHttpApiModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Controllers/AuthSiteCenterController.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Models/Test/TestModel.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/WinIn.FasterZ.AuthSiteCenter.HttpApi.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterAutoMapperProfile.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterBrandingProvider.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebAutoMapperProfile.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebModule.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Components/_ViewImports.cshtml create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Controllers/CustAccountController.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenuContributor.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenus.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/AuthSiteCenterPageModel.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.css create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.js create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/_ViewImports.cshtml create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Program.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/AssemblyInfo.cs create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/launchSettings.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Views/_ViewImports.cshtml create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/WinIn.FasterZ.AuthSiteCenter.Web.csproj create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/abp.resourcemapping.js create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.Development.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.secrets.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package-lock.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/serilogsettings.json create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/web.config create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/global-styles.css create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/images/logo/leptonx/logo-dark.png create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/images/logo/leptonx/logo-light-thumbnail.png create mode 100644 InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/images/logo/leptonx/logo-light.png diff --git a/InterFaceContorl/Dy_Exchange/.gitattributes b/InterFaceContorl/Dy_Exchange/.gitattributes new file mode 100644 index 000000000..c941e5266 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/.gitattributes @@ -0,0 +1 @@ +**/wwwroot/libs/** linguist-vendored diff --git a/InterFaceContorl/Dy_Exchange/.gitignore b/InterFaceContorl/Dy_Exchange/.gitignore new file mode 100644 index 000000000..e1330ceca --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/.gitignore @@ -0,0 +1,265 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# Dy_Exchange +src/Dy_Exchange.Web/Logs/* +src/Dy_Exchange.Web/Logs/* +src/Dy_Exchange.AuthServer/Logs/* +src/Dy_Exchange.HttpApi.Host/Logs/* +src/Dy_Exchange.HttpApi.HostWithIds/Logs/* +src/Dy_Exchange.DbMigrator/Logs/* +src/Dy_Exchange.Blazor.Server/Logs/* +src/Dy_Exchange.Blazor.Server.Tiered/Logs/* + +# Use abp install-libs to restore. +**/wwwroot/libs/* diff --git a/InterFaceContorl/Dy_Exchange/.prettierrc b/InterFaceContorl/Dy_Exchange/.prettierrc new file mode 100644 index 000000000..56af76bd9 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "useTabs": false, + "tabWidth": 4 +} diff --git a/InterFaceContorl/Dy_Exchange/Dy_Exchange.sln b/InterFaceContorl/Dy_Exchange/Dy_Exchange.sln new file mode 100644 index 000000000..227b2a0d9 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/Dy_Exchange.sln @@ -0,0 +1,102 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35013.160 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.Domain", "src\Dy_Exchange.Domain\Dy_Exchange.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.Application", "src\Dy_Exchange.Application\Dy_Exchange.Application.csproj", "{1A94A50E-06DC-43C1-80B5-B662820EC3EB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.EntityFrameworkCore", "src\Dy_Exchange.EntityFrameworkCore\Dy_Exchange.EntityFrameworkCore.csproj", "{C956DD76-69C8-4A9C-83EA-D17DF83340FD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA9AC87F-097E-4F15-8393-4BC07735A5B0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.Domain.Shared", "src\Dy_Exchange.Domain.Shared\Dy_Exchange.Domain.Shared.csproj", "{42F719ED-8413-4895-B5B4-5AB56079BC66}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.Application.Contracts", "src\Dy_Exchange.Application.Contracts\Dy_Exchange.Application.Contracts.csproj", "{520659C8-C734-4298-A3DA-B539DB9DFC0B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.HttpApi", "src\Dy_Exchange.HttpApi\Dy_Exchange.HttpApi.csproj", "{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.HttpApi.Client", "src\Dy_Exchange.HttpApi.Client\Dy_Exchange.HttpApi.Client.csproj", "{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.Web", "src\Dy_Exchange.Web\Dy_Exchange.Web.csproj", "{6FE54035-9C11-4702-A5E2-D16F23101468}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.AuthServer", "src\Dy_Exchange.AuthServer\Dy_Exchange.AuthServer.csproj", "{073C361E-B8F4-49F5-93CC-72A3FF49C026}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.HttpApi.Host", "src\Dy_Exchange.HttpApi.Host\Dy_Exchange.HttpApi.Host.csproj", "{E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.DbMigrator", "src\Dy_Exchange.DbMigrator\Dy_Exchange.DbMigrator.csproj", "{AA94D832-1CCC-4715-95A9-A483F23A1A5D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{A17E14E2-9727-4AD8-865B-6355732A7960}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.Build.0 = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.Build.0 = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.Build.0 = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.Build.0 = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.Build.0 = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.Build.0 = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.Build.0 = Release|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6FE54035-9C11-4702-A5E2-D16F23101468}.Release|Any CPU.Build.0 = Release|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Debug|Any CPU.Build.0 = Debug|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Release|Any CPU.ActiveCfg = Release|Any CPU + {073C361E-B8F4-49F5-93CC-72A3FF49C026}.Release|Any CPU.Build.0 = Release|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C}.Release|Any CPU.Build.0 = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {1A94A50E-06DC-43C1-80B5-B662820EC3EB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {C956DD76-69C8-4A9C-83EA-D17DF83340FD} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {42F719ED-8413-4895-B5B4-5AB56079BC66} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {520659C8-C734-4298-A3DA-B539DB9DFC0B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {6FE54035-9C11-4702-A5E2-D16F23101468} = {A17E14E2-9727-4AD8-865B-6355732A7960} + {073C361E-B8F4-49F5-93CC-72A3FF49C026} = {A17E14E2-9727-4AD8-865B-6355732A7960} + {E6D5BF0E-DE92-4D82-A352-EF04B37CB11C} = {A17E14E2-9727-4AD8-865B-6355732A7960} + {AA94D832-1CCC-4715-95A9-A483F23A1A5D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} + EndGlobalSection +EndGlobal diff --git a/InterFaceContorl/Dy_Exchange/Dy_Exchange.sln.DotSettings b/InterFaceContorl/Dy_Exchange/Dy_Exchange.sln.DotSettings new file mode 100644 index 000000000..cb0b2c919 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/Dy_Exchange.sln.DotSettings @@ -0,0 +1,23 @@ + + True + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + Required + Required + Required + Required + False + True + False + False + True + False + False + SQL + \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/NuGet.Config b/InterFaceContorl/Dy_Exchange/NuGet.Config new file mode 100644 index 000000000..bdc451971 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/NuGet.Config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/common.props b/InterFaceContorl/Dy_Exchange/common.props new file mode 100644 index 000000000..7e89c3a06 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/common.props @@ -0,0 +1,19 @@ + + + latest + 1.0.0 + $(NoWarn);CS1591 + app + + + + + $(NoWarn);0436 + + + + + + + + \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterAuditedEntityBaseDto.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterAuditedEntityBaseDto.cs new file mode 100644 index 000000000..2547a5c77 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterAuditedEntityBaseDto.cs @@ -0,0 +1,10 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace WinIn.FasterZ.Inventory.AppBase.FasterBaseDto; + +[Serializable] +public class FasterAuditedEntityBaseDto : AuditedEntityDto +{ + public string ConcurrencyStamp { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterCreateUpdateBaseDto.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterCreateUpdateBaseDto.cs new file mode 100644 index 000000000..f1efaf4f3 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/FasterBaseDto/FasterCreateUpdateBaseDto.cs @@ -0,0 +1,10 @@ +using System; + +namespace WinIn.FasterZ.Inventory.AppBase.FasterBaseDto; + +public class FasterCreateUpdateBaseDto +{ + public Guid Id { get; set; } + + public string ConcurrencyStamp { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Condition.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Condition.cs new file mode 100644 index 000000000..8bee98051 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Condition.cs @@ -0,0 +1,8 @@ +using System.Collections.Generic; + +namespace WinIn.FasterZ.Inventory.AppBase.Filters; + +public class Condition +{ + public List Filters { get; set; } = new List(); +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterAction.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterAction.cs new file mode 100644 index 000000000..16d289267 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterAction.cs @@ -0,0 +1,62 @@ +using System.ComponentModel; + +namespace WinIn.FasterZ.Inventory.AppBase.Filters; + +/// +/// 过滤æ¡ä»¶ +/// +public enum EnumFilterAction +{ + /// + /// equal + /// + [Description("等于")] Equal = 0, + + /// + /// Not equal + /// + [Description("ä¸ç­‰äºŽ")] NotEqual = 1, + + /// + /// Bigger + /// + [Description("大于")] BiggerThan = 2, + + /// + /// Smaller + /// + [Description("å°äºŽ")] SmallThan = 3, + + /// + /// Bigger or equal + /// + [Description("大于等于")] BiggerThanOrEqual = 4, + + /// + /// Small or equal + /// + [Description("å°äºŽç­‰äºŽ")] SmallThanOrEqual = 5, + + /// + /// Like + /// + [Description("类似于")] Like = 6, + + /// + /// Not like + /// + [Description("ä¸ç±»ä¼¼äºŽ")] NotLike = 7, + + /// + /// Contained in + /// List items = new List(); + /// string value = JsonSerializer.Serialize(items);//转æˆJson字符串 + /// FilterCondition filterCondition = new FilterCondition() { Column = "Name", Value = value, Action = EnumFilterAction.In, Logic = EnumFilterLogic.And }; + /// + [Description("包å«äºŽ")] In = 8, + + /// + /// Not contained in + /// + [Description("ä¸åŒ…å«äºŽ")] NotIn = 9, +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterLogic.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterLogic.cs new file mode 100644 index 000000000..0ab46180b --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/EnumFilterLogic.cs @@ -0,0 +1,17 @@ +namespace WinIn.FasterZ.Inventory.AppBase.Filters; + +/// +/// 过滤逻辑 +/// +public enum EnumFilterLogic +{ + /// + /// 与 + /// + And = 0, + + /// + /// 或 + /// + Or = 1 +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Filter.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Filter.cs new file mode 100644 index 000000000..e60ff4cb4 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/Filter.cs @@ -0,0 +1,40 @@ +namespace WinIn.FasterZ.Inventory.AppBase.Filters; + +public class Filter +{ + public Filter() + { + Logic = "And"; + } + + public Filter(string column, string value, + string action = "==", + string logic = "And") + { + Column = column; + Action = action; + Value = value; + Logic = logic; + } + + /// + /// 过滤æ¡ä»¶ä¹‹é—´çš„逻辑关系:ANDå’ŒOR + /// + public string? Logic { get; set; } = "And"; + + /// + /// 过滤æ¡ä»¶ä¸­ä½¿ç”¨çš„æ•°æ®åˆ— + /// + public string? Column { get; set; } + + /// + /// 过滤æ¡ä»¶ä¸­çš„æ“ä½œ:==,!=,>,<,>=,<=,In,NotIn,Like,NotLike + /// Equalã€NotEqualã€BiggerThanã€SmallThanã€BiggerThanOrEqualã€SmallThanOrEqualã€Inã€NotIn + /// + public string? Action { get; set; } = "=="; + + /// + /// 过滤æ¡ä»¶ä¸­çš„æ“ä½œçš„å€¼ + /// + public string? Value { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/FilterExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/FilterExtensions.cs new file mode 100644 index 000000000..064e62a05 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/Filters/FilterExtensions.cs @@ -0,0 +1,370 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Linq.Expressions; +using System.Text.Json; +using Volo.Abp; + +namespace WinIn.FasterZ.Inventory.AppBase.Filters; + +public static class FilterExtensions +{ + public static Expression> ToLambda(this string jsonFilter) + { + if (string.IsNullOrWhiteSpace(jsonFilter)) + { + return p => true; + } + + var filterConditions = JsonSerializer.Deserialize>(jsonFilter); + return filterConditions.ToLambda(); + } + + public static Expression> ToLambda(this Filter filter) + { + var filterConditions = new List { filter }; + return filterConditions.ToLambda(); + } + + public static Expression> ToLambda(this List filterConditionList) + { + Expression> condition = null; + try + { + if (!filterConditionList.Any()) + { + //åˆ›å»ºé»˜è®¤è¡¨è¾¾å¼ + return p => true; + } + + foreach (var filterCondition in filterConditionList) + { + var tempCondition = CreateLambda(filterCondition); + if (condition == null) + { + condition = tempCondition; + } + else + { + condition = filterCondition.Logic switch + { + "And" => condition.And(tempCondition), + "Or" => condition.Or(tempCondition), + _ => condition + }; + } + } + } + catch (Exception ex) + { + throw new Exception($"获å–筛选æ¡ä»¶å¼‚常:{ex.Message}"); + } + + return condition; + } + + private static Expression> CreateLambda(Filter filter) + { + Expression> expression = p => false; + try + { + var parameter = Expression.Parameter(typeof(T), "p"); //åˆ›å»ºå‚æ•°p + var member = Expression.PropertyOrField(parameter, filter.Column); //创建表达å¼ä¸­çš„属性或字段 + + ConstantExpression constant = null; + //var propertyType = member.Type; //å–属性类型,常é‡constantæŒ‰æ­¤ç±»åž‹è¿›è¡Œè½¬æ¢ + //constant = Expression.Constant(filterCondition.Value);//创建常数 + + if (filter.Action != "In" && filter.Action != "NotIn") + { + constant = CreateConstantExpression(member.Type, filter.Value); + } + + switch (filter.Action.ToLower()) + { + case "==": + expression = Expression.Lambda>(Expression.Equal(member, constant), parameter); + break; + + case "!=": + expression = Expression.Lambda>(Expression.NotEqual(member, constant), parameter); + break; + + case ">": + expression = Expression.Lambda>(Expression.GreaterThan(member, constant), parameter); + break; + + case "<": + expression = Expression.Lambda>(Expression.LessThan(member, constant), parameter); + break; + + case ">=": + expression = + Expression.Lambda>(Expression.GreaterThanOrEqual(member, constant), parameter); + break; + + case "<=": + expression = + Expression.Lambda>(Expression.LessThanOrEqual(member, constant), parameter); + break; + + case "like": + expression = GetExpressionLikeMethod("Contains", filter); + break; + + case "notlike": + expression = GetExpressionNotLikeMethod("Contains", filter); + break; + + case "in": + expression = GetExpressionInMethod("Contains", member.Type, filter); + break; + + case "notin": + expression = GetExpressionNotInMethod("Contains", member.Type, filter); + break; + } + } + catch (Exception ex) + { + throw new UserFriendlyException(ex.Message); + } + + return expression; + } + + /// + /// + /// + /// + /// + private static ConstantExpression CreateConstantExpression(Type propertyType, string value) + { + ConstantExpression constant = null; + try + { + if (propertyType.IsGenericType && + propertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + + var objValue = Convert.ChangeType(ChangeTypeReturnValue(value, propertyType.GetGenericArguments()[0]), + propertyType.GetGenericArguments()[0], + CultureInfo.InvariantCulture); + + constant = Expression.Constant(objValue, propertyType); + } + else if (propertyType.IsEnum) + { + var enumValue = (Enum)Enum.Parse(propertyType, value, true); + constant = Expression.Constant(enumValue, propertyType); + } + else + { + constant = propertyType.Name switch + { + "Guid" => Expression.Constant(Guid.Parse(value)), + _ => Expression.Constant(Convert.ChangeType(value, propertyType, CultureInfo.InvariantCulture)) + }; + } + } + catch (Exception ex) + { + throw new Exception($"获å–ConstantExpression异常:{ex.Message}"); + } + + return constant; + } + + private static Expression> GetExpressionLikeMethod(string methodName, Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + // MethodCallExpression methodExpression = GetMethodExpression(methodName, filterCondition.Column, filterCondition.Value, parameterExpression); + var methodExpression = GetMethodExpression(methodName, filter.Column, filter.Value, + parameterExpression); + return Expression.Lambda>(methodExpression, parameterExpression); + } + + private static Expression> GetExpressionNotLikeMethod(string methodName, Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + var methodExpression = GetMethodExpression(methodName, filter.Column, filter.Value, + parameterExpression); + var notMethodExpression = Expression.Not(methodExpression); + return Expression.Lambda>(notMethodExpression, parameterExpression); + } + + /// + /// 生æˆguidList.Contains(p=>p.GUId); + /// 除String类型,其他类型涉åŠåˆ°ç±»åž‹è½¬æ¢.如GUID + /// + /// + /// Contains + /// PropertyType/typeof(GUId) + /// PropertyName/PropertyValue + /// + private static Expression> GetExpressionInMethod(string methodName, Type propertyType, + Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + var lstType = typeof(List<>).MakeGenericType(propertyType); + + //è½¬æ¢æžšä¸¾ + //if (propertyType.IsEnum) + //{ + // var valueArrayStrings = JsonSerializer.Deserialize>(filter.Value); + // List newValues = new List(); + + // var enumValues = propertyType.GetEnumValues(); + + // foreach (var valueArray in valueArrayStrings) + // { + // foreach (var enumValue in enumValues) + // { + // if (enumValue.ToString() == valueArray) + // { + // newValues.Add(enumValue); + // break; + // } + // } + // } + // var newValue = JsonSerializer.Serialize(newValues); + // filter.Value = newValue; + //} + + var propertyValue = JsonSerializer.Deserialize($"{filter.Value}", lstType); + if (propertyValue != null) + { + var methodExpression = GetListMethodExpression(methodName, propertyType, filter.Column, propertyValue, + parameterExpression); + var expression = Expression.Lambda>(methodExpression, parameterExpression); + return expression; + } + + return p => false; + } + + private static Expression> GetExpressionNotInMethod(string methodName, Type propertyType, + Filter filter) + { + var parameterExpression = Expression.Parameter(typeof(T), "p"); + var lstType = typeof(List<>).MakeGenericType(propertyType); + var propertyValue = JsonSerializer.Deserialize(filter.Value, lstType); + if (propertyValue != null) + { + var methodExpression = GetListMethodExpression(methodName, propertyType, filter.Column, propertyValue, + parameterExpression); + var notMethodExpression = Expression.Not(methodExpression); + return Expression.Lambda>(notMethodExpression, parameterExpression); + } + + return p => false; + } + + private static MethodCallExpression GetListMethodExpression(string methodName, Type propertyType, + string propertyName, object propertyValue, ParameterExpression parameterExpression) + { + var propertyExpression = Expression.Property(parameterExpression, propertyName); //p.GUID + var type = typeof(List<>).MakeGenericType(propertyType); + var method = type.GetMethod(methodName); //èŽ·å– List.Contains() + var someValue = Expression.Constant(propertyValue); //Value + return Expression.Call(someValue, method, propertyExpression); + } + + /// + /// 生æˆç±»ä¼¼äºŽp=>p.Code.Contains("xxx");çš„lambdaè¡¨è¾¾å¼ + /// parameterExpression标识p,propertyName表示values,propertyValue表示"Code",methodName表示Contains + /// 仅处ç†p的属性类型为stringè¿™ç§æƒ…况 + /// + /// + /// + /// + /// + /// + private static MethodCallExpression GetMethodExpression(string methodName, string propertyName, + string propertyValue, ParameterExpression parameterExpression) + { + var propertyExpression = Expression.Property(parameterExpression, propertyName); + var method = typeof(string).GetMethod(methodName, new[] { typeof(string) }); + var someValue = Expression.Constant(propertyValue, typeof(string)); + return Expression.Call(propertyExpression, method, someValue); + } + + /// + /// 默认Trueæ¡ä»¶ + /// + /// + /// + public static Expression> True() + { + return f => true; + } + + /// + /// 默认Falseæ¡ä»¶ + /// + /// + /// + public static Expression> False() + { + return f => false; + } + + /// + /// 拼接 OR æ¡ä»¶ + /// + /// + /// + /// + /// + private static Expression> Or(this Expression> exp, + Expression> condition) + { + var inv = Expression.Invoke(condition, exp.Parameters); + return Expression.Lambda>(Expression.Or(exp.Body, inv), exp.Parameters); + } + + /// + /// 拼接Andæ¡ä»¶ + /// + /// + /// + /// + /// + private static Expression> And(this Expression> exp, + Expression> condition) + { + var inv = Expression.Invoke(condition, exp.Parameters); + return Expression.Lambda>(Expression.And(exp.Body, inv), exp.Parameters); + } + + /// + /// 转æ¢ä¼ å…¥çš„值,并将正确的值传出(解决 enum,guid) + /// + /// + /// + /// + public static object ChangeTypeReturnValue(object value, Type type) + { + if (value == null && type.IsGenericType) return Activator.CreateInstance(type); + if (value == null) return null; + if (type == value.GetType()) return value; + if (type.IsEnum) + { + if (value is string) + return Enum.Parse(type, value as string); + else + return Enum.ToObject(type, value); + } + if (!type.IsInterface && type.IsGenericType) + { + Type innerType = type.GetGenericArguments()[0]; + object innerValue = ChangeTypeReturnValue(value, innerType); + return Activator.CreateInstance(type, new object[] { innerValue }); + } + if (value is string && type == typeof(Guid)) return new Guid(value as string); + if (value is string && type == typeof(Version)) return new Version(value as string); + if (!(value is IConvertible)) return value; + return Convert.ChangeType(value, type); + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/ISfsRequest.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/ISfsRequest.cs new file mode 100644 index 000000000..1954ade0f --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/ISfsRequest.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Application.Dtos; +using WinIn.FasterZ.Inventory.AppBase.Filters; + +namespace WinIn.FasterZ.Inventory.AppBase; + +public interface ISfsRequest : IPagedAndSortedResultRequest +{ + /// + /// æ¡ä»¶ + /// + public Condition Condition { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/IZbxBase.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/IZbxBase.cs new file mode 100644 index 000000000..0cc8aae07 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/IZbxBase.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace WinIn.FasterZ.Inventory.AppBase; + +public interface + IZbxBase : + ICrudAppService +{ + Task> GetPageListByFilterAsync(SfsRequestInputBase sfsRequestInputBase, + bool includeDetails = false, CancellationToken cancellationToken = default); + + /// + /// ã€åŸºç¡€ã€‘-ã€å¯¼å‡ºExcelã€‘ã€æœ‰ç­›é€‰æ¡ä»¶ã€‘ + /// + /// 查询æ¡ä»¶ + /// 是å¦å†—ä½™ä¸»è¡¨æ•°æ® + /// 是å¦å¯¼å‡ºå­è¡¨ + /// 用户ID + /// + Task ExportToExcelAsync(SfsRequestInputBase sfsRequestInputBase, bool isRedundance, Guid userId, + bool isDetailExport = true); + + /// + /// ã€åŸºç¡€ã€‘-ã€åˆ†é¡µæŸ¥è¯¢ã€‘ã€æœ‰ç­›é€‰æ¡ä»¶ã€‘ + /// + /// + /// + /// + /// + Task> GetAllListAsync(); + + /// + /// ã€åŸºç¡€ã€‘-ã€æ‰¹é‡ã€‘-ã€æ–°å¢žã€‘ + /// + /// + /// + Task> CreateManyAsync(List inputList); + + /// + /// ã€åŸºç¡€ã€‘-ã€æ‰¹é‡ã€‘-ã€åˆ é™¤ã€‘ + /// + /// + /// + Task DeleteAsync(IEnumerable keyList); + + /// + /// ã€åŸºç¡€ã€‘-ã€èŽ·å–æ•°æ®ã€‘ + /// + /// + Task GetCacheByIdAsync(TPagedAndSortedResultRequestDto id); +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/SfsRequestInputBase.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/SfsRequestInputBase.cs new file mode 100644 index 000000000..378855425 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/SfsRequestInputBase.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Application.Dtos; +using WinIn.FasterZ.Inventory.AppBase.Filters; + +namespace WinIn.FasterZ.Inventory.AppBase; + +public class SfsRequestInputBase : PagedAndSortedResultRequestDto, ISfsRequest +{ + /// + /// æ¡ä»¶ + /// + public Condition Condition { get; set; } = new(); +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/AllTableColumnTypeDto.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/AllTableColumnTypeDto.cs new file mode 100644 index 000000000..466906fc2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/AllTableColumnTypeDto.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace WinIn.FasterZ.Inventory.AppBase.TableColumnTypeDto +{ + public class AllTableColumnTypeDto + { + /// + /// 列属性类别 + /// + public List ColumnsTypes { get; set; } + + /// + /// C R U S G + /// + public string DtoType { get; set; } + + /// + /// Dtoåç§° + /// + public string? DtoName { get; set; } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/ColumnType.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/ColumnType.cs new file mode 100644 index 000000000..22d888b10 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBase/TableColumnTypeDto/ColumnType.cs @@ -0,0 +1,31 @@ +using System.ComponentModel.DataAnnotations; + +namespace WinIn.FasterZ.Inventory.AppBase.TableColumnTypeDto +{ + public class ColumnType + { + /// + /// 列å + /// + [Display(Name = "列å")] + public string Z_ColumnName { get; set; } + + /// + /// åŽç«¯ç±»åž‹ + /// + [Display(Name = "åŽç«¯ç±»åž‹")] + public string Z_ColumnType { get; set; } + + /// + /// 基础类型 + /// + [Display(Name = "基础类型")] + public string Z_ColumnBaseType { get; set; } + + /// + /// æ˜¯å¦æ˜¯æžšä¸¾ + /// + [Display(Name = "æ˜¯å¦æ˜¯æžšä¸¾")] + public bool IsEnum { get; set; } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/CreateUpdateExportCustomUserSettingDto.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/CreateUpdateExportCustomUserSettingDto.cs new file mode 100644 index 000000000..0a59a3cc6 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/CreateUpdateExportCustomUserSettingDto.cs @@ -0,0 +1,33 @@ +using System; +using Dy_Exchange.Enums; + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting.Dtos; + +[Serializable] +public class CreateUpdateExportCustomUserSettingDto +{ + /// + /// 用户ID + /// + public Guid? ExportUserId { get; set; } + + /// + /// 用户姓å + /// + public string? ExportUserName { get; set; } + + /// + /// 列å + /// + public string? ExportColumnName { get; set; } + + /// + /// 表å + /// + public string? ExportTableName { get; set; } + + /// + /// 导出设置项 + /// + public Enum_ExportCustomUserSetting CustomUserSetting { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingDto.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingDto.cs new file mode 100644 index 000000000..c81ee54aa --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingDto.cs @@ -0,0 +1,38 @@ +using System; +using Dy_Exchange.Enums; +using Volo.Abp.Application.Dtos; + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting.Dtos +{ + /// + /// 用户个型导出é…ç½® + /// + [Serializable] + public class ExportCustomUserSettingDto : AuditedEntityDto + { + /// + /// 用户ID + /// + public Guid? ExportUserId { get; set; } + + /// + /// 用户姓å + /// + public string? ExportUserName { get; set; } + + /// + /// 列å + /// + public string? ExportColumnName { get; set; } + + /// + /// 表å + /// + public string? ExportTableName { get; set; } + + /// + /// 导出设置项 + /// + public Enum_ExportCustomUserSetting CustomUserSetting { get; set; } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingGetListInput.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingGetListInput.cs new file mode 100644 index 000000000..065e70620 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/Dtos/ExportCustomUserSettingGetListInput.cs @@ -0,0 +1,35 @@ +using System; +using Dy_Exchange.Enums; +using Volo.Abp.Application.Dtos; + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting.Dtos +{ + [Serializable] + public class ExportCustomUserSettingGetListInput : PagedAndSortedResultRequestDto + { + /// + /// 用户ID + /// + public Guid? ExportUserId { get; set; } + + /// + /// 用户姓å + /// + public string? ExportUserName { get; set; } + + /// + /// 列å + /// + public string? ExportColumnName { get; set; } + + /// + /// 表å + /// + public string? ExportTableName { get; set; } + + /// + /// 导出设置项 + /// + public Enum_ExportCustomUserSetting? CustomUserSetting { get; set; } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingAppService.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingAppService.cs new file mode 100644 index 000000000..894d7a9b1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingAppService.cs @@ -0,0 +1,24 @@ +using System; +using Volo.Abp.Application.Services; +using WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting.Dtos; + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting +{ + /// + /// 用户个型导出é…ç½® + /// + public interface IExportCustomUserSettingAppService : + ICrudAppService< + ExportCustomUserSettingDto, + Guid, + ExportCustomUserSettingGetListInput, + CreateUpdateExportCustomUserSettingDto, + CreateUpdateExportCustomUserSettingDto> + { + ///// + ///// æ ¹æ®ç”¨æˆ·å’Œè¡¨å获å–个性化导出 + ///// + ///// + //Task> GetByUserIdAndExportTableNameAsync(Guid userId, string exportTableName); + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_Exchange.Application.Contracts.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_Exchange.Application.Contracts.csproj new file mode 100644 index 000000000..b182ec23b --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_Exchange.Application.Contracts.csproj @@ -0,0 +1,26 @@ + + + + + + netstandard2.0;netstandard2.1;net7.0 + enable + Dy_Exchange + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeApplicationContractsModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeApplicationContractsModule.cs new file mode 100644 index 000000000..4e0c69ef7 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeApplicationContractsModule.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeDomainSharedModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpFeatureManagementApplicationContractsModule), + typeof(AbpIdentityApplicationContractsModule), + typeof(AbpPermissionManagementApplicationContractsModule), + typeof(AbpSettingManagementApplicationContractsModule), + typeof(AbpTenantManagementApplicationContractsModule), + typeof(AbpObjectExtendingModule) +)] +public class Dy_ExchangeApplicationContractsModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + Dy_ExchangeDtoExtensions.Configure(); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeDtoExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeDtoExtensions.cs new file mode 100644 index 000000000..19d4b0814 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Dy_ExchangeDtoExtensions.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace Dy_Exchange; + +public static class Dy_ExchangeDtoExtensions +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + /* You can add extension properties to DTOs + * defined in the depended modules. + * + * Example: + * + * ObjectExtensionManager.Instance + * .AddOrUpdateProperty("Title"); + * + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Object-Extensions + */ + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissionDefinitionProvider.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissionDefinitionProvider.cs new file mode 100644 index 000000000..dc2d00dcc --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissionDefinitionProvider.cs @@ -0,0 +1,25 @@ +using Dy_Exchange.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace Dy_Exchange.Permissions; + +public class Dy_ExchangePermissionDefinitionProvider : PermissionDefinitionProvider +{ + public override void Define(IPermissionDefinitionContext context) + { + var myGroup = context.AddGroup(Dy_ExchangePermissions.GroupName); + //Define your own permissions here. Example: + //myGroup.AddPermission(Dy_ExchangePermissions.MyPermission1, L("Permission:MyPermission1")); + + var dataExchangeInterfaceConfigPermission = myGroup.AddPermission(Dy_ExchangePermissions.DataExchangeInterfaceConfig.Default, L("Permission:DataExchangeInterfaceConfig")); + dataExchangeInterfaceConfigPermission.AddChild(Dy_ExchangePermissions.DataExchangeInterfaceConfig.Create, L("Permission:Create")); + dataExchangeInterfaceConfigPermission.AddChild(Dy_ExchangePermissions.DataExchangeInterfaceConfig.Update, L("Permission:Update")); + dataExchangeInterfaceConfigPermission.AddChild(Dy_ExchangePermissions.DataExchangeInterfaceConfig.Delete, L("Permission:Delete")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissions.cs new file mode 100644 index 000000000..2e756935e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Permissions/Dy_ExchangePermissions.cs @@ -0,0 +1,29 @@ +namespace Dy_Exchange.Permissions; + +public static class Dy_ExchangePermissions +{ + public const string GroupName = "Dy_Exchange"; + + //Add your own permission names. Example: + //public const string MyPermission1 = GroupName + ".MyPermission1"; + /// + /// + /// + public class ExportCustomUserSetting + { + public const string Default = GroupName + ".ExportCustomUserSetting"; + public const string Update = Default + ".Update"; + public const string Create = Default + ".Create"; + public const string Delete = Default + ".Delete"; + } + /// + /// + /// + public class DataExchangeInterfaceConfig + { + public const string Default = GroupName + ".DataExchangeInterfaceConfig"; + public const string Update = Default + ".Update"; + public const string Create = Default + ".Create"; + public const string Delete = Default + ".Delete"; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/CreateUpdateDataExchangeInterfaceConfigDto.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/CreateUpdateDataExchangeInterfaceConfigDto.cs new file mode 100644 index 000000000..e54a33b91 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/CreateUpdateDataExchangeInterfaceConfigDto.cs @@ -0,0 +1,39 @@ +using System; +using System.ComponentModel; +using WinIn.FasterZ.Inventory.AppBase.FasterBaseDto; + +namespace Dy_Exchange.Z_Business.Dtos; + +[Serializable] +public class CreateUpdateDataExchangeInterfaceConfigDto: FasterCreateUpdateBaseDto +{ + /// + /// + /// + [DisplayName("DataExchangeInterfaceConfigName")] + public string? Name { get; set; } + + /// + /// + /// + [DisplayName("DataExchangeInterfaceConfigCode")] + public string? Code { get; set; } + + /// + /// + /// + [DisplayName("DataExchangeInterfaceConfigActive")] + public bool Active { get; set; } + + /// + /// + /// + [DisplayName("DataExchangeInterfaceConfigLevel")] + public int Level { get; set; } + + /// + /// + /// + [DisplayName("DataExchangeInterfaceConfigRemark")] + public string? Remark { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/DataExchangeInterfaceConfigDto.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/DataExchangeInterfaceConfigDto.cs new file mode 100644 index 000000000..a93898285 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/Dtos/DataExchangeInterfaceConfigDto.cs @@ -0,0 +1,48 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace Dy_Exchange.Z_Business.Dtos; + +/// +/// +/// +[Serializable] +public class DataExchangeInterfaceConfigDto : AuditedEntityDto +{ + + /// + /// + /// + public string? Name { get; set; } + + /// + /// + /// + public string? Code { get; set; } + + /// + /// + /// + public bool Active { get; set; } + + /// + /// + /// + public int Level { get; set; } + + /// + /// + /// + public string? ExtraProperties { get; set; } + + /// + /// + /// + public string? ConcurrencyStamp { get; set; } + + + /// + /// + /// + public string? Remark { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/IDataExchangeInterfaceConfigAppService.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/IDataExchangeInterfaceConfigAppService.cs new file mode 100644 index 000000000..2ec7b0ba2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application.Contracts/Z_Business/IDataExchangeInterfaceConfigAppService.cs @@ -0,0 +1,21 @@ +using System; +using Dy_Exchange.Z_Business.Dtos; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; + +namespace Dy_Exchange.Z_Business; + + +/// +/// +/// +public interface IDataExchangeInterfaceConfigAppService : + ICrudAppService< + DataExchangeInterfaceConfigDto, + Guid, + PagedAndSortedResultRequestDto, + CreateUpdateDataExchangeInterfaceConfigDto, + CreateUpdateDataExchangeInterfaceConfigDto> +{ + +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ExpressionExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ExpressionExtensions.cs new file mode 100644 index 000000000..8c67177d2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ExpressionExtensions.cs @@ -0,0 +1,27 @@ +using System.Linq.Expressions; + +namespace WinIn.FasterZ.Inventory.AppBase.Extensions +{ + public static class ExpressionExtensions + { + public static string GetMemberName(Expression expression) + { + if (expression is MemberExpression member) + { + return member.Member.Name; + } + + if (expression is MethodCallExpression method) + { + return method.Method.Name; + } + + if (expression is UnaryExpression unary) + { + return GetMemberName(unary); + } + + return null; + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectExpressionExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectExpressionExtensions.cs new file mode 100644 index 000000000..59f973363 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectExpressionExtensions.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Linq.Expressions; +using System.Reflection; + +namespace WinIn.FasterZ.Inventory.AppBase.Extensions +{ + public static class ObjectExpressionExtensions + { + public static IQueryable WhereByKey(this IQueryable source, TModel model) + { + if (model == null) + { + return null; + } + + var modelType = model.GetType(); + var properties = modelType.GetProperties().Where(o => o.GetCustomAttribute() != null).ToList(); + if (properties.Any()) + { + foreach (var property in properties) + { + var propertyName = property.Name; + var propertyValue = property.GetValue(model, null); + source = source.Where($"{propertyName} == @0", propertyValue); + } + + return source; + } + + return null; + } + + public static List> GroupByKey(this IQueryable source) + { + var properties = typeof(T).GetProperties().Where(o => o.GetCustomAttribute() != null).ToList(); + var names = string.Join(",", properties.Select(o => o.Name)); + return source.AsQueryable().GroupBy($"new ({names})").ToDynamicList>(); + } + + public static Expression> GetExpressionByProperty(this Type type, string propertyName, + string propertyValue) + { + var o = Expression.Parameter(type, "p"); + var memberExpression = Expression.Property(o, propertyName); + var body = Expression.Call(typeof(string).GetMethod("Contains", new[] { typeof(string) }), memberExpression); + var predicate = Expression.Lambda>(body, o); + return predicate; + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectMapperExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectMapperExtensions.cs new file mode 100644 index 000000000..50c734f1e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/ObjectMapperExtensions.cs @@ -0,0 +1,119 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using Omu.ValueInjecter; +using Omu.ValueInjecter.Injections; +using Volo.Abp; + +namespace WinIn.FasterZ.Wms.AppBase.Extensions +{ + /// + /// 对象映射 + /// + public static class ObjectMapperExtensions + { + /// + /// 从模型更新实体 + /// + public static T FromObject(this T to, object from) + { + try + { + to.InjectFrom(from); + return to; + } + catch (Exception ex) + { + throw new UserFriendlyException($"{from.GetType().FullName}映射到${typeof(T).FullName}时失败:{ex.Message},{ex}"); + } + } + + /// + /// 从实体创建模型 + /// + /// + /// + /// + public static T ToObject(this object from) + { + try + { + if (typeof(T).IsGenericType && typeof(T).IsAssignableTo(typeof(IList)) && from is IList list) + { + var toListType = typeof(T); + var elementType = typeof(T).GetGenericArguments()[0]; + var toList = (IList)Activator.CreateInstance(typeof(T))!; + var fromList = list; + foreach (var item in fromList) + { + toList.Add(Activator.CreateInstance(elementType).InjectFrom(item)); + } + + return (T)toList; + } + + return (T)Activator.CreateInstance().InjectFrom(from); + } + catch (Exception ex) + { + throw new UserFriendlyException($"{from.GetType().FullName}映射到${typeof(T).FullName}时失败:{ex.Message},{ex}"); + } + } + + private class DeepInjection : LoopInjection + { + protected override bool MatchTypes(Type sourceType, Type targetType) + { + if (sourceType != typeof(string) && + targetType != typeof(string) && + sourceType.IsGenericType && + targetType.IsGenericType && + sourceType.IsAssignableTo(typeof(IEnumerable)) && + sourceType.IsAssignableTo(typeof(IEnumerable)) + ) + { + return true; + } + + return base.MatchTypes(sourceType, targetType); + } + + protected override void SetValue(object source, object target, PropertyInfo sp, PropertyInfo tp) + { + if (sp.PropertyType != typeof(string) && + sp.PropertyType != typeof(string) && + sp.PropertyType.IsAssignableTo(typeof(IList)) && + tp.PropertyType.IsAssignableTo(typeof(IList))) + { + var targetGenericType = tp.PropertyType.GetGenericArguments()[0]; + var listType = typeof(List<>).MakeGenericType(targetGenericType); + var addMethod = listType.GetMethod("Add"); + var list = Activator.CreateInstance(listType); + var sourceList = (IList)sp.GetValue(source); + foreach (var item in sourceList) + { + addMethod.Invoke(list, new[] { Activator.CreateInstance(targetGenericType).FromObject(item) }); + } + + tp.SetValue(target, list); + return; + } + + base.SetValue(source, target, sp, tp); + } + } + + private class DeepInjectionForUpdate : DeepInjection + { + protected override void SetValue(object source, object target, PropertyInfo sp, PropertyInfo tp) + { + //if (tp.GetCustomAttribute() != null) + //{ + // return; + //} + base.SetValue(source, target, sp, tp); + } + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/StringExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/StringExtensions.cs new file mode 100644 index 000000000..98baf50ec --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/Extensions/StringExtensions.cs @@ -0,0 +1,17 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace WinIn.FasterZ.Inventory.AppBase.Extensions +{ + public static class StringExtensions + { + public static string Md5(this string input) + { + using (var md5 = MD5.Create()) + { + return BitConverter.ToString(md5.ComputeHash(Encoding.ASCII.GetBytes(input))).Replace("-", ""); + } + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/ZbxBase.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/ZbxBase.cs new file mode 100644 index 000000000..f388bca6e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBase/ZbxBase.cs @@ -0,0 +1,899 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Linq.Dynamic.Core; +using System.Linq.Expressions; +using System.Threading; +using System.Threading.Tasks; +using AutoMapper; +using Dy_Exchange.Enums; +using Dy_Exchange.Localization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Caching.Distributed; +using Microsoft.Extensions.Localization; +using NPOI.SS.UserModel; +using NPOI.XSSF.UserModel; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using Volo.Abp.Caching; +using Volo.Abp.Domain.Entities; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.Domain.Repositories; +using WinIn.FasterZ.Inventory.AppBase; +using WinIn.FasterZ.Inventory.AppBase.Filters; +using WinIn.FasterZ.Inventory.AppBase.TableColumnTypeDto; +using WinIn.FasterZ.Wms.AppBase.Extensions; +using WinIn.FasterZ.Wms.AppBaseBusiness.ExportCustomUserSetting; + +#pragma warning disable CS8602 // Dereference of a possibly null reference. + +namespace WinIn.FasterZ.Wms.AppBase; + +[Route("Api/[controller]")] +public class ZbxBase : + CrudAppService, + IZbxBase + where TEntity : class, IEntity + where TEntityDto : IEntityDto +{ + #region 定义 + + /// + /// redis缓存时间 分钟 + /// + private const int CacheMinute = 30; + + private readonly IRepository _repository; + + private IMapper _mapper; + + private IStringLocalizer Localizer => + LazyServiceProvider.LazyGetRequiredService>(); + + private ExportCustomUserSettingAppService ExportCustomUserSettingAppService => + LazyServiceProvider.LazyGetRequiredService(); + + private IDistributedCache Cache => + LazyServiceProvider.LazyGetRequiredService>(); + + #endregion + + /// + /// 构造方法 + /// + /// + protected ZbxBase(IRepository repository) : base(repository) + { + _repository = repository; + } + + #region å…¬å¼€æŽ¥å£ + + #region å•体æ“作 + + /// + /// ã€åŸºç¡€ã€‘-ã€æ–°å¢žã€‘ + /// + /// + /// + [HttpPost("Base/Create")] + [Authorize] + public override async Task CreateAsync(TCreateInput input) + { + await CheckCreatePolicyAsync().ConfigureAwait(false); + + var entity = input!.ToObject(); + + //判断idæ˜¯å¦æ˜¯00000-0000 如果是则赋值 + var mainId = (Guid)entity.GetType().GetProperty("Id")?.GetValue(entity)!; + if (mainId == Guid.Empty) + { + mainId = Guid.NewGuid(); + entity.GetType().GetProperty("Id")?.SetValue(entity, mainId); + } + + #region 给所有字表的 Idå’ŒMasterId赋值 å¦åˆ™é»˜è®¤çš„会是000000-000-....çš„id æ’入时会报错 + + var propertyInfos = entity.GetType().GetProperties(); + foreach (var propertyInfo in propertyInfos) + { + //åˆ¤æ–­æ˜¯å¦æ˜¯Listé›†åˆ + if (propertyInfo.Name == "Details" + && propertyInfo.PropertyType.IsGenericType + && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(List<>)) + { + var listProperty = typeof(TEntity).GetProperty("Details"); + + // èŽ·å– List 的元素类型 + if (listProperty != null) + { + var listItemType = listProperty.PropertyType.GetGenericArguments()[0]; + + // 获å–元素类型的 ID 属性 + var detailIdProperty = listItemType.GetProperty("Id"); + var masterIdProperty = listItemType.GetProperty("MasterId"); + + if (detailIdProperty != null) + { + // èŽ·å– List 属性的值 + var list = (IList)listProperty.GetValue(entity); + + // é历 List 集åˆä¸­çš„æ¯ä¸ªå…ƒç´ ï¼Œç»™ ID 属性赋值 + if (list != null) + { + foreach (var item in list) + { + if ((Guid)detailIdProperty.GetValue(item)! == Guid.Empty) + { + detailIdProperty.SetValue(item, Guid.NewGuid()); + } + } + } + } + + if (masterIdProperty != null) + { + // èŽ·å– List 属性的值 + var list = (IList)listProperty.GetValue(entity); + + // é历 List 集åˆä¸­çš„æ¯ä¸ªå…ƒç´ ï¼Œç»™ ID 属性赋值 + if (list != null) + { + foreach (var item in list) + { + masterIdProperty.SetValue(item, mainId); + } + } + } + } + } + } + + #endregion + + TryToSetTenantId(entity); + await Repository.InsertAsync(entity, true).ConfigureAwait(false); + + return await MapToGetOutputDtoAsync(entity).ConfigureAwait(false); + } + + /// + /// ã€åŸºç¡€ã€‘-ã€åˆ é™¤ã€‘ + /// + /// + /// + [HttpDelete("Base/Delete")] + [Authorize] + public override async Task DeleteAsync(TKey id) + { + await CheckDeletePolicyAsync().ConfigureAwait(false); + + await _repository.DeleteAsync(id, true).ConfigureAwait(false); + } + + /// + /// ã€åŸºç¡€ã€‘-ã€ä¿®æ”¹ã€‘ + /// + /// + /// + /// + [HttpPut("Base/Update")] + [Authorize] + public override async Task UpdateAsync(TKey id, TUpdateInput input) + { + await CheckUpdatePolicyAsync().ConfigureAwait(true); + var entity = await GetEntityByIdAsync(id).ConfigureAwait(true); + + //当一æ¡åº“存的一部分被人修改了 æ•°æ®æ— æ³•æäº¤ 例如库存10个 修改了其中4个 这时ä¹è§‚é”就被修改了 会抛出异常 + if (entity.GetType().GetProperty("ConcurrencyStamp").GetValue(entity).ToString() != + input.GetType().GetProperty("ConcurrencyStamp").GetValue(input).ToString()) + { + throw new UserFriendlyException($"您æ“作的数æ®å·²ç»è¢«ä¿®æ”¹ï¼š\r\n" + + $"å·²ç»ç”±ã€{Newtonsoft.Json.JsonConvert.SerializeObject(entity)}】\r\n" + + $"å˜æ›´ä¸ºã€{Newtonsoft.Json.JsonConvert.SerializeObject(input)}】\r\n"); + } + + Type? inputDetailDtoType = null; + Type? entityDetailType = null; + var inputDetailDtoTypeFlag = false; //inputæ˜¯å¦æœ‰å­é›†åˆDetails + var entityDetailTypeFlag = false; //entityæ˜¯å¦æœ‰å­é›†åˆDetails + + var entityProperties = entity.GetType().GetProperties(); + var inputProperties = input.GetType().GetProperties(); + + //InputDtoçš„ + foreach (var propertyInfo in inputProperties) + { + if (propertyInfo.Name == "Details" + && propertyInfo.PropertyType.IsGenericType + && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(List<>)) + { + var listProperty = typeof(TUpdateInput).GetProperty("Details"); + if (listProperty != null) + { + inputDetailDtoType = listProperty.PropertyType.GetGenericArguments()[0]; + inputDetailDtoTypeFlag = true; + } + } + } + + if (inputDetailDtoTypeFlag) + { + //实体的 + foreach (var propertyInfo in entityProperties) + { + //åˆ¤æ–­æ˜¯å¦æ˜¯Listé›†åˆ + if (propertyInfo.Name == "Details" + && propertyInfo.PropertyType.IsGenericType + && propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(List<>)) + { + var listProperty = typeof(TEntity).GetProperty("Details"); + // èŽ·å– List 的元素类型 + if (listProperty != null) + { + entityDetailType = listProperty.PropertyType.GetGenericArguments()[0]; + entityDetailTypeFlag = true; + } + } + } + } + + if (inputDetailDtoTypeFlag && entityDetailTypeFlag) + { + var config = new MapperConfiguration(cfg => + { + // 动æ€åˆ›å»ºæ˜ å°„关系 + cfg.CreateMap(typeof(TEntityDto), typeof(TEntity)); + cfg.CreateMap(typeof(TUpdateInput), typeof(TEntity)); + cfg.CreateMap(inputDetailDtoType, entityDetailType); + }); + _mapper = new Mapper(config); + } + else + { + var config = new MapperConfiguration(cfg => + { + // 动æ€åˆ›å»ºæ˜ å°„关系 + //todo 这里先è¦åˆ¤æ–­IDæ˜¯å¦æ˜¯000000-000000 + cfg.CreateMap(typeof(TEntityDto), typeof(TEntity)); + cfg.CreateMap(typeof(TUpdateInput), typeof(TEntity)) + .ForMember("Id", opt => opt.Ignore()) + .ForMember("ConcurrencyStamp", opt => opt.Ignore()); + }); + _mapper = new Mapper(config); + } + + MapProperties(input, entity); + //entity.GetType().GetProperty("Id")?.SetValue(entity,id); + await ReMoveCaCheAsync(id).ConfigureAwait(false); + await _repository.UpdateAsync(entity, true).ConfigureAwait(true); + + + return await MapToGetOutputDtoAsync(entity).ConfigureAwait(false); + } + + #endregion + + #region æ‰¹é‡æ“作 + + /// + /// ã€åŸºç¡€ã€‘-ã€æ‰¹é‡ã€‘-ã€æ–°å¢žã€‘ + /// + /// + /// + [HttpPost("Base/Create-Many")] + [Authorize] + public async Task> CreateManyAsync(List inputList) + { + var dtoList = new List(); + + foreach (var input in inputList) + { + dtoList.Add(await CreateAsync(input).ConfigureAwait(false)); + } + + return dtoList; + } + + /// + /// ã€åŸºç¡€ã€‘-ã€æ‰¹é‡ã€‘-ã€åˆ é™¤ã€‘ + /// + /// + /// + [HttpDelete("Base/Delete-Many")] + [Authorize] + public async Task DeleteAsync(IEnumerable keyList) + { + await _repository.DeleteManyAsync(keyList.AsEnumerable(), true).ConfigureAwait(false); + } + + #endregion + + /// + /// ã€åŸºç¡€ã€‘-ã€åˆ†é¡µæŸ¥è¯¢ã€‘ã€æœ‰ç­›é€‰æ¡ä»¶ã€‘ + /// + /// + /// + /// + /// + [HttpPost("Base/Get-List-Page-By-Filter")] + [Authorize] + public virtual async Task> GetPageListByFilterAsync( + SfsRequestInputBase sfsRequestInputBase, + bool includeDetails = false, CancellationToken cancellationToken = default) + { + await CheckGetListPolicyAsync(); + + var expression = sfsRequestInputBase.Condition.Filters?.Count > 0 + ? sfsRequestInputBase.Condition.Filters.ToLambda() + : p => true; + + var resultEntities = await GetQueryListAsync(expression, sfsRequestInputBase.SkipCount, + sfsRequestInputBase.MaxResultCount, + sfsRequestInputBase.Sorting, includeDetails, cancellationToken); + + var resultDtos = ObjectMapper.Map, List>(resultEntities); + + //èŽ·å–æ€»æ•° + var totalCount = await GetCountAsync(expression, cancellationToken); + + return new PagedResultDto(totalCount, resultDtos); + } + + /// + /// ã€åŸºç¡€ã€‘-ã€èŽ·å–æ‰€æœ‰æ•°æ®ã€‘ + /// + /// + /// + /// + /// + [HttpPost("Base/Get-All-List")] + [Authorize] + public virtual async Task> GetAllListAsync() + { + await CheckGetListPolicyAsync(); + + var entities = await _repository.GetListAsync(); + + return await MapToGetListOutputDtosAsync(entities); + } + + /// + /// ã€åŸºç¡€ã€‘-ã€å¯¼å‡ºExcelã€‘ã€æœ‰ç­›é€‰æ¡ä»¶ã€‘ + /// + /// 查询æ¡ä»¶ + /// 是å¦å†—ä½™ä¸»è¡¨æ•°æ® + /// 是å¦å¯¼å‡ºå­è¡¨ + /// 用户ID + /// + [HttpPost("Base/Export-To-Excel")] + [Authorize] + public virtual async Task ExportToExcelAsync(SfsRequestInputBase sfsRequestInputBase, + bool isRedundance, Guid userId, bool isDetailExport = true) + { + var isHasDetail = false; //是å¦åŒ…å«ä»Žè¡¨ + + var data = (await GetPageListByFilterAsync(sfsRequestInputBase, true)).Items; + + var fileStream = new MemoryStream(); //æ–‡ä»¶æµ + IWorkbook workbook = new XSSFWorkbook(); + var sheet = workbook.CreateSheet(Localizer[typeof(TEntity).Name]); + var splitDetailsColumnNumber = 1; //åˆ†å‰²ä¸»è¡¨å’Œä»Žè¡¨çš„åˆ—æ•°é‡ + var excelDetailsCellStyle = SetExcelDetailsCellStyle(workbook); //å­è¡¨å•å…ƒæ ¼æ ·å¼ + var excelSplitCellStyle = SetSplitCellStyle(workbook); //分割å•å…ƒæ ¼æ ·å¼ + var excelOnlyMainCellStyle = SetExcelOnlyMainCellStyle(workbook); + var excelHeadCellStyle = SetExcelHeadCellStyle(workbook); + + // 获å–主表的属性 创建主表 表头 + var mainAllProperties = typeof(TEntityDto).GetProperties(); + var mainProperties = mainAllProperties.Where(p => p.Name != "Details").ToArray(); //去除details属性å¦åˆ™å¯¼å‡ºæ—¶ä¼šå¸¦å‡ºæ¥ + + #region 用户个性导出 主表 + + //获å–个性导出的字段 + var mainUserColumn = + await ExportCustomUserSettingAppService.GetByUserIdAndExportTableNameAsync(userId, typeof(TEntity).Name); + + if (mainUserColumn.Any(p => p.CustomUserSetting == Enum_ExportCustomUserSetting.Yes)) + { + var showUserColumn = mainUserColumn.Where(p => p.CustomUserSetting == Enum_ExportCustomUserSetting.Yes) + .Select(p => p.ExportColumnName?.ToLower()).Aggregate((a, b) => a + " " + b)?.Split(' ').ToList(); + + mainProperties = mainProperties.Where(p => showUserColumn.Contains(p.Name.ToLower())).ToArray(); + } + + #endregion + + var headerRow = sheet.CreateRow(0); //标头列 + for (var i = 0; i < mainProperties.Length; i++) + { + var englishName = mainProperties[i].Name; + //本地化 + var localizerName = Localizer[typeof(TEntity).Name + englishName]; + var headCell = headerRow.CreateCell(i); + headCell.SetCellValue(localizerName); + headCell.CellStyle = excelHeadCellStyle; + } + + // 获å–从表的属性 创建从表 表头 + var detailProperties = typeof(TEntityDto).GetProperty("Details")?.PropertyType.GetGenericArguments()[0] + .GetProperties(); + + if (detailProperties != null) + { + isHasDetail = true; + if (!isDetailExport) //是å¦è¦å¯¼å‡ºå­è¡¨ + { + isHasDetail = false; + } + + if (isHasDetail) + { + headerRow.CreateCell(mainProperties.Length).SetCellValue("---ã€åˆ†å‰²ã€‘---"); + + #region 用户个性导出 从表 + + //获å–个性导出的字段 + var detailDtoName = mainAllProperties.First(p => p.Name == "Details"); + var detailUserColumn = await ExportCustomUserSettingAppService.GetByUserIdAndExportTableNameAsync( + userId, detailDtoName.PropertyType.GenericTypeArguments.First().Name.Replace("Dto", "")); + var detailNotShowUserColumn = detailUserColumn + .Where(p => p.CustomUserSetting == Enum_ExportCustomUserSetting.No).Select(p => p.ExportColumnName) + .ToList(); + if (detailUserColumn.Any()) + { + detailProperties = detailProperties.Where(p => !detailNotShowUserColumn.Contains(p.Name)).ToArray(); + } + + #endregion + + for (var i = 0; i < detailProperties.Length; i++) + { + headerRow.CreateCell(mainProperties.Length + splitDetailsColumnNumber + i) + .SetCellValue(detailProperties[i].Name); + var headCell = headerRow.GetCell(mainProperties.Length + splitDetailsColumnNumber + i); + headCell.CellStyle = excelHeadCellStyle; + } + } + } + + // å¡«å……æ•°æ®è¡Œ + var rowIndex = 1; + foreach (var mainDto in data) + { + if (isHasDetail) + { + // 获å–ä»Žè¡¨æ•°æ® + var detailsIndex = mainAllProperties.FindIndex(p => p.Name == "Details"); + // å­è¡¨ + var detailList = (IEnumerable)mainAllProperties[detailsIndex].GetValue(mainDto); + var startMainRowIndex = rowIndex; + for (var datailCount = 0; datailCount < detailList.Count(); datailCount++) + { + var dataRow = sheet.CreateRow(rowIndex); + + if (isRedundance) + { + // å¡«å……ä¸»è¡¨æ•°æ® + for (var i = 0; i < mainProperties.Length; i++) + { + var value = mainProperties[i].GetValue(mainDto); + dataRow.CreateCell(i).SetCellValue(value?.ToString()); + } + } + else + { + if (datailCount == 0) + { + // å¡«å……ä¸»è¡¨æ•°æ® + for (var i = 0; i < mainProperties.Length; i++) + { + var value = mainProperties[i].GetValue(mainDto); + dataRow.CreateCell(i).SetCellValue(value?.ToString()); + } + } + } + + rowIndex++; + } + + var overMainRowIndex = rowIndex; + foreach (var detail in detailList) + { + if (startMainRowIndex <= overMainRowIndex) + { + //å¡«å……å­è¡¨æ•°æ® + var detailRow = sheet.GetRow(startMainRowIndex); + + var splitCell = detailRow.CreateCell(mainProperties.Length); + splitCell.CellStyle = excelSplitCellStyle; + + for (var i = 0; i < detailProperties.Length; i++) + { + var value = detailProperties[i].GetValue(detail); + detailRow.CreateCell(mainProperties.Length + splitDetailsColumnNumber + i) + .SetCellValue(value?.ToString()); + var detailCell = detailRow.GetCell(mainProperties.Length + splitDetailsColumnNumber + i); + detailCell.CellStyle = excelDetailsCellStyle; + } + } + + startMainRowIndex++; + } + } + else + { + var dataRow = sheet.CreateRow(rowIndex); + // å¡«å……ä¸»è¡¨æ•°æ® + for (var i = 0; i < mainProperties.Length; i++) + { + var value = mainProperties[i].GetValue(mainDto); + dataRow.CreateCell(i).SetCellValue(value?.ToString()); + } + + if (rowIndex % 2 == 0) + { + dataRow.RowStyle = excelOnlyMainCellStyle; + } + } + + //添加1个空行将2æ¡æ•°æ®åˆ†å‰²å¼€ + rowIndex++; + } + + #region 自动调整列宽 + + // 自动调整列宽 注æ„ï¼šè¿™ä¸ªå½±å“æ€§èƒ½ 会é历所有行 并且找出宽度最大值 + //sheet.AutoSizeColumn(i); + if (isHasDetail) + { + for (var i = 0; i < mainProperties.Length + splitDetailsColumnNumber + detailProperties.Length; i++) + { + var colWidth = Math.Max(sheet.GetColumnWidth(i) + 150, 265 * 15); + if (colWidth > 255 * 256) //excel列有最大宽度é™åˆ¶ + { + colWidth = 6000; + } + + sheet.SetColumnWidth(i, colWidth); + sheet.SetColumnWidth(mainProperties.Length, 3600); + } + } + else + { + for (var i = 0; i < mainProperties.Length; i++) + { + var colWidth = Math.Max(sheet.GetColumnWidth(i) + 150, 265 * 15); + if (colWidth > 255 * 256) //excel列有最大宽度é™åˆ¶ + { + colWidth = 6000; + } + + sheet.SetColumnWidth(i, colWidth); + } + } + + #endregion + + // ä¿å­˜Excel文件到MemoryStream + workbook.Write(fileStream, true); + fileStream.Position = 0; + + // 创建FileContentResult返回Excel文件 + var fileContentResult = new FileContentResult(fileStream.ToArray(), + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") + { + FileDownloadName = Localizer[typeof(TEntity).Name] + ".xlsx" + }; + + await Task.CompletedTask; + + return fileContentResult; + } + + /// + /// ã€åŸºç¡€ã€‘-ã€èŽ·å– å¢ž 改 查基础的Dto中属性的数æ®ç±»åž‹ã€‘ + /// + /// + [HttpPost("Base/Get-Dto-Column-Type")] + [Authorize] + public virtual async Task> GetDtoColumnTypeAsync() + { + var tableColumnTypeDtos = new List + { + GetTableColumnTypeByTable(typeof(TEntity), "S"), + GetTableColumnTypeByTable(typeof(TCreateInput), "C"), + GetTableColumnTypeByTable(typeof(TUpdateInput), "U"), + GetTableColumnTypeByTable(typeof(TEntity), "G") + }; + + await Task.CompletedTask; + return tableColumnTypeDtos; + } + + /// + /// ã€åŸºç¡€ã€‘-ã€èŽ·å–æ•°æ®ã€‘-ã€ç¼“存中读å–】 + /// + /// + [HttpPost("Base/Get-Cache-By-Id/{id}")] + [Authorize] + public virtual async Task GetCacheByIdAsync(TKey id) + { + var entity = await Cache.GetOrAddAsync( + $"{typeof(TEntityDto).Name}:{id}".ToString(), + async () => await GetEntityByIdAsync(id), GetCacheTime); + + var dto = ObjectMapper.Map(entity!); + return dto; + } + + /// + /// ã€åŸºç¡€ã€‘-ã€èŽ·å–æ•°æ®ã€‘ + /// + /// + /// + [HttpPost("Base/Get-By-Id/{id}")] + [Authorize] + public override Task GetAsync(TKey id) + { + return base.GetAsync(id); + } + + /// + /// ã€åŸºç¡€ã€‘-ã€èŽ·å–æ•°æ®ã€‘ + /// + /// + /// + [HttpPost("Base/Get-List")] + [Authorize] + public override Task> GetListAsync(TPagedAndSortedResultRequestDto input) + { + return base.GetListAsync(input); + } + + #endregion + + #region ç§æœ‰å¤„ç† + + /// + /// 清除缓存 + /// + /// + /// + protected async Task ReMoveCaCheAsync(TKey id) + { + await Cache.RemoveAsync(id?.ToString()); + } + + /// + /// æŒ‰è¡¨è¾¾å¼æ¡ä»¶èŽ·å–分页列表 + /// + /// + /// + /// + /// + /// + /// + /// + private async Task> GetQueryListAsync(Expression> expression, + int skipCount, int maxResultCount, string sorting, + bool includeDetails = false, CancellationToken cancellationToken = default) + { + var query = await Repository.WithDetailsAsync(); + //var query = await Repository.GetQueryableAsync(); + + var entities = query.Where(expression); + entities = GetSortingQueryable(entities, sorting); + var str = entities.ToQueryString(); + + Console.WriteLine("---------查询开始---------"); + Console.WriteLine(); + Console.WriteLine(str); + Console.WriteLine(); + Console.WriteLine("---------查询结æŸ---------"); + + var result = entities.Skip(skipCount).Take(maxResultCount).ToList(); + + return result; + } + + /// + /// è®¾ç½®æŽ’åº + /// + /// + /// + /// + private IQueryable GetSortingQueryable(IQueryable entities, string sorting) + { + if (string.IsNullOrEmpty(sorting)) + { + var createTimePropertyInfo = typeof(TEntity).GetProperty(nameof(AuditedEntity.CreationTime)); + if (createTimePropertyInfo != null) + { + entities = entities.OrderBy(nameof(AuditedEntity.CreationTime) + " DESC"); + } + else + { + entities = entities.OrderBy("Id DESC"); + } + } + else + { + entities = entities.OrderBy(sorting); + } + + return entities; + } + + /// + /// 获å–Dto的属性å字和数æ®ç±»åž‹ + /// + /// + /// + /// + private AllTableColumnTypeDto GetTableColumnTypeByTable(Type dtoType, string strDtoType) + { + var gDto = new AllTableColumnTypeDto + { + DtoType = strDtoType, + DtoName = dtoType.FullName, + ColumnsTypes = new List() + }; + var propertyInfos = dtoType.GetProperties(); + foreach (var propertyInfo in propertyInfos) + { + var columnType = new ColumnType(); + columnType.IsEnum = false; + if (propertyInfo.PropertyType.GenericTypeArguments.Length > 0) + { + if (propertyInfo.PropertyType.GenericTypeArguments[0].IsEnum) + { + columnType.IsEnum = true; + } + + columnType.Z_ColumnBaseType = propertyInfo.PropertyType.GenericTypeArguments[0].FullName!; + } + else + { + columnType.Z_ColumnBaseType = propertyInfo.PropertyType.FullName!; + } + + columnType.Z_ColumnName = propertyInfo.Name; + columnType.Z_ColumnType = propertyInfo.PropertyType.Name; + + + gDto.ColumnsTypes.Add(columnType); + } + + return gDto; + } + + /// + /// ã€è®°å½•æ•°é‡æŸ¥è¯¢ã€‘ã€æœ‰ç­›é€‰æ¡ä»¶ã€‘ + /// + /// + /// + /// + private async Task GetCountAsync(Expression> expression, + CancellationToken cancellationToken = default) + { + var count = await _repository.LongCountAsync(expression, cancellationToken); + + return count; + } + + /// + /// 获å–缓存redisæ—¶é—´ + /// + /// + private static DistributedCacheEntryOptions GetCacheTime() + { + var random = new Random(); + //解决雪崩 æ·»åŠ éšæœºç¼“存时间 + var time = CacheMinute + random.Next(10, 30); + return new DistributedCacheEntryOptions + { + AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(time) + }; + } + + + #region Excel导出的样å¼è®¾ç½® + + /// + /// 导出设置å­è¡¨å•å…ƒæ ¼æ ·å¼ + /// + /// + /// + private static ICellStyle SetExcelDetailsCellStyle(IWorkbook workbook) + { + var cellStyle = workbook.CreateCellStyle(); + cellStyle.FillBackgroundColor = IndexedColors.Grey25Percent.Index; + cellStyle.FillForegroundColor = IndexedColors.Grey25Percent.Index; + cellStyle.FillPattern = FillPattern.SolidForeground; + return cellStyle; + } + + /// + /// å¯¼å‡ºè®¾ç½®åªæœ‰ä¸»è¡¨æ—¶çš„交替行 å•å…ƒæ ¼æ ·å¼ + /// + /// + /// + private static ICellStyle SetExcelOnlyMainCellStyle(IWorkbook workbook) + { + var cellStyle = workbook.CreateCellStyle(); + cellStyle.FillBackgroundColor = IndexedColors.Grey25Percent.Index; + cellStyle.FillForegroundColor = IndexedColors.Grey25Percent.Index; + cellStyle.FillPattern = FillPattern.SolidForeground; + return cellStyle; + } + + /// + /// 设置分割å•å…ƒæ ¼çš„æ ·å¼ + /// + /// + /// + private static ICellStyle SetSplitCellStyle(IWorkbook workbook) + { + var cellStyle = workbook.CreateCellStyle(); + cellStyle.BorderLeft = BorderStyle.MediumDashed; + cellStyle.BorderRight = BorderStyle.MediumDashed; + cellStyle.LeftBorderColor = IndexedColors.BrightGreen.Index; + cellStyle.RightBorderColor = IndexedColors.Grey25Percent.Index; + cellStyle.FillBackgroundColor = IndexedColors.White.Index; + cellStyle.FillForegroundColor = IndexedColors.White.Index; + cellStyle.FillPattern = FillPattern.ThickVerticalBands; + return cellStyle; + } + + /// + /// 导出设置表头å•å…ƒæ ¼æ ·å¼ + /// + /// + /// + private static ICellStyle SetExcelHeadCellStyle(IWorkbook workbook) + { + var cellStyle = workbook.CreateCellStyle(); + cellStyle.FillBackgroundColor = IndexedColors.LightOrange.Index; + cellStyle.FillForegroundColor = IndexedColors.LightOrange.Index; + cellStyle.FillPattern = FillPattern.SolidForeground; + return cellStyle; + } + + public static void MapProperties(TSrc source, TDest destination) + { + if (source == null || destination == null) + { + throw new ArgumentNullException("Source and destination objects must not be null."); + } + + var sourceType = typeof(TSrc); + var destType = typeof(TDest); + + var sourceProperties = sourceType.GetProperties(); + var destProperties = destType.GetProperties(); + + foreach (var sourceProperty in sourceProperties) + { + var destProperty = Array.Find(destProperties, + p => p.Name == sourceProperty.Name && p.PropertyType == sourceProperty.PropertyType); + + if (destProperty != null && destProperty.CanWrite && destProperty.Name != "Id" && + destProperty.Name != "ConcurrencyStamp") + { + var value = sourceProperty.GetValue(source); + destProperty.SetValue(destination, value); + } + } + } + + #endregion + + #endregion +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingAppService.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingAppService.cs new file mode 100644 index 000000000..e4c1ca2e8 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingAppService.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.Application.Services; +using WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting; +using WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting.Dtos; + + +namespace WinIn.FasterZ.Wms.AppBaseBusiness.ExportCustomUserSetting +{ + using Dy_Exchange.Permissions; + using WinIn.FasterZ.Wms.AppBase; + + /// + /// 用户个型导出é…ç½® + /// + public class ExportCustomUserSettingAppService : CrudAppService, + IExportCustomUserSettingAppService + { + private readonly IExportCustomUserSettingRepository _repository; + + public ExportCustomUserSettingAppService(IExportCustomUserSettingRepository repository) : base(repository) + { + _repository = repository; + } + + protected override string GetPolicyName { get; set; } = Dy_ExchangePermissions.ExportCustomUserSetting.Default; + protected override string GetListPolicyName { get; set; } = Dy_ExchangePermissions.ExportCustomUserSetting.Default; + protected override string CreatePolicyName { get; set; } = Dy_ExchangePermissions.ExportCustomUserSetting.Create; + protected override string UpdatePolicyName { get; set; } = Dy_ExchangePermissions.ExportCustomUserSetting.Update; + protected override string DeletePolicyName { get; set; } = Dy_ExchangePermissions.ExportCustomUserSetting.Delete; + + /// + /// æ ¹æ®ç”¨æˆ·å’Œè¡¨å获å–个性化导出 + /// + /// + [HttpPost("get-by-user-and-table-name")] + public virtual async Task> GetByUserIdAndExportTableNameAsync(Guid userId, + string exportTableName) + { + var entitys = + await _repository.GetListAsync(p => p.ExportUserId == userId && p.ExportTableName == exportTableName); + + return ObjectMapper.Map, List>(entitys); + } + + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_Exchange.Application.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_Exchange.Application.csproj new file mode 100644 index 000000000..1c6d24f6f --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_Exchange.Application.csproj @@ -0,0 +1,27 @@ + + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeAppService.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeAppService.cs new file mode 100644 index 000000000..4b01e042e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeAppService.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Dy_Exchange.Localization; +using Volo.Abp.Application.Services; + +namespace Dy_Exchange; + +/* Inherit your application services from this class. + */ +public abstract class Dy_ExchangeAppService : ApplicationService +{ + protected Dy_ExchangeAppService() + { + LocalizationResource = typeof(Dy_ExchangeResource); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationAutoMapperProfile.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationAutoMapperProfile.cs new file mode 100644 index 000000000..45aad6ede --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationAutoMapperProfile.cs @@ -0,0 +1,17 @@ +using Dy_Exchange.Z_Business; +using Dy_Exchange.Z_Business.Dtos; +using AutoMapper; + +namespace Dy_Exchange; + +public class Dy_ExchangeApplicationAutoMapperProfile : Profile +{ + public Dy_ExchangeApplicationAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + CreateMap(); + CreateMap(MemberList.Source); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs new file mode 100644 index 000000000..c61073b2e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Dy_ExchangeApplicationModule.cs @@ -0,0 +1,31 @@ +using Volo.Abp.Account; +using Volo.Abp.AutoMapper; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeDomainModule), + typeof(AbpAccountApplicationModule), + typeof(Dy_ExchangeApplicationContractsModule), + typeof(AbpIdentityApplicationModule), + typeof(AbpPermissionManagementApplicationModule), + typeof(AbpTenantManagementApplicationModule), + typeof(AbpFeatureManagementApplicationModule), + typeof(AbpSettingManagementApplicationModule) + )] +public class Dy_ExchangeApplicationModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.AddMaps(); + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Properties/AssemblyInfo.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..cab9aacb3 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("Dy_Exchange.Application.Tests")] diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs new file mode 100644 index 000000000..324ef6872 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Application/Z_Business/DataExchangeInterfaceConfigAppService.cs @@ -0,0 +1,30 @@ +using System; +using Dy_Exchange.Permissions; +using Dy_Exchange.Z_Business.Dtos; +using Volo.Abp.Application.Dtos; +using Volo.Abp.Application.Services; +using WinIn.FasterZ.Wms.AppBase; + +namespace Dy_Exchange.Z_Business; + + +/// +/// +/// +public class DataExchangeInterfaceConfigAppService : ZbxBase, + IDataExchangeInterfaceConfigAppService +{ + protected override string GetPolicyName { get; set; } = Dy_ExchangePermissions.DataExchangeInterfaceConfig.Default; + protected override string GetListPolicyName { get; set; } = Dy_ExchangePermissions.DataExchangeInterfaceConfig.Default; + protected override string CreatePolicyName { get; set; } = Dy_ExchangePermissions.DataExchangeInterfaceConfig.Create; + protected override string UpdatePolicyName { get; set; } = Dy_ExchangePermissions.DataExchangeInterfaceConfig.Update; + protected override string DeletePolicyName { get; set; } = Dy_ExchangePermissions.DataExchangeInterfaceConfig.Delete; + + private readonly IDataExchangeInterfaceConfigRepository _repository; + + public DataExchangeInterfaceConfigAppService(IDataExchangeInterfaceConfigRepository repository) : base(repository) + { + _repository = repository; + } + +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_Exchange.AuthServer.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_Exchange.AuthServer.csproj new file mode 100644 index 000000000..5d23bcc4c --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_Exchange.AuthServer.csproj @@ -0,0 +1,56 @@ + + + + + + net7.0 + enable + Dy_Exchange + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + true + true + false + true + Dy_Exchange-4681b4fd-151f-4221-84a4-929d86723e4c + + + + + + + + + + + + Always + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeAuthServerModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeAuthServerModule.cs new file mode 100644 index 000000000..7b14613c3 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeAuthServerModule.cs @@ -0,0 +1,194 @@ +using System; +using System.IO; +using System.Linq; +using Localization.Resources.AbpUi; +using Medallion.Threading; +using Medallion.Threading.Redis; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Dy_Exchange.EntityFrameworkCore; +using Dy_Exchange.Localization; +using Dy_Exchange.MultiTenancy; +using StackExchange.Redis; +using Volo.Abp; +using Volo.Abp.Account; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.Mvc.UI; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.Auditing; +using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Caching; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.DistributedLocking; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.UI; +using Volo.Abp.VirtualFileSystem; + +namespace Dy_Exchange; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpDistributedLockingModule), + typeof(AbpAccountWebOpenIddictModule), + typeof(AbpAccountApplicationModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), + typeof(Dy_ExchangeEntityFrameworkCoreModule), + typeof(AbpAspNetCoreSerilogModule) + )] +public class Dy_ExchangeAuthServerModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("Dy_Exchange"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + }); + + Configure(options => + { + options.StyleBundles.Configure( + LeptonXLiteThemeBundles.Styles.Global, + bundle => + { + bundle.AddFiles("/global-styles.css"); + } + ); + }); + + Configure(options => + { + //options.IsEnabledForGetRequests = true; + options.ApplicationName = "AuthServer"; + }); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Dy_Exchange.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Dy_Exchange.Domain")); + }); + } + + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + options.RedirectAllowedUrls.AddRange(configuration["App:RedirectAllowedUrls"]?.Split(',') ?? Array.Empty()); + + options.Applications["Angular"].RootUrl = configuration["App:ClientUrl"]; + options.Applications["Angular"].Urls[AccountUrlNames.PasswordReset] = "account/reset-password"; + }); + + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + + Configure(options => + { + options.KeyPrefix = "Dy_Exchange:"; + }); + + var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("Dy_Exchange"); + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "Dy_Exchange-Protection-Keys"); + } + + context.Services.AddSingleton(sp => + { + var connection = ConnectionMultiplexer + .Connect(configuration["Redis:Configuration"]); + return new RedisDistributedSynchronizationProvider(connection.GetDatabase()); + }); + + context.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"]? + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() ?? Array.Empty() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseAbpRequestLocalization(); + + if (!env.IsDevelopment()) + { + app.UseErrorPage(); + } + + app.UseCorrelationId(); + app.UseStaticFiles(); + app.UseRouting(); + app.UseCors(); + app.UseAuthentication(); + app.UseAbpOpenIddictValidation(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseUnitOfWork(); + app.UseAuthorization(); + app.UseAuditing(); + app.UseAbpSerilogEnrichers(); + app.UseConfiguredEndpoints(); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeBrandingProvider.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeBrandingProvider.cs new file mode 100644 index 000000000..03174bba2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Dy_ExchangeBrandingProvider.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Ui.Branding; +using Volo.Abp.DependencyInjection; + +namespace Dy_Exchange; + +[Dependency(ReplaceServices = true)] +public class Dy_ExchangeBrandingProvider : DefaultBrandingProvider +{ + public override string AppName => "Dy_Exchange"; +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml new file mode 100644 index 000000000..573e2d9a5 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml @@ -0,0 +1,115 @@ +@page +@using Microsoft.AspNetCore.Http.Extensions +@using Microsoft.AspNetCore.Mvc.Localization +@using Dy_Exchange.Pages +@using Dy_Exchange.Localization +@using Volo.Abp.Users +@using Volo.Abp.AspNetCore.Mvc.UI.Theming +@using Volo.Abp.Ui.Branding +@model IndexModel +@inject IHtmlLocalizer L +@inject ICurrentUser CurrentUser +@inject IBrandingProvider BrandingProvider +@inject ITheme Theme + +@{ + Layout = Theme.GetEmptyLayout(); +} + +
+
+ + + +
+
diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml.cs new file mode 100644 index 000000000..26a47b7e2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/Index.cshtml.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.Globalization; +using System.Threading.Tasks; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; +using Volo.Abp.Localization; +using Volo.Abp.OpenIddict.Applications; + +namespace Dy_Exchange.Pages; + +public class IndexModel : AbpPageModel +{ + public List? Applications { get; protected set; } + + public IReadOnlyList? Languages { get; protected set; } + + public string? CurrentLanguage { get; protected set; } + + protected IOpenIddictApplicationRepository OpenIdApplicationRepository { get; } + + protected ILanguageProvider LanguageProvider { get; } + + public IndexModel(IOpenIddictApplicationRepository openIdApplicationRepository, ILanguageProvider languageProvider) + { + OpenIdApplicationRepository = openIdApplicationRepository; + LanguageProvider = languageProvider; + } + + public async Task OnGetAsync() + { + Applications = await OpenIdApplicationRepository.GetListAsync(); + + Languages = await LanguageProvider.GetLanguagesAsync(); + CurrentLanguage = CultureInfo.CurrentCulture.DisplayName; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/_ViewImports.cshtml b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Program.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Program.cs new file mode 100644 index 000000000..b592fc523 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Events; + +namespace Dy_Exchange; + +public class Program +{ + public async static Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() +#if DEBUG + .MinimumLevel.Debug() +#else + .MinimumLevel.Information() +#endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateLogger(); + + try + { + Log.Information("Starting Dy_Exchange.AuthServer."); + var builder = WebApplication.CreateBuilder(args); + builder.Host.AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog(); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); + return 0; + } + catch (Exception ex) + { + if (ex is HostAbortedException) + { + throw; + } + + Log.Fatal(ex, "Dy_Exchange.AuthServer terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Properties/launchSettings.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Properties/launchSettings.json new file mode 100644 index 000000000..a994a8d5e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44365", + "sslPort": 44365 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Dy_Exchange.AuthServer": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:44365", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/abp.resourcemapping.js b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/abp.resourcemapping.js new file mode 100644 index 000000000..98822e49d --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/abp.resourcemapping.js @@ -0,0 +1,11 @@ +module.exports = { + aliases: { + + }, + clean: [ + + ], + mappings: { + + } +}; \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.Development.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.Development.json new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.Development.json @@ -0,0 +1,2 @@ +{ +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.json new file mode 100644 index 000000000..544eee0ae --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.json @@ -0,0 +1,17 @@ +{ + "App": { + "SelfUrl": "https://localhost:44365", + "ClientUrl": "http://localhost:4200", + "CorsOrigins": "https://*.Dy_Exchange.com,http://localhost:4200,https://localhost:44318,https://localhost:44363", + "RedirectAllowedUrls": "http://localhost:4200,https://localhost:44376,https://localhost:44318,https://localhost:44328" + }, + "ConnectionStrings": { + "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=Dy_Exchange;Trusted_Connection=True;TrustServerCertificate=True" + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "StringEncryption": { + "DefaultPassPhrase": "OntiKHsbiQj6FTce" + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.secrets.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.secrets.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package-lock.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package-lock.json new file mode 100644 index 000000000..9076b57f2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package-lock.json @@ -0,0 +1,7663 @@ +{ + "name": "my-app-authserver", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "my-app-authserver", + "version": "1.0.0", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.3.1" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.3.tgz", + "integrity": "sha512-KJCw6OxjQBgNw4QoSoDQOe32bFF9NvHdD09zMVsoCB/GgN66dcbZnk+ldidHcwjLFDPXOuHJMx+TKmno3VgUaQ==", + "dependencies": { + "ansi-colors": "^4.1.1", + "extend-object": "^1.0.0", + "glob": "^7.1.6", + "gulp": "^4.0.2", + "merge-stream": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-2.3.3.tgz", + "integrity": "sha512-96hwhfJwnDRl6+ytAL4rSOpQCSd/41Fd5OtSsYjIMn8p96QLbO8WvhZEuzno3CFa/x916WJ87fjBN9+DkHRtWg==", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.3.tgz", + "integrity": "sha512-+G2mM/BJWqgGqZFg6GP28PaCtq+YlRmRfg7r0JQ1wkAN9pc11yKm0LRQjFnkcVBzg0A+N2hZqnFbW7wQhwXOHg==", + "dependencies": { + "@abp/aspnetcore.mvc.ui": "~7.2.3", + "@abp/bootstrap": "~7.2.3", + "@abp/bootstrap-datepicker": "~7.2.3", + "@abp/bootstrap-daterangepicker": "~7.2.3", + "@abp/datatables.net-bs5": "~7.2.3", + "@abp/font-awesome": "~7.2.3", + "@abp/jquery-form": "~7.2.3", + "@abp/jquery-validation-unobtrusive": "~7.2.3", + "@abp/lodash": "~7.2.3", + "@abp/luxon": "~7.2.3", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.3", + "@abp/moment": "~7.2.3", + "@abp/select2": "~7.2.3", + "@abp/sweetalert2": "~7.2.3", + "@abp/timeago": "~7.2.3", + "@abp/toastr": "~7.2.3" + } + }, + "node_modules/@abp/bootstrap": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-7.2.3.tgz", + "integrity": "sha512-Z00q1sAwo9PvFSpfFlbbUHPMyghLOzuEuAzz/8nA6tK7WR0KQBS/0zGC0nK9hNwbyZ4FqKwPSznRVwuwrnqyhQ==", + "dependencies": { + "@abp/core": "~7.2.3", + "bootstrap": "^5.1.3" + } + }, + "node_modules/@abp/bootstrap-datepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.3.tgz", + "integrity": "sha512-wiKVXftVrXcjwz0FpshD6P4WW3CNk/4cLH15aaqRjM+J0BigDeH9CczlpVc7jXdn+c8plHIRz0t5tqlUud7dIQ==", + "dependencies": { + "bootstrap-datepicker": "^1.9.0" + } + }, + "node_modules/@abp/bootstrap-daterangepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.3.tgz", + "integrity": "sha512-ChdnXMzHvg+HwrUtw2z6KuqRTqHVOq8qEBai+IPW6PykJSML+tZKzer3jzDIzyHq68OIqom3n3xL0XpcniKMew==", + "dependencies": { + "bootstrap-daterangepicker": "^3.1.0" + } + }, + "node_modules/@abp/core": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-7.2.3.tgz", + "integrity": "sha512-UyKBWwXbKCzKZwV2YJPgP3v2naDFsfJzV+KEHpdgLdPZyrpBhp+bQ80VNVe2HHrD/bLfhM4fu9pCXw6RYZKnvA==", + "dependencies": { + "@abp/utils": "~7.2.3" + } + }, + "node_modules/@abp/datatables.net": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-7.2.3.tgz", + "integrity": "sha512-g+LmRMg4Sk34iU/MN4RpgC/yd8NVEjhVWg/kT+nuWunsnwLHkcfK59KPGXn9ZLktL4VqQYj2WeXbDv8TEbOObg==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "datatables.net": "^1.11.4" + } + }, + "node_modules/@abp/datatables.net-bs5": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.3.tgz", + "integrity": "sha512-TmXTkIX+Vb1O/fER5JeRlWIOZLoSXG4QD3F0ZbebrjgS9k7oSu9igR/VhXBs1m1lvOqcNKv7Y4LTNRAMw+Mi0A==", + "dependencies": { + "@abp/datatables.net": "~7.2.3", + "datatables.net-bs5": "^1.11.4" + } + }, + "node_modules/@abp/font-awesome": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-7.2.3.tgz", + "integrity": "sha512-+4QRhfU08t1MYkmzTPX0B+p+SZQtOqtlDafzeDm5X6fbOlxV1hi97eRWtLtLgLjodjJWztpECWcsTUTgDhExwQ==", + "dependencies": { + "@abp/core": "~7.2.3", + "@fortawesome/fontawesome-free": "^5.15.4" + } + }, + "node_modules/@abp/jquery": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-7.2.3.tgz", + "integrity": "sha512-r/p3D2QlV57YvrGJsLfTuIJGwLSSi5AVFtkmgKyfpyXYOCNb+TVF9sEZOZnoZebX6cT0JRvtUfZ0dk6ZBebAzg==", + "dependencies": { + "@abp/core": "~7.2.3", + "jquery": "~3.6.0" + } + }, + "node_modules/@abp/jquery-form": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-7.2.3.tgz", + "integrity": "sha512-ucdGIZ0sxefakGRei9BJvDuoN16fKsYfpOT70/udw3k7uC3gFJD0AvAlEOEZPsFZhpNoqUKexNMym4lZovqBkg==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "jquery-form": "^4.3.0" + } + }, + "node_modules/@abp/jquery-validation": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-7.2.3.tgz", + "integrity": "sha512-drpE5mXErHQPk/4KChsj3zwNCA4GqNlYquTtHNv9/t5S/NuGqFAkchPV6mRYaiQypcxCndZQNSUEqnWxbuMY0g==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "jquery-validation": "^1.19.3" + } + }, + "node_modules/@abp/jquery-validation-unobtrusive": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.3.tgz", + "integrity": "sha512-Hcf1sqAFRIAYKqvN1pZGed+lazzY1nztvcmQlOOgUquiXRS3QjI3dIvxWw5nekJwUPqMpSfuC1GErQo0KpE1fw==", + "dependencies": { + "@abp/jquery-validation": "~7.2.3", + "jquery-validation-unobtrusive": "^3.2.12" + } + }, + "node_modules/@abp/lodash": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-7.2.3.tgz", + "integrity": "sha512-5KuXPPpa2mkTlUYPR83bUTJUSSGoq9/kFSf9fYC0Wk2mFFeG4mRK6mXwcyHTfYshQe2qxuncxZsJ+4j5uQN9PA==", + "dependencies": { + "@abp/core": "~7.2.3", + "lodash": "^4.17.21" + } + }, + "node_modules/@abp/luxon": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-7.2.3.tgz", + "integrity": "sha512-Y3IT1GbyuNSAzfpGnc5uzjz3Z/nDRUpYiZhoX0XeoQlJ+GyVT/+dytsZbuQBLgEWmQJhk9zxdcITXFT5vrWDcw==", + "dependencies": { + "@abp/core": "~7.2.3", + "luxon": "^2.3.0" + } + }, + "node_modules/@abp/malihu-custom-scrollbar-plugin": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.3.tgz", + "integrity": "sha512-wq9eBrw/bY3wb50v5zuL0qOcVLOT86XN2ZJQj69O/bi2+0WNdLRCqMHhY0kaafb7UIBAlKChKA/xeICwCZxn+w==", + "dependencies": { + "@abp/core": "~7.2.3", + "malihu-custom-scrollbar-plugin": "^3.1.5" + } + }, + "node_modules/@abp/moment": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-7.2.3.tgz", + "integrity": "sha512-pXsOzSom9RZHRGWuVaLIVzSkPayIcWMMmgSyo8T3gtZzZG/QJbpBWT+pug0X8pmV8So4d9E0LjacmODBKLM30A==", + "dependencies": { + "moment": "^2.9.0" + } + }, + "node_modules/@abp/select2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-7.2.3.tgz", + "integrity": "sha512-Cdzl467UftB421W+l8uikGr2NlOsHwxKDxt5yPrF03LEec1MBys5y7UPUV1TEO6l0xwAVi4mW8dXaawyIOSjUA==", + "dependencies": { + "@abp/core": "~7.2.3", + "select2": "^4.0.13" + } + }, + "node_modules/@abp/sweetalert2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-7.2.3.tgz", + "integrity": "sha512-KHZD1YRMN6Z4JxPfXuEwocubooux8nKq6sPNG6RKg+rWpp23Fp8nX/ZngJNywVXSRqzrdEvUAM+92JG7zMwKXw==", + "dependencies": { + "@abp/core": "~7.2.3", + "sweetalert2": "^11.3.6" + } + }, + "node_modules/@abp/timeago": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-7.2.3.tgz", + "integrity": "sha512-7eiibNXJWBGpQnitd/i8aWUNHOkcsuq8fAwBLJWvG8Whhh1nmBEjng0pGhheMqo0xoydefWi1K2uZDg99tKPeQ==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "timeago": "^1.6.7" + } + }, + "node_modules/@abp/toastr": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-7.2.3.tgz", + "integrity": "sha512-2zNMQE6ArRULP6xl+M66/EY83ZrXfNY+sNHUkmZH4uqfGhqR/ijKIQm1quxCLDmUcAjRr1kzu8BCc98pc9tfFw==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "toastr": "^2.1.4" + } + }, + "node_modules/@abp/utils": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-7.2.3.tgz", + "integrity": "sha512-hejxDJhSI9Kor4mS9c/JHHQrW/wLXC/XMOJMUcBVkX/5IQd9GU9EW63oalNQyVA3gz3h5obnb0Qcfdv65wc5Pg==", + "dependencies": { + "just-compare": "^1.3.0" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/anymatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/bootstrap-datepicker": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz", + "integrity": "sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg==", + "dependencies": { + "jquery": ">=3.4.0 <4.0.0" + } + }, + "node_modules/bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/datatables.net": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz", + "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==", + "dependencies": { + "jquery": "1.8 - 4" + } + }, + "node_modules/datatables.net-bs5": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.13.11.tgz", + "integrity": "sha512-NQO15TjXo4xvZ0jReC4Uf86ezbQzPQPdaN2YncrCPhzQ6fx+2WD7DUq4ur0HbAcYHo94/M+MtD5Ch29To7Rj3Q==", + "dependencies": { + "datatables.net": "1.13.11", + "jquery": "1.8 - 4" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", + "integrity": "sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli/node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "node_modules/jquery-form": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", + "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", + "dependencies": { + "jquery": ">=1.7.2" + } + }, + "node_modules/jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" + }, + "node_modules/jquery-validation": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.1.tgz", + "integrity": "sha512-rbBy36Xe5WBCO8OLdZLhPhVjb70KayuoX3WYRNwNpy9TXuUadhNTcaipr6jEIacn+V4jgXB2xUJl6hYzJxr5jw==", + "peerDependencies": { + "jquery": "^1.7 || ^2.0 || ^3.1" + } + }, + "node_modules/jquery-validation-unobtrusive": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", + "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", + "dependencies": { + "jquery": "^3.5.1", + "jquery-validation": ">=1.16" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/just-compare": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.5.1.tgz", + "integrity": "sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw==" + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ==", + "dependencies": { + "jquery-mousewheel": ">=3.0.6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/matchdep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/readdirp/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/sweetalert2": { + "version": "11.12.2", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.12.2.tgz", + "integrity": "sha512-Rwv5iRYlApkDSXeX22aLhhWMlWPzFxnNBVLZajkFKYhaVEfQkMOPQQRhBtSFxKBPCoko9U3SccWm9hI4o3Id0Q==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "dependencies": { + "jquery": ">=1.5.0 <4.0" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "dependencies": { + "jquery": ">=1.12.0" + } + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + }, + "dependencies": { + "@abp/aspnetcore.mvc.ui": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.3.tgz", + "integrity": "sha512-KJCw6OxjQBgNw4QoSoDQOe32bFF9NvHdD09zMVsoCB/GgN66dcbZnk+ldidHcwjLFDPXOuHJMx+TKmno3VgUaQ==", + "requires": { + "ansi-colors": "^4.1.1", + "extend-object": "^1.0.0", + "glob": "^7.1.6", + "gulp": "^4.0.2", + "merge-stream": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-2.3.3.tgz", + "integrity": "sha512-96hwhfJwnDRl6+ytAL4rSOpQCSd/41Fd5OtSsYjIMn8p96QLbO8WvhZEuzno3CFa/x916WJ87fjBN9+DkHRtWg==", + "requires": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1" + } + }, + "@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.3.tgz", + "integrity": "sha512-+G2mM/BJWqgGqZFg6GP28PaCtq+YlRmRfg7r0JQ1wkAN9pc11yKm0LRQjFnkcVBzg0A+N2hZqnFbW7wQhwXOHg==", + "requires": { + "@abp/aspnetcore.mvc.ui": "~7.2.3", + "@abp/bootstrap": "~7.2.3", + "@abp/bootstrap-datepicker": "~7.2.3", + "@abp/bootstrap-daterangepicker": "~7.2.3", + "@abp/datatables.net-bs5": "~7.2.3", + "@abp/font-awesome": "~7.2.3", + "@abp/jquery-form": "~7.2.3", + "@abp/jquery-validation-unobtrusive": "~7.2.3", + "@abp/lodash": "~7.2.3", + "@abp/luxon": "~7.2.3", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.3", + "@abp/moment": "~7.2.3", + "@abp/select2": "~7.2.3", + "@abp/sweetalert2": "~7.2.3", + "@abp/timeago": "~7.2.3", + "@abp/toastr": "~7.2.3" + } + }, + "@abp/bootstrap": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-7.2.3.tgz", + "integrity": "sha512-Z00q1sAwo9PvFSpfFlbbUHPMyghLOzuEuAzz/8nA6tK7WR0KQBS/0zGC0nK9hNwbyZ4FqKwPSznRVwuwrnqyhQ==", + "requires": { + "@abp/core": "~7.2.3", + "bootstrap": "^5.1.3" + } + }, + "@abp/bootstrap-datepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.3.tgz", + "integrity": "sha512-wiKVXftVrXcjwz0FpshD6P4WW3CNk/4cLH15aaqRjM+J0BigDeH9CczlpVc7jXdn+c8plHIRz0t5tqlUud7dIQ==", + "requires": { + "bootstrap-datepicker": "^1.9.0" + } + }, + "@abp/bootstrap-daterangepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.3.tgz", + "integrity": "sha512-ChdnXMzHvg+HwrUtw2z6KuqRTqHVOq8qEBai+IPW6PykJSML+tZKzer3jzDIzyHq68OIqom3n3xL0XpcniKMew==", + "requires": { + "bootstrap-daterangepicker": "^3.1.0" + } + }, + "@abp/core": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-7.2.3.tgz", + "integrity": "sha512-UyKBWwXbKCzKZwV2YJPgP3v2naDFsfJzV+KEHpdgLdPZyrpBhp+bQ80VNVe2HHrD/bLfhM4fu9pCXw6RYZKnvA==", + "requires": { + "@abp/utils": "~7.2.3" + } + }, + "@abp/datatables.net": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-7.2.3.tgz", + "integrity": "sha512-g+LmRMg4Sk34iU/MN4RpgC/yd8NVEjhVWg/kT+nuWunsnwLHkcfK59KPGXn9ZLktL4VqQYj2WeXbDv8TEbOObg==", + "requires": { + "@abp/jquery": "~7.2.3", + "datatables.net": "^1.11.4" + } + }, + "@abp/datatables.net-bs5": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.3.tgz", + "integrity": "sha512-TmXTkIX+Vb1O/fER5JeRlWIOZLoSXG4QD3F0ZbebrjgS9k7oSu9igR/VhXBs1m1lvOqcNKv7Y4LTNRAMw+Mi0A==", + "requires": { + "@abp/datatables.net": "~7.2.3", + "datatables.net-bs5": "^1.11.4" + } + }, + "@abp/font-awesome": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-7.2.3.tgz", + "integrity": "sha512-+4QRhfU08t1MYkmzTPX0B+p+SZQtOqtlDafzeDm5X6fbOlxV1hi97eRWtLtLgLjodjJWztpECWcsTUTgDhExwQ==", + "requires": { + "@abp/core": "~7.2.3", + "@fortawesome/fontawesome-free": "^5.15.4" + } + }, + "@abp/jquery": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-7.2.3.tgz", + "integrity": "sha512-r/p3D2QlV57YvrGJsLfTuIJGwLSSi5AVFtkmgKyfpyXYOCNb+TVF9sEZOZnoZebX6cT0JRvtUfZ0dk6ZBebAzg==", + "requires": { + "@abp/core": "~7.2.3", + "jquery": "~3.6.0" + } + }, + "@abp/jquery-form": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-7.2.3.tgz", + "integrity": "sha512-ucdGIZ0sxefakGRei9BJvDuoN16fKsYfpOT70/udw3k7uC3gFJD0AvAlEOEZPsFZhpNoqUKexNMym4lZovqBkg==", + "requires": { + "@abp/jquery": "~7.2.3", + "jquery-form": "^4.3.0" + } + }, + "@abp/jquery-validation": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-7.2.3.tgz", + "integrity": "sha512-drpE5mXErHQPk/4KChsj3zwNCA4GqNlYquTtHNv9/t5S/NuGqFAkchPV6mRYaiQypcxCndZQNSUEqnWxbuMY0g==", + "requires": { + "@abp/jquery": "~7.2.3", + "jquery-validation": "^1.19.3" + } + }, + "@abp/jquery-validation-unobtrusive": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.3.tgz", + "integrity": "sha512-Hcf1sqAFRIAYKqvN1pZGed+lazzY1nztvcmQlOOgUquiXRS3QjI3dIvxWw5nekJwUPqMpSfuC1GErQo0KpE1fw==", + "requires": { + "@abp/jquery-validation": "~7.2.3", + "jquery-validation-unobtrusive": "^3.2.12" + } + }, + "@abp/lodash": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-7.2.3.tgz", + "integrity": "sha512-5KuXPPpa2mkTlUYPR83bUTJUSSGoq9/kFSf9fYC0Wk2mFFeG4mRK6mXwcyHTfYshQe2qxuncxZsJ+4j5uQN9PA==", + "requires": { + "@abp/core": "~7.2.3", + "lodash": "^4.17.21" + } + }, + "@abp/luxon": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-7.2.3.tgz", + "integrity": "sha512-Y3IT1GbyuNSAzfpGnc5uzjz3Z/nDRUpYiZhoX0XeoQlJ+GyVT/+dytsZbuQBLgEWmQJhk9zxdcITXFT5vrWDcw==", + "requires": { + "@abp/core": "~7.2.3", + "luxon": "^2.3.0" + } + }, + "@abp/malihu-custom-scrollbar-plugin": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.3.tgz", + "integrity": "sha512-wq9eBrw/bY3wb50v5zuL0qOcVLOT86XN2ZJQj69O/bi2+0WNdLRCqMHhY0kaafb7UIBAlKChKA/xeICwCZxn+w==", + "requires": { + "@abp/core": "~7.2.3", + "malihu-custom-scrollbar-plugin": "^3.1.5" + } + }, + "@abp/moment": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-7.2.3.tgz", + "integrity": "sha512-pXsOzSom9RZHRGWuVaLIVzSkPayIcWMMmgSyo8T3gtZzZG/QJbpBWT+pug0X8pmV8So4d9E0LjacmODBKLM30A==", + "requires": { + "moment": "^2.9.0" + } + }, + "@abp/select2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-7.2.3.tgz", + "integrity": "sha512-Cdzl467UftB421W+l8uikGr2NlOsHwxKDxt5yPrF03LEec1MBys5y7UPUV1TEO6l0xwAVi4mW8dXaawyIOSjUA==", + "requires": { + "@abp/core": "~7.2.3", + "select2": "^4.0.13" + } + }, + "@abp/sweetalert2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-7.2.3.tgz", + "integrity": "sha512-KHZD1YRMN6Z4JxPfXuEwocubooux8nKq6sPNG6RKg+rWpp23Fp8nX/ZngJNywVXSRqzrdEvUAM+92JG7zMwKXw==", + "requires": { + "@abp/core": "~7.2.3", + "sweetalert2": "^11.3.6" + } + }, + "@abp/timeago": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-7.2.3.tgz", + "integrity": "sha512-7eiibNXJWBGpQnitd/i8aWUNHOkcsuq8fAwBLJWvG8Whhh1nmBEjng0pGhheMqo0xoydefWi1K2uZDg99tKPeQ==", + "requires": { + "@abp/jquery": "~7.2.3", + "timeago": "^1.6.7" + } + }, + "@abp/toastr": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-7.2.3.tgz", + "integrity": "sha512-2zNMQE6ArRULP6xl+M66/EY83ZrXfNY+sNHUkmZH4uqfGhqR/ijKIQm1quxCLDmUcAjRr1kzu8BCc98pc9tfFw==", + "requires": { + "@abp/jquery": "~7.2.3", + "toastr": "^2.1.4" + } + }, + "@abp/utils": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-7.2.3.tgz", + "integrity": "sha512-hejxDJhSI9Kor4mS9c/JHHQrW/wLXC/XMOJMUcBVkX/5IQd9GU9EW63oalNQyVA3gz3h5obnb0Qcfdv65wc5Pg==", + "requires": { + "just-compare": "^1.3.0" + } + }, + "@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==" + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "requires": { + "async-done": "^1.2.2" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "requires": {} + }, + "bootstrap-datepicker": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz", + "integrity": "sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg==", + "requires": { + "jquery": ">=3.4.0 <4.0.0" + } + }, + "bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "requires": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" + }, + "copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "requires": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "requires": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + } + }, + "datatables.net": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz", + "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==", + "requires": { + "jquery": "1.8 - 4" + } + }, + "datatables.net-bs5": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.13.11.tgz", + "integrity": "sha512-NQO15TjXo4xvZ0jReC4Uf86ezbQzPQPdaN2YncrCPhzQ6fx+2WD7DUq4ur0HbAcYHo94/M+MtD5Ch29To7Rj3Q==", + "requires": { + "datatables.net": "1.13.11", + "jquery": "1.8 - 4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==" + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "requires": { + "d": "^1.0.2", + "ext": "^1.7.0" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + } + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", + "integrity": "sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "requires": { + "sparkles": "^1.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "requires": { + "ansi-wrap": "^0.1.0" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "requires": { + "glogg": "^1.0.0" + } + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "requires": { + "hasown": "^2.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "jquery-form": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", + "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", + "requires": { + "jquery": ">=1.7.2" + } + }, + "jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" + }, + "jquery-validation": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.1.tgz", + "integrity": "sha512-rbBy36Xe5WBCO8OLdZLhPhVjb70KayuoX3WYRNwNpy9TXuUadhNTcaipr6jEIacn+V4jgXB2xUJl6hYzJxr5jw==", + "requires": {} + }, + "jquery-validation-unobtrusive": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", + "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", + "requires": { + "jquery": "^3.5.1", + "jquery-validation": ">=1.16" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "just-compare": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.5.1.tgz", + "integrity": "sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw==" + }, + "just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==" + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ==", + "requires": { + "jquery-mousewheel": ">=3.0.6" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "dependencies": { + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "requires": { + "fill-range": "^7.1.1" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" + }, + "nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "requires": { + "ret": "~0.1.10" + } + }, + "select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "sweetalert2": { + "version": "11.12.2", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.12.2.tgz", + "integrity": "sha512-Rwv5iRYlApkDSXeX22aLhhWMlWPzFxnNBVLZajkFKYhaVEfQkMOPQQRhBtSFxKBPCoko9U3SccWm9hI4o3Id0Q==" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==" + }, + "timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "requires": { + "jquery": ">=1.5.0 <4.0" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "requires": { + "through2": "^2.0.3" + } + }, + "toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "requires": { + "jquery": ">=1.12.0" + } + }, + "type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==" + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package.json new file mode 100644 index 000000000..f7e1b5a55 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/package.json @@ -0,0 +1,8 @@ +{ + "version": "1.0.0", + "name": "my-app-authserver", + "private": true, + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.3.1" + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/web.config b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/web.config new file mode 100644 index 000000000..554fabd47 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/web.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/global-styles.css b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/global-styles.css new file mode 100644 index 000000000..74db4bd54 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/global-styles.css @@ -0,0 +1,6 @@ +/* Your Global Styles */ + +:root .lpx-brand-logo { + --lpx-logo: url('/images/logo/leptonx/logo-light.png'); + --lpx-logo-icon: url('/images/logo/leptonx/logo-light-thumbnail.png'); +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.AuthServer/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..621596bb5c1a301136d9ee2af5ffe1391a4af776 GIT binary patch literal 17592 zcmW(+bzB=w6Alm{cyO2CUMN~9lHgL@tw3>iic<(qfdWNJk>FCGw76^07I!G_?pEN- z`~7jhyPKQa+uhrpoqe8}7!5TAJZvg#004leq$sNe0H7d{M>hxqDUl!W5k{V{+!PHx z0RSB0{|*$um#-8^A&RG#0t`^~hh`6X1GI&{fdT+Ei8%i(&;bD1H%hWlo%bk5%OUY! zr!!yN?!0o+A0!%XF7NV;i(8HKTkerWZNIUQBppdx zS$;lT6$b+DB~X*-sf6ndZqcZ9p0XkLXb{hW?`;f_Og~*gs+&L7V@S^aN73DtMvylFxi4@?-@|6C}5zM z)|-wc!i4D^c?c#|5mpH=BSsG}0%#Zk4%4a77k3)+H7b@Gl-=cKFnTwkfsONm{AfR1 z>X|>6F_c6G1l`}{c~7>!;M>8MW=6Lna!Z5kI~Yhy#@N{eoc&`;oH{}mQz;xNmcD(TpW17xb`URq1feH)iXorx!P>Z z(n`dmu}@&U006-Rg4o6JDtkse%}b!XRRECa%2Y&jw>1kZ0-Ryu_(qW^Km!sCvb;A) zJ*8U1@zVy7IX{Te4h;q(ivWbxL!$HKKoA2kDoCuzm*itQ20e2qIs@F?48&l-2_)pk zm~h1~@~$ZP%XWYf&teb(>13AnTRYETA-nDgXxf@Yd-z_v(ZO1v$KE z+VDtGfbF}6p8l_L%+O&;0U*Rz>Ulqh6u!4A0J^=sMS-AxdbRGqThypn&1##gvi7H=AP-CkP(_P?nXD-VkR~nbL(h(f)Zzj`c4IFb z6=#-IxJ8Jhv*5crAFK|ZYPx(u9%vAtX-WUHo87UTH_%zenAaB!17}^lTj^fuULdT+ zc5VuUf}-R|E_jBL*=UkO@`S0vSb$}DB`57Bfx4EOeE=`Xg^WpY zIst4Of%Xn90Q3?CG9}kja6*8tv&7I#Eog2q_m~m66ooN>b`#|{_ZZ9@zuCaJ2^*sO zqb>dM@bwwb*ZL&Pf7`utUn(~T(`dETTTUt_d#|GvPt72F3ir-;12_TIuit#P0wM72 zS1CC0TfAfNj)!mkZg_8I)aPosu-S?WEVuNjR8xw$*fSM{VYo(IZIO-LG_BKZ9P?|{X>7L2+LvP7 zj8Z>I)YQ^uXp3>XE={hn24CRE;~g^-)c*}Q-{!;3HTWkmuPg7->kVUV(hwCqo7!gr z#=$^5=I<|iEZ$+iwfbc7$YDLJX_>=J{lr~3nPOG@Q36uA0MGds-cPE$r zk=2|}r3kg?Bkp+bvGtJZ*@TDKpS$F&^lw+1cd7Fp)^z`1bySN}=$N22#1Q?1LzIpB zMvD5`&m*MuqDS}9(hPCzsY}=)%3puYGE}w{p&@8)j?o@dZi}U5MC&~7cdkbG5EOO@ z4))5g-R3{<)RlSBxN@pZ68BF}p$QAIU^H6#p#Ovo32fdf4bTj^mEMabD(X$6rC)I< zI~SF26zH~9ammpl$@j{S3*TU#VgICLf~$MPG)BR#t9N@)S&}e5J&0d2Kpkp68xNux zvomkjqP5G5j3yjr-2bh-$!&_%;;w_#`t8I-E#WM>g2FNF`3nhfn8ejulY7hU0#7Ef3sD>4u zLOL-#Tk7*7ikOV`ggkcmM164;R?dm|6rdI;u-fekmM#a3o(_xxFl@l42wG|0aHY))j#N1GE?+I}sgM|87^s{-j!GU1|HX|ZWYcqA%}js899 z*4@fISj8hQwUnJ!m){$u;XTPQ6a13fh-=};g>3#GuLG`0HAw8Ex#}(*Q}A&Dr%J}H zPkQvc9!G9~$7Z|s0mm8>>K)7`f7m+EJY3Hm)(Lb+=C^Di~8F|#|Xzl+>;QMTe36Vs{ibGh-OycU!jAj1> zpq#hVY8m&gsjN=9nNQIR*+e-cWK*lLh6U7J zDJA$-u|7qECs2U#Z)LO@eSzE^dsm%d_?(K+V~C>Q@b$_kOvcnI9}_hF>1v|-6_ugj z{G6yHj3gZbI`oXuq+_;yZ?Ifc_PSlJtN^pwf_s@Uu>?C zM|&3@@cole6ZiPmCX{`REfw$PMl9N&3`QmG-~1A#mX{Dpg7k16Wd;jp#RBgth#r4pF3sqA(g>Dpvoo-ee+!&p?j<;p(rG zN#!#9hT)tHmJt?CF%?!S@(}IiwAj{VkBvqABXaTgy5?j5Y_6$VE7`;Y>Qw~`|U8Q{&G zk=Fr|3AZuGx&%vP@uNm(89N?M8+wZI^jo@7J6amNIBN9Dp`R6#FoceNdDvK#iueA= zQx7iBiEP8Q?fM`xZs;kl=2Swr%e5#WYK;FQs(O!JaHW8vj|_%#BcU#eN8Osz-y!Jl zgyvT)gB|(Z7xZ#(`%^akaehWG5p0}Y_-qHOvjb%~BIj$Xgrv{i3%)`?Ci8YxBkOiE z9V|;himHzR^)kZ|eNw%QT$PY%F-fUjYo4?}52i1pIQt>v&1i8dfH!IFcY!uRlC3{6 zmzq{6cdVlZq5=Yk0u_mDo`PS@L}AMsP>02@JKk64Rppe9)q%^a&@8|x$wlM`GUEfn z0`m2cEU%!_IBLTdBG^J?j~JMFN~7zxS~XVSn%~Jh;v06)(6LM1Rx=T-PMAiTu?e#f zGg3i{hBeX4ikjLWpf6BW64V#0;ou?n5Y>F{*02eNQR7cAteTJb8mozXCwk9j)uxjN z3#8mybQ4+dP{D@Ot})29Hf+^W5pC~)7z&!l(~Px12s}*tiMVkmMSi3TvY(ZZgdqvV27nzZbt>;bL?_pmqz}>`jhsq8qP_y z{r+WDS(Z4hmYp~}pEJ6Vt$z#6YcLdYP)B7cL!ohM_53rurWy;~k`U&(n}q6}cLXli zg#ya9%Mq@6^ripU|BMaKwNgo4dzENY7}aj@cFo2gW;g^WA}YZPL~qED-&Lgmsdh9# z(4EY#WcVm&wN(T4TbLG|Ba--dkHT;XDX(7rp#A=c1^s3+)}chlM+_^)lCWJfxTN_2@oulMH*p4bf8K0;|oc- zK{8@_=Dm4Tu^(_EwUHame!5eYSF{W-YN?F)DV!X)JjwA83ls-@C{`JxK{A%8hm^4& z0`7yuUw6_WW(#Socz0!ymq7H|&F0ZrtFLgf&l)PXU-Z;84fx=0 zVyK(ZIr)6bITXUrpYtl1OIzjX43eu%owL0yD0rLwrn&!ht@EL5!Yx7wOkiCvK+WZ@ z{zny?C<3e-3vL&dXxKQB;GbR6sGE_-bAMMIODaTl{a`Q& zUU+>!UK+4*H1Q&o+1(LgM%P)(vSWlFoRB#v7%U)`K8n_Z@mYfn-XXdY3Y!Fbtia9g z*8zitJA-}>gOuIPV_Gq}vFC}t!HwAcS6;>bIVPulHuNpbaEFyZyFO^uox`AoPQc!` zTSEdP`&dvOi+Ngc<%kN5J+8CAwd-lJ#vWX=rbcgs4T;x_gTzC>Ql3ten!jtMY0Z>t z#}EHF6aHPvd$3SR$WIew5zZ;iM8`_sn@_YKTEBkDXKnQf#igkcxkIET{Z-`$cB!U8q)BEH%i;$-AZ+_CQ%?r_yAdPf4)2Mya&g#=5& z>)(q>P%xOHN`;H%;IEEg+dL4T_v&yO5bQG&wwIQ_riU32pf-~H#7)6GmLr8sG14kh ztcdR(#d<-SKIX;onvsjq!(1fnG63dP5c-D*zOQ2#i2>o4eMAaZUT=$Dd$u<_nGoN< zM(Jb;JS2~eBz7A#Rl!~CA4qA6+a04VwlHPKMl7WK1tS&U@1tLv^JgR(197Bw92uYp zQgQ+=^73JJIJQogKe)3sKArc2@j++v7$dAEV1T%GeZ8lbJPI611lZnj6zytTMGzT* zJN6I0Yw4D$uDk)`NGMbVXV{a#D3k#PN$G1q;cL^dJNH#*9(G1i1p&1_@9Bc1{cx;w zVgNVuH8@$B@bg&ft?t{M-m=P@oK{L|oef>wa68o&I+$HQ3U_D!AQn_Zo<)#;R9B-& z>z6casgdfuc*f?`<1@dszx&||lVnNzge=>7pdM5#sne;Ruy;g<3!?f9g*!pQ*`gC# zoPOT)LQ%-25Poa$$qx1>I*RRe=;a3FJe22Mj|1AuLzu%cTXc57_X@TCyM<`XBnQ>! zoYwCk1eFA|+m}@E$HuKNF7vG>{p3s+PzMHxyEqT(hHDe=FEx*7w^uOOd`()NwAQa~ z9MOe|R$=C$%WQ@t60scgeXGxm(Dw}LK~-nhWsGZ_?<|$MfbThe!be#?WBr zI4fCN2i-%L1we@?FsdElMnF-87j3EZCHN{dhmZ|+faQ;mY!wf-5*TJmM60$x^TGdp z6p`AHS~Mz(w56Md8IKW@)mKC}+Cx9@i4x%BVMa4On>8CICnS`4jfSS6@89n2+*U^( z-IxUsMw&_yd0QJfrimI#MlzOQ%($GiPyq!-d^)tMku4cdK(jMFgjlf{{JyWugib3p z4*O~+PVs*0QS=FeLvLeh7@xBN=9(!*LJAx<+&{kjP`v$Z{nL>?j}A)Bn|WXQo(fr2 zFc)p#F&Duu5T2(kXAwNc8?-@&5`2>zM={P>8KqT(~irt0KbFI z>R6dM-V%GDOdUXgMb3@Nei)N(SlbJ3)5>-~YUO2iku_-Lo}UxPc>A=kQ$8CGziVO! zCSecz!-N;yVp#v>w3j*SZ513#$N&Ks(a*K;Jyg^51qtGjM7rHICD6x9CsF;Tb@(BC zqZ2tv9_hKR8<2_~wBd7Hh)xYoWPu|x#8_B)JO%Xl#KJ|zVaJ3M4Vo`-N2SeTZ zX*=a!dxMz2i?F%~AzNo$OVEBkwIIS_;gI5{4lcwOpm+FpcjvQYWuL7F6Ya)aWekoa zitg$ChPk((uJf2W;}o=2)&;~&`o^e8|7jbd6YdQO#ekrvY@!&aBq6=qN9LNxVk%Tn ziW`SDPDC7RH~%RsTD4hgj|&JG8ur(K7a{jT`Y%A_bgDz`xi(%e#wdXrLxT^*cn8q^ zeC2^;zZ^i`(4_y^z^s~cK3!SE-`JmyL_g1JDe>}tT7soHM0_O_O?9xEO4`MNX~4Wk6a5_KN4`iXEnG~hN`$(x+utj7K06;j@KQ$oWRwyZSz!*P znS2OmRnb>V##CLeBvRJCWd~~1t3FG%7Ph!4fzXfl)Y+v$(5jkKW!*vv<#t3*dg+COFx44e~GFqE55sB&kpMW!+w$6 z_7$JFT&v9{FGi)&Y|ahFOpqd-pE+O_d)fi@t?v42O`*xpG5mN7TkQ|&v<~-AHYc(w z_#SWO7E|p+X2bV&)fukY9{Ok6WjNq~p>Hz($B=$YjtRoYlEYu)l>JD2ZMg5Bgpo+- zZ>W0KB&a9x@jsl*hFp53M+rnJsLsWEKNd)D{)rxRAp=Z8t~TrC58<57)tEvUqdzir zU5o82Z6*Dwd?+GC;|0SnJ10Ef6tC}Z;~}s!wWN`Zipkk4(*B53J^MReCDRRv{vHr> z((G)c=my1*$fQ3>m%GD3m{ecH6{IUtm6PE$YT5%#B8H6jY{rn@rPzFIv~!Lcp>_${ zd2^Ez-Zwvu`BUR)gp{^NW;@_`<;*5*!{W6^v%%rH|P!twD5%{p`riW%~p>~*m9!GUigTDJ|IS`D9TrV?H@Kb zwcvWw^5WVQ_=@2~J>JxP(K6SX>;aCQ*^iaJ44sL&swYcTSO|_&>yig-VKxYF{Op5Fx4iudH)g9IuLb{v4yVHq&wFW-)t}XqOR0#y<^kq6>3*=PI3^N# z=~g~oCj~^)vJQ~i_}jM=6KxyS5^0V1g3BQT>?*~wW4gxjQZ$lGT{y>BJ{b(YVX)_X zG%Rl(T^J|xPjQBMHGmpYtxXnTpeCoZuTSG7tu{3tg946L6{@R9-t2*4` z7KjSs9q*=ezj)HxPx|B*<#vi>9b?>-2)0@5Vj|V;dLB$~&3|KlnXrJLmCUqH&Af0J za|g-khn~DXdmXa`1#oE4%6BUIaDgSq%GDwXsk~`moVB$~t9I&uD*w=40Y)j&&`*cx zkifh*>OL>y$4U#j;PP1tC3NQ7C&bcW78Dl2;~bcl#~v>*7u^PFYO5|R;PNWv@Tm_I zs~bp|FA#k;R3_PQ%^1Y1Rp~$E|7)>+AKg>b2GdBNowp;m*?bUE2#ZdhaJ!>A?1p;OxY}?i7aQuQr(^P@R3_(lJ(f!{UIhWYxZ5 zL^)=f+TRx>X(z?J`$ixRiHZKCz`oD=GQhES%^co8y!teUu$=4OWUc!H33`job9VKp ztEwE28k^U~iDgi5W}@;+WH;B)in^9l-TlMrbT~y0s1h9|suU{lEH5{E=T=jutW60Z z5jD=c90;VXT2NK%nU?8yyQTbg5-MV9hUqXhKJOkkUgKHv2`gkqU0BzvSh>6;>C4MU z-g)x>X(GmQ*K3_m)Rra&7*bj%gPee!3=#rr1XXJ4RnCJl0VFLzle3 zkQXKI6ykbRN5RsqIW#MtTg-jjGd?EEr@J+HDCCz5n5rYt*)3}#7bFN;k^?rWz&ne! zCaTIb;6gMHPBiy~#q~1aGd`SCNbl3kKX2wRCW58ODfO)%uo|x1=ZD zfXuOK%dcsrha5p=?z3W0aF>=Hz>vR3>=q_1)&^$?D;fhBbqS~aE{!{*gJDB~*)V`m z6hl}7KkWp-ze{&|3e9X5zTJH$IYx#UOuAJkl)h-WdJ>q`84^%8{|GV~j}yvMd7>=s z=lcfWA)FV{q@rOlNX6&kCcl7#E7?N*c1f0A+~7+pOUzt=wf-|GWcb0#a|*!U(f>Np z$IyU0lMF^Szj<#8TRsAKuL?)`4i#fkH^0sfg10k z=^wY|7J9!ne#!uAAxTj;EfLWJ1F5cLhUmOlb<7WU>i-$ye4vsJh=W`f4Q0N6IdoIz5@J&NL=8o}j@FU9JNGu*9${!Gb#KN+~U zpKA*pZ2D>`(3H$caN__B;E%zB2)(=?r|sT;up8Y1Vt`vI=3mtf7d@H+Gt+CYa&3@E zweoBXYH@C}ekmT%&|B*Sb!b=@SBcMK<;>a1KHXsH&zCpn!C(>}Hs{BZOe7jkyWmNw zyBzxEZg@8tbkr2D{QkkYY6_mzeQ8qveIR_JsH-2#AA8c%u&V@bJVnX1H(@&Ec=Yj>_dKsONQ-DD5imrEFHy+~nSd*3FRrcq&HgJ>|Dmugb6j1`@~>Xg zqXfS^TkpIs5;j7NOGhNzpL44uWw7Ao?9R7>q`TuWNb@F(Rd@A5%Ajd%S+mD^=iI`9JC(2U?n2@z{r0QSrRHtBm!;Uuu z^~{Qb5)aNSQ4MTJC7D@MVNm;zv7L-NDRVC>=gzU1UW`u@N~+nBOvX<1DZ#|B56(8vPe`D(jcc-!+~rHXdZH z)}^sA1lql-1HRySza^ZB^H=%1BTYy9-@IipkqF(FvPHNirq8thJ@niugCE+yczQ*! z_e)b*6i?ZCJZ6q|oLKZS5{JH0txj1Eplc}LIk|Mhe-Zt+Ob+X2Si&*4%q&A8M%4RN zh(Sd*oBofb>|cObih0qMoviJX+H@ye(sew05Mu=2KH*w&WMYngQsilq^@9S_W(>vT z<&Clm*gg*bK(2kdr@!){u{wzA`cV*%VPZ!s=O*AN*=MP!vazW{8o$KZR(!#WfASRK zFUsR6DYEkH%Eg;&>QiDJ;Ns!598#1ard~hbVEj$eBYA5;_BAFh-UsGFA$T!D3$h^YUYD^*XE@(k4AC)`*1v( zPeOIKPzGHe;%!)cRVrn>?)$5M<{$aFxmEv}?Q+)44SJKS-j}k#fc4CZV0Dhd=}(oa zE6x!e(ff9EMpqzOW#i$>PsiRBB=>Zy_cP&os_7@$4>$g5prA`bnSbO{IXak{rZV1z z)D;+@e7s`V`On(tyFYjgEKUS;bJWlE;mAGV67$jxsE%t3s#B7_XGr}wvW}^*1aDZy zDQvJ-Pr`fJ`_Fub_p_Qv?ZrXHVa{0%SFq371C{K}4cOPiIt(Y@dQ>fq_aXFUo*4Ro z@8-*-mqf3<8~*i&Jg90IoauM}$Ul2LUU6UfP}8N)VPh;`a!kCvSSDa=@^H~|aa66C z6^KF9u@knVZwSh1W)BUUe_n2rtSY!}lSERxiyu!K+2IZa`LrFoM)~P%D&f_dkyD(^ zcttOotM$lE1U)K+{r;2xqE_4D4g&hN5kF(cgh zx8ydN=4e9t%xgvd$s9j}-GH=ahB&B>?|&QR|D2E-M8Imn)gE?{!|v|A8WEdu)>LUa4uBDs$CjxnzO}gFsc9K?Y#)ViBZT;{ z`-Me^2f}l%c`TE=a`^HJOAJMXZ}J)MWoz(X^&cKqmMg0TBmxrOr|Q<9(wZZ-c*OMm zn2!!*D=C^zQXeiVzKI|Li>Xxacjga_&F>`eXk;$iKd+x)_pNHoaAw=&qrffC+S6E9 zjre>`OCj*$r`}qDt?!MhxZJfW;bqdF@#=j5+>U*PT_kU%?ZpKGAIWm&p(4`0e8S!lz_gs%@6oGM;#v zciJN}m0Wv?_MdUe9MkBu{?YvmTyKy1>-i!zH#*}cI`%~KL&7&)+rOg@5kHgEFu`Q& zu${WInz|L|TffhaZ~uLMKx_Nb99zOOXf-nvlVcbYxFiYVd8;xpx%d-3f9sw>K zf~7XtT)Y*EjhtX{SM~@eHFD8tn6=^7A)6m=M&A^tpK1Qybsdu}>#v!dlV&0K*py3b z4C`A(N4Ckv8q(x9i>{8GkBf!bdQgM+Uh4`Ki5epdf9a=KCHA9iIY&1U5|~dqH_w+V zTjgEV8YWcNIC7X7`;)Kw1|;g71-<@N?>E$;dWF}oVA!OEC@dW6<{nBt^7c7x9uw3C z5gzn;``>c#aJ~Lvefgeynru_O?olt0c?RIoc!EUM>$GbhnwKISIlr_|ezHY1V07;I z9Xa{zS96uyW*IofSQ$JAUqRrbDJn5&Z+;++dA9f9UGDn( zb}76ZWaN#whg9>J+TT8v>cW=7>!|i-xtL6JFAa6%z9+?1&?8uCf??5fxAy%)50#F( zp8_7HL|L^FF?PQ_3|HFBDsttIKPX``Ty6qSjv85?1!d~$@<(!N0oi3{lCvV+Brasz zathVP-7_j6o~zOv-hXJ{Jl!7~keeYsDCW*I+Y0-3SGXQL;;CXOt6}7Hmw&Xfal716 zPMaXm{?dSK)HYmrud6`p?ibJTqdjTVuvC7=H0uTtLJ}H9Mr$W7jvE`&j|F1rt0$5u zZBk}GylDz;j{cAoCN3{8MdjhjHl9D6>wn^fZTUVe2^dElTACGi(X9s6QL zf!B0}?3U}VzE`LGKO=rGJGK1o@27)cZ6B~7VmyHOI50)R(B;R3lw3ydy!wr z0C&J}IFO@8#byi1Jk!p*uynZv`PrM_WyUiRA1Glh6IGI5kt=}Z=iMNIyIeFE_O#2Z zvGEQdbmqt8)BgG|c5MSeJ-AHq6BP<;+SWlwgxJ-Vyc$Lf@e@4GYo0lC`(Ki9@`9Dq z#`w9#Ml-qM66K$QaYZ^#5#wg??hln?dDg@js-|Ov>6kn3M5@d=La|Z5b6ohPt zxlk2(>A*bYEH-E2)e_=^y-3h-2U81AEqczXF*Use$E-&pCzN{>OI@vy>+9_N0+#9| zi%QVK@5j?(opz768U&D(dS$z+4{;@X=f0W7M0=9-#FwrGFRN#5zcTAcra2#O%*Q&a zzo&Fdq41m>*iBV4_;}%U2Qcz(L-2?UNAM7x+MKy}ma;MVK0cLS3RW3w;1#svRb{&o zRf;|5w*=XwIZsGMHD2FI6HHxGHt8)dXZg~E{06?{Z^!IMxy#c{EL#8dUCbu?b5vHG z9mx7DA=kemL4&qWy&{Lfpgq&ZuZ=?K*gv}3b0a#y$HipHgu*#BNu+syH>1M&tu1c{ zAHR?HaTQhK}Ogm11?1^cQIcZ~5@3xC#+v^QY*Ej+x1qW_l*+cVGv;P-&wt zO1{A zYV3Ygn#@TPeG?%Gr0YV9D@RYZV>l8GmN)kKwJ>WX9LRJcgE#I5eQQyGcNe)2w7fQU zt{iX#3B{rgRzmjRw9a%APtZE$FOT~96;c`8XM$Vs$Upl(y|VShKj2k;WL?yO6)!S) z>&ZJR{&Fe|mSGYv`AekYnuXfNYRl-!^%Jx&kloFahAEl%edDCmim{)8d=+$BlG@RA!k%?BuDm~C5P@IC3;LMfZXkZBuDw!<;!`V?+Lf8!+sn7) z8poA-%K6V9Q3oehf3{bY{4SvXyWRd4gQJA|VWDR;XH}q8ztpzSUn>-c{RTv;qjH;+ zZwzF544VGl+^MVnLmJ(CFIV%@j!d4u;<@B0fVdY8viVU@qfmD$^npz5P(0MD)u?)? zm`1=Ujd(Mr!sw+ZT#FSQ{jPT^cchD6!s+wti82vl?iIDw2uJcF4|m#55z_+!n!4!D zbO+K+-xpe5&h>+?)K!0?bCsj#17QH9<7e?3o|+rPr?lFFJz?M2+OW3Ydv8c=IW7bN z7-&?!3-$S`kaqjFEq5Sq(hY2};rs@4BpTYsr;rj4f>h5PoZTSDqA&u__d`<2o@ksh zGLG8BwZG{(k9MbDNgth-MLqvb8DvF%Y(SlX91F>4#jWl4e8E952=tFJ8%owKKSR{N{FQ1!@2s39vvT=Qi z&Ts5~c(p}>XCf?n$0Xq8STfD<35en z9PTUD&&!VK4E!{UB$nllBnFW2@e6~OyQw2I6p;Y~PPb^e@8(Ox$RNLl#WEqkgk}L3 z&8Lr=;`RcvEF>wN8wSGVd1MsV0^cmqd$5qt+-h|n8*Sklszb60gTy+}H~}IP6-kOe zSGqF*91EFkeJ?NJix9C2N^$M5G%XmBj>=(va zD&(K_EwK%T6n^~*7*h>;sW!dneq6Rp!?Iic67M}0GHm3C^7Zsd5fu@&r737t%XUA- zeaPg!R3ve8*+T4v7t9aQnv-X}Wxc+2VBOoQ25=)}ZQgyzhrnYMu$q6_a^c(d)+xld zg$43q9KZnS-(3Zt4g*2cWMlk!V=V1P?maiOi=hJR3)*?>&(d`9=`;Jp^lEAVJ7#jJ zubIDc4MzKitv(0S2Gy-MI<-rW(VbB(ltu!0MYRJ&#Yav4xd)`?;mj=}5!Va9u=-v2 z5;8X=_7V40AL20t1Yq=>4WIf77Ta*8WtvQ*WufOw8mk#Pk4;Ci>i_ko_l${0*oYiN zXZZy@ZHXxRE4S&k^~4yFGh`PR(+o9meXpX9Hp&|UP_VK6oADqia6@ZAZbbEVR#>)D z)Iv&O%nBTLrYHAf0EmPxI)u(fbkk{Ut$81N!y1NXf3P#3PfS?lEK7eU371q;D?Rs( z=8@LoUljS$_M8kZPjD!p+W(q+FwqmrPud{sXsdraUrY5Tp9QmtjY#kal<^-=Q>7hz zj1S|g5+5>o!u9+9AGot&S4`M^H>G~Hb4`4~g zPIiBzz86E_X(qO~=n8{TNn^1G30b&H1J$mz%1=BB|XE(yg-JuKog}d@qEJ{S$T@ywRAFOn^+x(tj zkeKPSdpDARfxDe{TjstadjP7S7a}`71$4w>gQH{o35msr8R>_sWdGc|Q zNfnWNd1J{R=49AGX%?Kk7z@eNcMBY@q{Uc0xrEZcYJ_;+g!59thP0x~a?sCe6IBjj ztU56Mv-#wT?7UES=KQ?ZT~*$->hVN`FAl;Ujz zHvFVfO4y|ru*My;kwp}MyE8q=&%A7CAn-u`*5HG;x7qUXYMO3GxTuPd9A4kn`gu(d zhf3E4g;un1`L8D-w<8EJ$@b^4Om)Mo{51G%1DN!3*26)07jLUIrakR$; zYCR7LLq$d?Mwnc+k4-OE?ux=mB1!&brvZZZLc?y{o!LrB>ZrPtPz%HGnYfFvwUE(; zTjhuyj(!*ckJ999M_Q*i?d-KF-qCZ3Zog=)s1gd1dIOo4Sp1mXAVkp6=;nhld1m3# zkGa+?&9?H$Um;!*W>=y0G|cJsYc`yweg;M!pt8Y<&na`_B=j|8jxdRdI0r=p52n)0 zM`06FeVC#l=j%B8R|8+nbY<*@p<3P*c>1$-;GvV+uh3H)lj?Ga^Y9+4G^!%@Y-C0D z>9~+74y0((gEtyqy9$0rz)BI$6yRT~Kb^#>V?*E1s;3yAIn>~-PVKF!FH^c-OSczZ zv&H*EuT?6dr_Wy(Pj2P(=hg|4bmHEl{<0C05V=Ceqt-er8_<faGVwHl{h$R8UdM|~@!m{d}{4F;$8TZ=3%26$Qp_k3@gksI)ZvkI;<6AENRO@&U2-L{*e8Acf^fMO?;#5;J@bb_p@L zw|t;Hl?=abTL6bEr0@rYEF^OdllbuP(miaGzx65Yi2mvuPst@Z8Wgw;Mj!ht^tZyX z8mUMwd#2t``E#EsOcvY3*k#kzKj2X;43t)`k5bqgl{BOUrX+BLu|25gGAS}kD1DIR zNYqM1W@%}+;WA98fVJka7!%rv#QwuJU$Sl{bD=oDieL!yxe^Q28HFiYGe!3f+vpNP zg;LFbWrzp7;?XBZC;XEcPR2Kk(}vG5Jqgw#4`XkmHi}YE@BN$n(`ki8vDWQXNP&Kq z0rm8s%*i0xxiRcFa_{B>FyDz2RMAQhK#HJVd0tym3zufAqyZrGNdB)$f#K<+ya#)8 zKFjazPldi@J_;w?erUR62ClrD!%>n2O}|OQc&oO9DA}5miH6Zwe!&>A(I%RSN~LQe zqCE>|2rCz;LcOoAP5~QzE(L2%%c%dp*lSK?f5K`~&Xofd$&PJIl2GZ6e&KqqZe)GE za|yL-{`W@0KAecv9r-I}rB9`_lrhKxX_kpcE<0qBu*K@LQ?DRJC9d=o#t){df3}EQ zFu_6Km`RUH30!U{=+SU0u$PVbS-8xeo0MhO~@0oxGD%?@?t zGqWAQLNW#)(X4dyabqUND@Oux^lFcu?qf&?7!$b`4()zkRie}>o%GI+nOK#u8?~M} zSO`{GzgHJ113`3YH|PRiH%)r7y>lIG>a&JxVDHJ#m@WTmPFldiq1gD7ATTcH_0F*) zd-HnHqzntuyl`oPTER#i0Maaa4`=v{L}7NXpe4U|Cx1u^wbbR4gC-8I?CyCiHfAf$ zm1~d`X;0)K9}6IbCMUY;W#a6>^+sZ&LR4>C22`ckPHt^H=GoJmvHz$co~}blk&a>8 z8)%Q19u=_1&2662g?-%D{q!JntG~}rPwX*%(nB__;g2^lKU7s1?=o7XOE?od!9>+o zHS#xQ8=zHI1*d8%x09*lJbzi{!;vGYVe}B9F;d?s=i=^&3oNsi`ztXm@>rUap!Od< zq+b2=KUCvuDFR#LoDAngX?V5E5}8Qj-BX}VZR*$X$sa7AmiD+|wfDn-z|tFMDV#)y z4x(5m2>i70<8d?E?Y)SRS4`6VjIltOOTUmd^$zcqO{|Mev}JLYp6S9GC^uDLWR`X7 z`(#A?33W!ak=M-Y1disMaeFMK#aUmwW0?|dUaWmFf!`dC@(nH1pcrE%T z7)2i^`I>fm9N2;61`w`xu=mR-_LG`^Wv1zwsRVlp1M$QUc|r2-(h3h!N$(~cgc!NJ zOqFf}VzE+8W$gmFVXdKWZuYw@&}?goWDuC3l2yK;X!_y;ob;mg%SQ9F2pl!%tzH~( zM%Kc}TV}aDq1D+)PKCFEs14!GKW^86<%%RH*!8al-~oN_dAJH@vWJ2|LR54TK0=@7 zcgqVP`=Uwz4#{CEypvkAvfeutO!--0MMCGAwxSf5s;z6i93vMTDCl>=LeiU`RxoN%0%>olW{{De;UL8AneV#pzXko9+=LgS^^A0xLzoN;8!{H@tZxSg0?; zeR=2q{OMRfKLf#%?(839!M>*Qe^B;iA(3kf&_cj*S#nic?O$uona))#pLik0NQ-XwDZjT(^&%-ySD$eTQF9X!Yg0#I3u< zc9WpmpSpJkZ-c*2U9U1wn|^NtB2W z=jSKHn^0B^vITEQhEyXoWewKC+r(d&Dy03h-nucuJOylirQ$qTTyk3VZjTT zr_H{R{}749$}wfI$1uK8eh>j6XgZTnz3hgJ#4UIa#N)?ZqH$pCZ2#qWYr_>ld1%d} ziZ-_Rmdl`KJV+`r(qT%MtrRn>`R7}jkVg%My$Y+R@zQlpTHCPPIz_NaeGK2 zLXGj)SIrdhjX9smJ^+tkpsg{U0`2Gd|B{Z~OLZ0P=Am53w+pij=HV+{N{e6-uJbCl z_weDZo)Wz=@zP{-Ubu!DUSiH1_HD#QN*WdoZ0gi!9CSaxn7 zS;FEm_%dZy7XO|AY7jy>7cCS^;ZXz;crZmP3Xfu94jLhZfF^#ldaAF||Mx76$t8$Q zU(o;e2q2gXAq0`1|9Hi_6{39v5C<-le!geLy96)?LI}=_Cg#FIi2%B)@Z!YY)dvZn z34{<_#I@!QVssn2#|023;a~yStO`wy>^QZJsB#+tbPNFmi$e&(ybwgtIRp^21|b9s zLJ&dw5J1p6gb*z1mhC4;jInnTz@iX9&>n;kv}ELKr#7((@5IU5FfT5YFa-zgLI^?2 zzWmj**UlEE{~A|>LnGbfEH?Oui65;#LI7<-2tix)E+XQ}E(8(OOzBAo*oX?9LI^?I zG>EJz|21xB%{M&_TMr|}Q9Q5|2qEYgCg<|YvY9wlIP(&2N`<9D2*Hx*QhpiSP(P=C~J%!zYU8_M!a- z-G&f?t{T~SY7>QSod{J?Cg}KeDEt!IZx9!R5Okfk=fuq3#%wkbq?eT=bXl>4={JZI zLI`4mswkaM{eVvhA&3>KqLe}P1D+v-z>DG06B`1NJ5d!S)|B3=i=%hIH-r#)g%(}1 zMCZP7FmbYY`T!>1pcfEA;2m0Y$$(Q2APEpc&@%|5-VnA2d3oQ9SoeV>KnOw4A&mS$ z_&^dNgdj2MVPq)yJkFx)4qfx9aQU@hMgKU$2a*UO1c?)!MOUEp7+~le1`Z%C5JHe> zI@(PYTu~1u%e2CK8_&{|`^I~xVk*ZqaQbEn?;Kls;y5ZD$RmUh z0M%M~L|QqmCHPjFS0@5JeARP)wcL~xBLzjR^3P^{92uMmx z`rq++pI6>*{j(Np*4%r}KKtymd+$S}x~e=L4iydv1j18zCaVboVI_k=C?B!z0Z$rB z$B%$7Y^P`XE+7ytG4c-ul%7ceJVbHPl$Qoojz0Ja{6K#xr6L6a)x_dnn__@KO@s=v zQZP@H-5aAg!>O!IpFcCBtP1=b@3gTgC|ojs2W8Wy=L(7vz3nG2fYolrbU_~4<;a}7 zvMJ$h`)5-tY#6G1A!aptlap~z!R7b?noglA<_7{XBCL5LiUu4gIe!NQzNRwot9f!p z>;^nUF}YImTUe4$RzsIGCeR;SE z#qzI^X)aFhzJixThnC^~@!mdA+61=x-%ntO7V3HgUR+3z%pXp6_FJ{rpF6*T7t6Fg zb&IMawBYTI9p{~_G}m=_S?Ds+f4)zWyavem-;bm-A-k02%|OmidtKa={i*Jcbm<&7 zY#U0?DW3(Jpp z|9)Zsq_)>NlqcSj-B=P15~$@cw?F*vOW?cr4FItR(X1geA}>vI%jJciQ2$=;`ThE9 z_3)mmF;2{XV+qNFpwFHdWUUYW+Wlk3KPfL;QibIWw@D%1-VBobCd8*L%=K?HsGPVP z%rH?Inbw+~=c|NyL^7o?t!90rn7b~7%J^?w;3-5eNVaCrfkDqRY@6Y5B7Ye+vPy21 zfc9^U9xkvlIw~~V>Lw)sGfSN+!JS%r+qng8tf8yH$2<6@GG6kH5|WwaI`GVWs|C05ngphwA9QpLL;A zoKl)d$gBWy;TGh|^WQ&-oM1!!H!zTp{WT_HPep5pNMoBVsJ9L!LGnbP#Q4q-EOaL; z-!H?w(GQETk_y7fn#)+Wna(_z?f@}-Z-$+zSE&j1RZHy9jf2Cu{-GP_3%oRId@p=_ z;+zDQhFZ&?g8xnZEWnx!;UCggT*tC^tc~1;{(BWC0b`e9|MX{VO_xmW1}!gsw{}WN z`dH*!^UDo`JNSLZU`;mZvD=|8oGgGyNZ%|1TdceL{z(v2uTkQHw|#H$*R^Tk6H@l0 zXFDD^iue;$cQ~as+5~&r0!e)pn*VIWU<2eVPI#m8@h(y-uR*r;H$T&S$dNdKt=_c` zBb;nDd#mV({-G|pLCD^nzPreK%+bL7M>}#68py8AG54X+%U9lQ!}=d_K;}3VPGbVp z57ZS^aK;phb27v=ymkHo0;Ne-qx(@V^B%uJ-(EmHk#0i&_mT(TBJYQ=AihV2ceab1 zVMN5*?afm0T*!!xhUDJ_NgE<|Dftk^YK;)3e@`Jxs3`LgSdgGqVMjwf#~tJ}Bcq^A zD0$#s&dDz-Im}{g|0V^(==Fkj{_c>b_z`OFTPN&)FAMOy!G?86A_dF2DT3r-6c0rG z@_$GD8v)V;cs+SHJ+;|ZV^Sg&Z;cb>0gg=j&T!&pBYy{_NEzU$^lj1}jW}wIpugf>_1`&_cZoU7@7M;tm zI}pI3CfNK1q&yn%0Hr{@F}PZXHd{O7-+;hgK<(%usm2C7BBi;f7CCW_Q~eaaz81G- zRP;gdu3d=3LRTVe-BbIrSeD+c1$*3`J`TRa?Z~Avt+gLxH(Vm-#`eLv1ogfDPCjrQ zqKC?bR3Bt0#3#YYg8y)cdw{OALJB+${Xb8E)wl`KmB$jOE(XdLRmgOFRl>4^`rH=ny`Vhuz`a!0uc#Z1DHDDT?Gpv9Y4Mgg0?I z+oV$aEbr|9@31^znC<4bG{;c5--2C%2e$K&4hJQ;eP0bq&fBSkHdSPL}pwV!LC$IB?0p0g-ijCtP z^Jp)X?hwIKt`A&*Kc#e}5N){V>$V>I|L{#9IiL-<>q}FZ3ylfa!@zUyZl1R+cLB%% z0Om*Ad6#h-F8KjKuS@UftrhZaFahfnLDWNo;TOdZB3Lt~9K@6Jan_ZFsWFo{zm%Pwr$q%BVY?UpkK0Lhz|-VJ`FTY#B>!SYzY2^J)8P{O_hgpiv_B zNR7fvjb=#C3;1Lz-dpC1;eJj2=%}^V7Z%xk%Z}fa+jG9csq#Wz9+L=DE{mMok6%(s zeJVLGDthW3$t1#L+2MFrrj-9N$HwS)pE~{TpUFqn=f}PJ1yb-}ki>F8Mjpi2za8sWf1t|lj-`BRZURQMXbn-fQ#PYbc{doyz zTF!0}9A<=v*DiAN5s`C8n-o0gj^|{Z!cBruc_MaW7GVjEJ7tczZ%pzvy^>4n{R$=R;W1r8ZByyH}K>i10wpQNSPx6S0@uzGFoYzoPqiPABl1TO6GelV3jJj5w;2oOy znw@DJ<1suyb>1t_>VF@xy2t}wOoXGL=nRt|C<`8+>8w%LT=|4 zUwXkL!HKR2;2|t}t+SV$UeG%l`CI}#xTb;hr*3=^J#!+*Z>+pDA84^&qoCYzn-$(& zm<%}Q7C1e#^7yVI^(<4#6GB^wgymLkjpY5tc zBnKo57)_*`7)0vP!@s4ob}+~IxgCU77`Qq;6@6s#Pve=y@sP8Zz$947CqF10t1UdD zNQ9v)W2Kmfd~p{fuB*y$^enm$x{FzGT$+hO;ic4Ltf;G`Y0TjwIVtdD#^s=FySuy$ zILb-k()wL=Mpex9yI6NYfN07#9I=BYVt;-r|2~Q}{y!oY_~NyBSIjokR8Y$WTH$E{ zA*({XqLlruiSNN;VgYDq23{EUNiTfR5g$!g0; z0o^Tpu7onOiU;Xgo53=Q4!G(Ma7q>~%x!{MY-REhQ=D_^sHWpG(arns@M zT(mgDGbl%N05h%ceB04G1|^GEt6u{iqdh6jBe{U6#oza)=5>Ka@QR`1MI?J716=$x#sX7+IB9mY+9l$wUv%k81&Sa#>l9F&f0QOwuA$F~`)S1n@fa6$bi zukVEuee~nYllfdY6H-5`A}})q{KUsemBiog$MuCC#HtPN-Vqr+CMY(n#9y7gIO92K zY2v!Z`;rVm^efyH0uS5CJ0E%+*rP#OXI5X~Cq5~jdH(d)`N2$$ ziIeAaa~>D?clO5j3|3vB*{;q~Ji-stBwJ6P@a7R(jeoaUza@YXDNum(M^#i^F@T}u z{l1>z@1^6rE_1n@SrGJlfKcPIPANAX8AjX>r-9$!nswQxnqNB-XH*TMa5x*sS-~gU z*W_`6p~)@po1K1KiIlmJ-a$Z|0npc9bv|I7YM|(R_4bhZd2ScYK$$CG%xW|#bIFAf zNmlwR08CJy?Aq{AUn=@rsrK*2=NYMfK(6G!pWN`*m`ZlVvbJI@k}rP*&HGx8t;X|m zC4Lh~IEu9T5`2a_ZVX?ID4x8h1eYHF0W!nOFafaW-ya?c;i7(FWZePrrFnRFB8_ z##|r|+*BYJONuJ=5KU9vIWAdnAddl}2M(^Lyxn_r#koxX-_rzvoJXtyro1U;XH5ln z@l}-lXx~Jsh?@%>@&y?j`e)<;U>ms61VPByun>bJV~Gf2@!{1!ha4DA#y;2VF{=6@1>;$qI$k@xWYh~!BrBaY zOINWSB1!ghWxz;nM1uJriJj?_O(N}Izelo<*PzVnKR6G2bUy-GBO2IAU9+Hq(u4mU z452f_PL}0x3Y49I(-p(GV7>2=(hU>NwHc5^?N&i;hNA==P+~=O4C`j1_EpW(F(IiV3jdgj;Ig3xD@mzzfSEH6Q$Y zroV^RKJwmSwuEU?;Dl5Xq#M8miJIH$g~GZdYRFhRycBv%;@`T`W;T%T;6Pe_vhx23 zR9fAJ$$(}9Si=YXS(OAK=8mEhHoOyXQ;q|IKS0)Hr_9P=Z;m%?%(+}7qOOrq) z9}?#~AH*NM_#Jhv9^Jw0q!=kkkfb+a`HU@-x>)2BljU79C{x0RqCIrDU{9tLT|8siO^&dM)|qXEM}}JeM{c_- z;kv~zrDSnhO3E|=x|}CfVxkff%m3prnb2H1guWGtD8`mLAMyJc5j^zI&+H%$WFqDdQf|S3u08(qewcqLAeyI7=EElabSuj_Qv*R${ znRcEs;PPQ!JgwbS{FfA*zv_G%ij$Q24o`>WXRnUre+@&RKi;Xg6jI>;5Z~Z3h?-`7!$Ss=8!5+EDj(ez!6@YCpiHt{w~`1X@LSBMvya;;E+nmk66~#tbM(h?g4`W ziO+5ZEQ$;I!jy*3FB^mk=tu#jUcS(f*UVU&aXuIZ^4qH6$XbU}fj|ZNUrZFF?9)jg z--o;QZWZ13t=jq5uGjr9e1Aa|L_jzDE zt8}Ia(+Y|izIw4x75nDRY|+z`RDr6ivGSoXN=e&U?kGw&5jIeu+aVFF{$YDeDt27m zMw1cXjUSbLZ^-kis-NK}z#7X@OnDX7!oFM%=;=5`qhRRJl;R{UN^KRzGd;d9#{1K_ zuwMZ-6**+RPszyw9@2*7(~+F?DRUn1ss%tnwWSZlc8v~{=t+135ho8Y)OJC3J?uUU z{=)@O(1{K^nY~YXt*3d+g8R{T2VjN0H*W#%O3TU;L+Vq>7>p%yd|mX+$esM5Atwqzv^B$PLTu2<-t_mI}ErS?|`nV$wB@#!r! z7Yo;pmTjKd0F@mJh8hmY_k$Uu3W1zdf)MXJA#K(qcU(}HFa*tvarg{K?`(b6`OQj& zR4VJRev^UGAJ}KLAR*1TuA%j5YOW+sR_r#|>}NEfP;zK;{WJO;Yg#t)p&n{(LVnuk z@-WliHf-h}jRHYO!^(PMoWWY_6!$@rx`^7@vj2jN)REE-Y}2q&D-_=Rv5!_LJ-^y3 zODDK1*-|;IC{8)U8pW-LmDpn-BFen7CA_yIg6D;EjbBN->HgM$r^r|{*KR#m#gLWECh@f~r( zu#@ZpHPiW}LHwoV4cQMUDKB#M*mW>KwLtb01Y$9(RKZW(i5L5O5WRTa@j*}6P}ei7 z+yyf#*~f5Rq9uO5;AK)Yo;KxOpKYSA??EBVsnxWJIuiu(e4r1W0W|EGfQylHqAjwb zvEKIFE?X=+L^MKhGOG@J(t; zw=Iw<`U9;f)1M4DZihZCWr*3x0mY`E4pam)n^C>pd_eKV4zd7u$SB^fnmGLT!A+{OU{t=v04K9(Oj z{S>J>w09cOOjhz2sHqH_1U8gH3)Li2GdAN79brG}yFcS3Y|T3-$z02U5+9n z((faij+f6s5PyXCK$>QWtCOYWMgd4NDiyoz;@vwUYR;0+E0Y)?Zo)pZ8p~0O^9bs< z&CSiN7}VgfJiNLEYRkdB}Q*f zvvD=!Yxs4xXFhB-fUNhSVUs2i$f?Ngp6_!S8X7SMP#llg;BM>fH$Gm1Y2>jb%F)19MI7q$onAe99{G-zSmFK)?QC+`*l+l(=ABGcyc4%9lJt2Dfaq_PA9W;TY)A!S(dH@QV8#@!mG_+o=VGs z$~8Upe8;4#&G8a({z!>plabSr^ggwfJ0%Ah6LO-&Jr!dt%T!mS`2YtP^XBnEntY)W z;bdDCEh|~{3nYJ<4>y=7FrzTFb+Ib`jPlHdJ*zHIQ(V9P`MprLmzd*nCy3&w$p6H+ z1XwAcXBp!AAu$Whb8~YFfSCC49!wE$Sa4I*pPGdaH&P7dKY)doeg0SMHUKCAeA zL+m7ylZypYs*4ZF89Y$E!^0cYm3tW0I=wYoT7}2(6FDih*El)EY9B+{NTqgB3j>~m zx*kz;=FJENJ^^e&g)n}~EOyOaeHRMI#BbQgYN;)ScBg)kT|}KV3CjuCJA^lE_fIk# z&sHs{={1=)89^fcXvUu8#wJlUyt%55*L!oKNhAgvfP$ zvxPS{C4lqzGLK?{5=c_L3U*nvN&T){?jf3SUfAO0{qX?-vT9=2Ti_*XM{92|9BwK| zY83pJK+l@_jIWC0e6iQu}GkIXWGew1do8-ADA$Kv*mj8-#>trYFyj(_?6M>2dh1pEd&5Ro`RdMFv~S=Reb zb-VwiYT`F?H8OIE8?D#GfOA+S?rvHJdIqH)tk#woe!=qO1+Cif$jFjCBb&Tk&MRIg z?_trLBy-lMtMU0DNyXV04z8J5+&TQ_dmHax9HWIOfl|u z-c|4MiHNL&#A$%_HO`F=n|{+#ZdbGVjt{z| z!(5<3Sy1FfJw2Lql?#9a=oQb5FoMRa{i}1~WFEi$F7PO@7q>oK@xJ6`Nv&tDw3~+0 z+X@|?Kt;|g^ih^~6{wJNyDoDFhsr71myq4AN+b|T<@{v9EcjQ_5x&oq^Ug?_w707+ zUfG3m(5$g!WOlHGI2H4!RjvTnRb+gijv!HC5V@}|n}%Y5(aOld((T1EF(@Lnd#29v zms{(7h@tcp($XR~CBQUtI#Q!LWN$F4SyB(EBT!%>R{b-5(1|7)9qL6x7eYZu!q2zY zwjmzLGsS?_{AH;jP@;#rB0Qeuhj1RyKaBoQg=~$V#i-K$BX=gx3_a5I0ck?85`jwH zSh%9w=tW1qOde@W-qe`Xq1~%juWg{&e5a)I_$W=?ZA99fhg6(-HpmD%P*84$Uu~8^ zq^-cJQs%?o^G8|0*|bC%BRKB{7dq3iYrxxqOz?up+Bh;W&V&6b?kbb6lVp1Uvd3fo z@78LfN_lAakKzZnwwUQX0Kg2!5YXihQ9W?6Wo0lFfuWi!UB%&49$MCU!-fK47>sJY zqFTfL8!Ul(M-1m5@ToD0a0twZC4?*jn~8Jf*8@B|KfMC`L|a7(4F>^&gP@W@TYaWgQ^N5d5nYrWwIe>b z4}d^iQdqX|{m$BJ%H5^EiE~0;7bC3$qV#2e%duO4_8ACJZ3p?`$R=T^qUU#BAQSJN zPaD9XX9T<;AH8eliDhJZB@nk=`dG0^d z8LZ+5kU=kqq6s{OHH5hTt(<2*p5bR|nC=(m5E#NwRD`m!ASLKAD#}>O2dg0HV?cQB z<#!52kO{u?Lj^r6%8W(G{6=3%bwss6YMxhX?3-VGbAn# zEf^>1Z(euY0|x|2+SuIO*(l+Rv96#4+!7GTsn>8}IAbSfZ=zYzS%ZZS3OtiUC1gj5 zmmL_1cT*Je@!sALumI5_)8lz?1vB(~PHa%QOk@1`rTE2nw1m?qYle8;no@Iy_X^@02IyARFs)T?(|0J}0I zMd(|SBVp?=L09?P_1iTKKf0&{FRzQ{Sc3lPkLmF7_gR1AeCi3|4Y{1;*0y@nKQ9*^ zVO2}n&h86tprM(ci`2EMG8c}zdPa(=iJN6Jp-bwHH>mCiYvu1KUm4F<;N4V>@NG<7 zXkH>YoV3z>aumR)X8_}fN;QE*<)lk@J%y!Wh(A>v-*y`j#}4O96Pg)PoF;B{W`Hy z>c_wHCsTj(>_sb=^D3UK&aRJ=lu+G4lEsBy>NKwd-y{>*j*znjE+KG7Odi z_5oE|M_^h8w3T(1B)V4T#RE-ln3Sw@$eR5|ml|#+`sGQAt~eN^$K>wGmL5;IU!ZANT>Y31 zef4IimCwoc&*dme9D7%JHw@`xmGTF{ZZVG3Ge7(Whxn9W zEH6APz1Fb@70E&Wtdm*;#Y#6QF87xINT?U*1@qI$1%TiQG74@4B2JM4_E>c3$==RF9P7y1Ji z5%C}U={I;?*%)1XbewjT^DL1@%_yH==bYc0QFY%f^q=HWMtDvLWX2 z;%pxof@z<#FT4o#o6Q~A+Oitiuk*6&w`WUsLd7{bvptjw7l>927-It}O3`G30~X(I z16V=Tuf+GaD6Fa(>~}G8+M_j-6K;Y$D`+znx`iF^5@{mu4cd&GsLBMAD2#VB@~ku* zskT#jOnguqjJfz>71v-Rp3SphEQTX!!EcV*Wd0>-__4`D9NvZ(Ofq{y=Taye3(qC%=w{F(%@G_vqh^g|3~vnz{Hdd)O{R)@6ym4tYuvJJ`k}-9;h}{7Yfx8- z_79{y`b5hrf(aPvw%%mNd%F(MWH9!3pL-ChmfH&4P4tGJ(tWoCi-a@f5|0&VK~uH;<7oGK%wog9_9`LcmmQFev7 zvoeLOO8tGB<0=eXd3pIgn*4q&0TkO8XK4u=aZbauJqsL-{n&NaeES_wr_EO^LxFv` z?7MvyrQR3d{ zFs5=?NEB33ZG!|sPs_~Vp^$EUdix=CO#s<*m534rU)d#Q(8&c{ACvF9G}Zi+ocKz~ z>9|1|7&LO^e&PAi;=Rn@r=IKJBM^)as8JatVc>;te)avL6FjL?u{Aojg>Cme3l&_4 z8x#6ldEJMfdxbOSNt^63j=U(r&}j|TP|Cy<%zlKM-}-g$R84fy`UZsv7$b zQIGutMCLpvud^`oU8-Kd4yoQuBP{&sEEG}-2}9=mX;rtITQBC4KLu-gE={%^7TO?U zd&50y9V~JgHtYvzT{c@ET)hz6--Md*z^dL317&!AhAc5@6fSA(tY!UUrU3rBz0!gd zo$aI%-RSUpG^{o0xH;ms*;cO;%;7iEAPDVd@2XdMGlYV;-lFo#E^T_?jY=E7;b>{+ zYs+|D`T(A~lF516vKuSO}Y12!EVuCV_ia}O*`i7=3}XMuw7(1#0JNEVz3vvh7zuKDCta4eI)Hn7R%2c z)z%!BPZ!iLWs5&q(CM)=P)eAZxUgKWy~**ipKF^|O-&gQI=>k|tJ^qCmd~&53fWZ}7k?WWJT)hy^_;n6_k|nR;DvbmSFn^HkJrN39kq^ag>Ex) z-m{NC4(M~&e&_c2^7L%%D8VK*z(ybB%DpbCa{V)Ik@T4&%jvE`zkGHAIt9=>@-po8 z0TDwwD>~pp5aPPjiaV-K_t8rem(5BcikE%l2s7FmiQ%tS#T10#zs)h@hP&S34eY(k zq&MLabZ?Dj9A}M}s6g>WWt60|qh=AIq)~}MXgwYxV6dnq+M0RFbn{-Jx6z_mZhua& z?6quwE?cp4?dd7AlNl3@M}|vL_zcApQ`Cj`TTfF@ACTM6uA1kmd$!KmRW^p2%LxB5 zbf+#&wJ)xnw*S1(WqIW_d+m#f*>Gc5ZDZeaO>N8@TZcch=Y6i`BkIkC6L9Fi-F>er zTxY+C>AT>q{K9*`NnQV?n5luIFTa1mgBiz95n^g0$%T71EPCMWUxwAA>v(aPr}GiV zQP5Dyj?_MNIluM|jXVE_fNHPhwyMymIcF=l$*1SrK5HWl{V zn=%MG1lb!igv)}A60JR~`rHLrOoH&X60+V@Cq!=aECGqWfu}B>H3_bx{aml#&Ug9b zWjzzMWdy7B^1W-)89y(VkDaF3Z+-9X{zLo^mB{Ox*J20hKrMkiVoI2)Y!Bf!EV}UB z%IHB9A}?Y5eFL8M^w_;Y2ges1U+mBQ_DL!hcx}tsP1zJOxxetuNH~Vy)S1y!o%ZTNP_I@#r%Gq_TfhLWt@(1ZwCvEI z=i^Ekgtf9q$knSZKY}?2Pn&**0ho zYtvBj<;Lt|dZSOj?B%4+=oyS)h2|;;p$MMHiZK&fj|}YQJziekhJp~2J@h<0{}E)` zhw1)a!OPBo=}NTYZvuU%s=oPqLoxcWOE15AdwYS-PNHL<%o8E~C9u6r1D}J85(>f9 z0jb*X`TUD>qn|FKR(&n)BJf7M!}11)k?$zSb)sVjx7Oz>yky-zrD$iKFQ@m?iqq9Q zcN)jN2~vSW;EuSdx0vF0JBPEDVBFIBFFvKQw+u|+p zSAJ!)9%_ZEVoN5Gk%E_Q90_kVrkZ#&UF;X(K?G%piWY`msz!Rp)p#q>Vn)9=MyWaN z(>Sl8c1zht-*1~m;GJ(~dJ9NvQyMTk_f^+?0`b!75iASev@Y3Kh%iz#{fMVDtIajS zfQXeQRpD2QXKv3g0w@L$EmvFT{eFu~f5sE0Km}!s8N^Vb=t`j85_%`r^pGr)UbDVH z8@aI*c0zjR>Hf{-oiK3RFWY6rG^>K?e4HBS_za|x}!s7}c3QO(!(JGd;a`r$`{ zF?@K%7*n$X*3N04kHF#q5OZ{z8l|9h$maN^=7ON$3 z6aTYFhQ>?1o|XnUsZ+JoxV!m`g@hE1L7w?Tjsp}8(gXz`yGT^V8@-kdmL$cJwx@mTN9@G`M4*V+ z*j{ga=fN<=)R4FRQ6keNnziCeQ%b4q-QHt^wo9q&%b?Ql<#ey5b9s5aOuvL~XC-HR zAEiH|VF+C!8{xNR$}DR)&N!1Cuwi4Yri=UL;@AgdMWQG9wt0V>u!++sF93FMI>G(w zCmAzI_-edc`NAX#_m;~N`~^P+lU@pG_s0QoV~57V9u3J7MwYsVCKDdT-1mEQzj{{C z)Qe*^_#1%gS3B~*muyLsFgs;^V zMB(kdp(4`)!{z;t+-r3L#mjMAO|x`PD7kRGqY$mUZQ%~7jo<^xc_6PKjIq1N@VyN6 zz8(o{4a(4!Pur6u;FxL?_7F)j5+1b+rPLuxm*k=SOg?SpL@KbNBX1M`Ih58|SFgE= zR}!Nxr{XfuP3LNdl+xEk_0L<~&~f(=Ptr~hFWbwpNatM|o>t8)*zVQ8ePx83%uF=D z3K9^e);@W)ZDT6fJf)cE?e1-}o}pml_u?(k#h0yq!W#tB_>Tqxid_tbIcQI|WF~jg zM5bSuGubvL(6q~<>7%!-eck3YCUdPfYc0cC8?zyhe1@sltqMO$#iD)`5iJELVrB90 zS&ACy9S#qCFEZzYSdRDzC6&@0AE7pCq&DD#%y&@5JG;|GmM*)dm$AyP#^dSA?=iv5 zlIb!sGN^|JT8z@KUv};;Qw4?AKGd6yyI-TNds!a!mFl}USIo^!_!rjXXLX#Q%FUAa zSk90E++?d$f58F|6*@XERqzI~^E0lm?*K=$KU2L8C}_(@bAp;%CGN3#i+#Oh^tWJa z9#?oWrku;>4~yISh|e#d7hem}(P&`ZC&AE(U}P6o)tObmVeIC{@(WYks1r_`RhjgE z(RzZP(l&UZ^KzVjx`8J_-+xvI@0rhOaFX3=hSk;26GtlCAQPEQCCjD#{YNmf8T${? zoqpv8R|naOL%n|>r_}6;iMqtw{ZXZYH!v8F}pBBtcNMJ-x2jhL* z4d%F9(@ct=|6GY|%1a5U$&2p`Wn1Qx_^BgxX{Az)4g%ZtVL%yURaP- zycSmxGgc8S`R=BXSEQTE2vNiQo12A_1Ot-2RlgX9Gvkv@yVt3;WSkJ}*4jR#`}WOZ0-bV3yONeVOt zpU5I{X2%LrFy(RY8Sb4S$pbq^X*7ixuUo0?FLaADo-eTiMQ_%trCQRdk`;S z7J8I1XM{2Jp^KB2cWyTr>THa>s8jT`!wZ@B1aBd24wzLz`taq|NDVVgli0JzU*4@$3Sx+A$d!&RviJk)4rbTlz>QOG zFMUR_nJ+R)9aQKvu(+6s7dF+}_U6VT)N0MU_Un--Ivw1uFNc$OvJZk4^O}t=11df- zz7JtMf*MT)4~1ll&7JI;LL&KBcr}#Xc^CZ{XP~G+TUCC-V)XL}OwC%dzK4J6FRL9c ztm71Uwj7nKZQ8I$5vQ-#?<{C4#zOO{Y`00ab3vu5E9RnAwbr5PMX*Rn<|A9IB<1x6 zjCmVNF=h8MVG>Fuo1Ma)An57*GZ|+dC;XF%#4)8YMRMtbDMk3}_z_+CKc5lpUf-c^ z8sJh=*71kuSeh#2lL0_}pUwlj7sC2OpR7ECM!DhU4K!;P5ViHo4t(f6Z=L?9ik{~Fg{T_ z{*!MJy;js~sqo`AvJAS2q59sw=*0qA-O>rE|JJy3i7D+8yvJO#%FVXlf0v)7dLcGT zp2Ndyz;_b0g0YFQRCv;MxpbC#mccYkCxCwPvO%)s26a7^-!T>0xO^xXd8ShXTti62 zF`o6cSnp#9SAb(BnGY3p+Ig3tqC-3e*Ys!=PtQbF0?#y^W?E>5#i-G{!#6fX7wq_{ zYeglWEZYVOqz5t&IY-zIU(@{HzJDMP@FkUjcUJq2Vwk3-2&T>=O%hD$D%(q3mzjjh za=DJ~%XyvsQ?#VBntGr{Y}?7EbVTwVduY#V_F#h060k{y_G-zo=N0yj?futL4C?hu zULxNzPA}8FTJ#@8Ouy1!tVX*GuGAdy41D4KhySWaHs!p}*)`m)O2qtihuo%_5mVuN zY&mJD(d_x-I?f#KouhVqF3P&3mLuQB&I%nfM4@~1E`RbuX_93|afbc(R2zvRTLYFk zb=~%_Ik65rrLOSo&6~#l7JCe5gi?&0w$H)AS-KUqFk91WyoK4JDu;vj{JrMW$Je{N zc2#FW-+=ZFmS>)tO2CCcXBBI0a<%%9KgN;ZlnFBC8i1Okt^d>eedr=qlXZc+g#u$s zi9MD%X+lhelL9AW^RbOwF@pk1k=HSARs^ac_0l=j(cG)U`4A@( z!IIP$R(-phu}aRjH$RGD2Wau8lZx2`is&Sc5uhdc8uZ#gVp^;BjrF4=B^!na#FU)E#khS_dG;u~aJS_FN3|?~J;TgjJGBU!) zu*_K4(~=|}B%(j9HubIe1}`t3^YVU*aqnoV~IL9Lzc z{VKmm_pJ8>g2>$^VMs?Q8H3(!MseIsItecn+kLslz5Ea6p19re^QyDL3=r1A}og zep$idZ&iU@McJNvwd>0U&&e|KnwLt%^X{7CGhI)gNSe^ezh4e+*RoTSmS(irhYTXb z756XK+?Jzb@*1{GV`Wa@VwN6{Ue97x2&?Yu|`c-1_(bX+bmY(rdE|y(r z^kZ-TBbN|KFtjp*sZ9|`Y6r40H}Bogu&+wUANZM|+-vsUyPnZh)0@U_YiPHVU(nFH zuF2}#!7jso!Mbvh4RphnZ{F6hOwX;nXI8cUmrQKN8>)>=e@$mjcw=}gdWT(H9j6en zwo~Tr8C6{Xt@)o_H4;viQcn9X`G_ws6P#|z>aWa-Pq9&sZ2eo@qf^#XaByPgSBmMP zfjf;rySD_g#$h-w4UG;_Ls4I5dM(bJE-(5$6*g^?=6P1VpXhI=WeZC0Lj*u z1Tl>`w}vn;h7WwQsI!VN``D{22gYsK(qQdodJt42sp@HXU+XbK?M$nC{2p#e41(X? zZ?2}DlgnD$=E3i?X?{Jkg;lILUAWi6ZPM0k5ELOCDP$&LKzK8DGWl7c2zfPDGfZ8< zvi*N3zbkI{;a6S{?;-_e$9XFrpVuJfc>@zSAt;|XebdwTCM`BAgFg{2i z=)nPdE(w1AWtnp_Zh!y#z#1oGT@6 zoj@89yCIzjV&=vD3hk0tx%2mw>_i?6NJ)6*W_@7yroNsA-}=l27U~GVJ8Nr&|29x7 z$Nx@L@UBgzx>7iH2469*uDO76!w-qw6` zG0of(=?x0|ZB$NIB|51)`wZb5`GJufDa2{Q(sZJ6kOqQj*B)0VhSjXy)hpv1fkqBYF#|MTl}{$(FUE6La0nd!pT*qpD;~719b^?k01}pAKU7E$Mo{jF`W8dcX80kz+GEjC)3r zEyyUi^r1%NzNKnI@r+yfRQvQp8@6*v__r6j_8!54-wrJEA2f{?xOx#(Z_0-_*64_p zCOv7=^84-$%c7eR?mENJ{0GtNSidNe*BKF?Xn*+qEg1Az@~hJti%;8 z{_Y*_Kn7ZNnwNWY?fyGZ6cDD)@~hQnGGjVV=8{Syrv>lZ1U-f?lNwOzYqGYuoS{%I zGI&%fPFkwKSc=*G=cKZ*>-NOoO{3IG>Ab7v=$Y`Bw};s@vEOpw4L`O2q1m{HcjT!S zNBDaFs83^xQ^L1j##Xm11lyIXXjrXI1mWlAxP zp0)0svpa>_Px}WO+V{xDdUoe}Pn$9>raRu-zQEKyyagmQaiX`uHhCGl;J2j1P$LB{ z#NlFQ*R`De~0C7Kfou5HVlw>{7w?64t}HM6RhyUpe)DTEzz%lR%p6~p_KfA=%D zoRxX#84lQrJWweLt!%LusK}@jUMjGdwts6P`BLm`poaY*p&h;=%Q0pXG&^hCP21l( zn9KSD-6&<75z~4-Jo(Z&cd*@vnAd~lU2C#51Mt653>K^knR@8khY*c5Qt@B=9kWHn z+>SH!fyDMaGLiR6pWK*d=UPfC>}TwM?h1FkwvrrjyU>+}3J9l!4pg2}jP;)R!W5rq zX`61O&`|U;2zdPXkZ_FXB*6j;xzaF-WE-mJ>njsT3rBKB&OikS9z>ED1a>Ywlo^hzbw7#ULCkJkh zD4~(dN|-OqE6+T2pPS})q~U6JLf+ogzaL*-Z)6F6mN9m6Fb(1qDS?YKWn`ySt<% zq`Q%p9*|A}84!>jI)(hlz5a=7&AKz|o^$qo&hvb>%!dz4iRW9*Zqs%KEhFhi zUv1~P7Ijt>HmWjexyIclrBhQM{p3nf7H_L5S>)tjU^NI|`Bk{fD~dg0T^#5VUa9P5 zT4WS3k33&y9Ta-(`3fb7K#oN^23t?3Fy!mrjL*yS*B-d6d?$vmT7CS9|5BGE?1e{N ziM0CbK^?Z_N~Qg3a3BRE8rz>%+K^IZa{NK_a*-*y5bV^n~nn;$oXgXmzd@X+l=@p)sk+`E6()|KoXUQOvT-SaC) zZVa>JQ#PusUXA_Dq}d`x;lE$-Z701+qIu>k-q+dHh-l=+M&mn6AjHrP=A}!}kP4f# zX3QtsMP=>)^V}5K`I$_ghzBn`eLjEehXV3oUCW_q_^Vwf{uM60Qri|T2k#1OinL>M z$WNeHUQKwrFcs8T8{+I9EH74*EO)HcvDoqZJ?Y(>q5|v4>^z>mK17lA60Dtk${Cv< z1Sk&FpUA+zpiDiO2eU}G3Fjed7kun{`;gGdgPM|XP$zhK^!w_zlHxwqXac1pN_Hin~^aLW%qha<-tvF$- zpml~Y3d<^OLr|iyskQyM<=|{Q_LUO(yU$%Q-s+XC8S8&409RE3&I3?pUC8?@tC-*y zIE8lfylm*!&SX&-w^}qe&)tVqF~kX)KT&Py*rTDK^wU_}XVa?V-x=-3ct$R#OxkA+ zT)S-6akg=aNR(Ome&cS~Y()jdru_&izbvEudhs?o%DraN2#_? zUi%67@7q%#SYuN^+zt4*>b$H&)hH_=oq`He7&cSxiy3}(FQ1LcG?M(p!^%Va$h`Br zdcM31i9SX_cwJ7i_Vl zMoR$_+$LvjIM|*T>v=MWRxjaRZmpf-Dg2k7npCe0>5uNbNb!#C;>Jcf= z`igL8XPX`RUDs@J^mIglZb|6WiPFv%cv7*P^5mN3Dw5EatYt6ciBfsvU)?HGQNR5= zJC{1$*Cp(r`Sc`C6fPG%?tU+lc z8qo7_difEvff%DLXZx5$r~3$k!fhGDIebiX|MIrx%^kY)Zt&SQ%wBD=pj@Ug;rR@2 z$W(=ORJI^TW_&Y>?UC=hbG)4WPcQeF;Zk zp|kY#^h8vLDY?(EFM3|Kk%@!2xWW+PrsqBWGZ5E{mOYeSxk+y(V&Ag@7>6UeV9kK{ zNylCbRJZ(y8bfyv@_JN1I(;2{L(DC-h+O}b;P;tsx_aD1c+dUrIZeksqinTYs+rro zIkQw;IV1Uupi-5vmNC=%7CG?J8N;AMI*mHk!2*a!H_{^xd&IS;ITw1>MgQs+HWf6$?~dKBAyijcY|8fGtM0AnZ8<^E{7l(3cEWYIp*YuOf2 zFw|y{!dTp*7iZ&)5;i+-ZziUamJn0xrY@*b*m!RhLeX=fN53gq1M_IrKUrbSGUU}TU zyDRO?fIQq=A!YT0fD;1qN7`rZRN>!_wECNA%XIZQ`lL;Vlpwu1m+$u7@9Oshh23v( z@6fhCePhE(UmvZ;pc?<@o8#7M1g!E;n{Vb0yt8lzh9)<&Ms{M<_6Sn4zAr)rHCGhI zUJ2MHXEWV3+`P*}zhix32Sg%4%y1mXxfC6W&SUSK_$@h(86JclWMNsa=UN|&4(%Cj z#Ve!aQkuy6Gl%=b=cG3_>xI@sd5G0n7knp!{$LaT2kSL%xalaHRVdnNH+8-3Sx2l# zEn+3W^%gz;iME5vdq_--l`GV6w4W+CW_$LHl4_}p&sYn6q{z~jonxraVmC>}Gr6Xv zXvqR}bLC2XDl2S}m&(Bc-uM5X&2H}vE z#t6-FZa;Dg>An`KdX6l7r%niQ`qFxHZPBZ+=6+nt4!S0RT&QQss(+;Jw*hh7renXKhMaft#c0 z;!FIolKj=*2Y@7=F1$(;J-?jP|7zkwp+JUp?I~hDY)&~gd&N-$3NDB8z4*(7>jvo~ zE=RZfQq{aFG-h`3Bg51Dw{YLTt1xX3bex&NHko<1pWbLBUHfr>n@VOtWbvPMhkqBf zynzdk5ekTn2z&AAbgt;)v|ai9s;gDVpB2A1|E%l8l-xr~X_WMgVfh+D9Eyta)C{Q; z*Yq5YDRa9FqDMz;)K&mH!w1};2J?rd#HERIN#v!YBPkNdj-%Ew0TCxjnUMd$70vsmbHLEpLc zYkAb!otR0x6D)5F)u^&s=*PVqdYvY`!9eOhyJ1G8=#(ZwrXsP#DyUvP8(@>*C8oNq zx-niq8$Zqi?d5MQ?v#;mID-0q5=hVU{xVmd=rHi<{QJuX1E+rJH%>}(%L+6|RD5k! zjA7-q>F1BGlrf~pr!r|aAq7F@P5s1#14}SCY_;L+8F@L#^ex%$fyU4Xj3*n29mLBa zz1!x^cxL{*HXNN2(W}Qsz9%O%pe% zNVKF8lXD}n{c>+SPZia8_o{ZiD|Ocdc2s%=zzX-tRh3>>olrh zp6t)(G&5Wc95xIR{yBwCg}hX1HA76=gKRt4!@6VzYFh5ut{Qp7Xi7lY%<)ehx{0D4dj z3Q&Sb!Q>*J2&o(M17b5X27b^<3ieNJre>4Pb+KG`A^$ItufTx}5$|1Zts_K7VIl6i zO|1o#!h!5j&^6cRCtMjPJDPr)d4TbqN_D3Wt}UuAG=6@uSpYm6xqKy{ozxbJxCpi2 zk^lW9e^&*yQso`Qls#Qr3kkBm@0bn^H*+$osKYyLd_ei9c6@mHZvu$y@0lKbY)TYD zn!3k%F&Nj3-%=wm-p#H)FG)Nzf!vH!)&?=oM`R@LcRBt(^4Y zpPwVc2-ew5oHRFL8jWS6(!vD1rc4f1;#5XT zN(YEhPYTS&f3+N5f0Oy5ozdoSk&-gD9pc;vGAjCimuZL8@iaQ-bv7>S(Ad z?^3(OAs&B95NF<%Go1iRWZJdLwd)DtB*tHhGV;W#j91V2AF*i}H0Q!7Z7Qi@VG>P8 z|2uv1utdjE%Pw= zyAG$6Uc*bLf)|HL{d6GyzJ^o{pGfc~5b4TXrg{55I>q^Ya@$2X%VY|@&B==o594Cv3F!Kz?@qY$NkA3ksWHiN#pPZ()HF2NQNau@ z=0yJ<-Lu*Wz^!6>rEM6#llYJpWgllb_KFB~|KnrKa3$XSa}jRVIu*jvCT`kA1wAt# z=1o6AFc+P8X^rbrDd7apqQ6xp2SsQ$?fsiUFC%Gev2xX-wqcun;WVgl{2K_oBG8I| zmu@I=)1$#LMpm1wn>Gr<&rj8Nu7HY6=lyUZYV*nM4y8jCULZaXnl&tVAeEsQep8`X zUG1BsGu*@7@bG45BAU-?AGGZ*Cu}TGPcz^hG=)jJa5(FB)7)%=1>Hr})Wwulz=X~ie9Dcem64sxyY+SpVU|3DN>BZvO`~i?5c&wVfK#! z_@+3EHds;_3|LTS9wP4pd`yG zqBS$jH-_@ZliRujltFx#wt5cb1JjE`_u&z*c@#dnd#Jh@LDx0o4_5ZTq+Js5N(NIq zP>k!RJQcPJ{i9mF=&rFB|Cx8K+MiYO3o0WQDJx360MdA;<_AkT zPEC~E9)rCAHox$uYfZ0|SxB2pqyIB>mjSbzvO1yZsyI)D*>liF)bu>;nVl=tUS~~u zKp(Vc=$B9{M*hFZ>8(0snZKstW$*@`Fq5b{+BG5r{{|mlZf2Ea#J(Re*E*!pZDikv0 ztZ@Gen;kg&0XRV)y)OR{U0234jD8!S1T=VpKcsq6qtuv55G z<>@Z?gGNf4CtivcSht|z4SN@+)%aG%%O8ZSbB;q}f6aRsXSsFmkf;BAH6Bpn^#DRt zcwKXUHZ8&2&=aTD*k~0H>OZz<(S48Dv>_=Aa{2kQVE3*wy%Sp>kn;enrPfZSwav6i zI9CKnuNiYmKGsZWE`^1tAOhElC8{tZy?Bkq?=!iXih@pBy+YIR4P53g%~x_8CRw;(#{B zZg1PNLDe2m`|l$J#M2lp(Ws2!@cZMSA3tAw!RRV>PBnwKep8RrSlF=%ttVL}sie$L zILA&kTuf@Skz)KGa#HfctSAyYIgieK?9kt-;)Uago9BRAXh<7tv?zWM8)tQI_K^)T z?TBB?81opL6m_twlu@bVBC3y2q1pfV=*oMC}3e(9w+DJI%K_WJS)m?Z4A zw#`K{>0&G1&|Scz@JcthQB}^L+pkR;a6YEY(k>$kMUjF2&D0H<7763gVa*VVzELLx z>37OSS+|gP$6J)z*KjzBdcC;7sr$K*v?`96b!Ry)cG-K!gY}lJY7+~! z;X(}9d9{r>BVyBoQn0X-4LNjE*T9I4aMUf`ql;KJn~n58DGZWWW=?(7Y@;|pKs|}G z+kmf@$1LPCs%hHdPx;~rd&HW#sp$sfB&~kc;zY=pLUa1B=3IFt)`-Awca*@(2K;B- zvB@}{hkwsz4?CV&_9vwLY1G+E-d#Wony?@%4yz3oj;Haj(8wUG9EwZP$yA8_1fPWo z-JnOH7v$WPl#QnXc!_R;I_jLv%)&GL=|Xk_jJIP%mlH%Doxkh4Fy#CSX)F+-d$J0A zD!)clLG;4{rz1QUIHHl92XTAv>){$)76sI07QeZ0LwmI9=NhVV4h7dq!D4!_=xNoj zMKmWKQ}91;=T$+Dc?*ZpUrdT~y^hiZx3mR)7kxQkQH+t;kJZ!1Le*@9QZqU+p9&dm z1Gydg9vF}l{C$mo`hRR@xR@+{_u_K-e>WOHHThcWg#T?aiEZGYNISmxS)$7xLz^ha zRNfXxFI{&Ub8BpnVPyLUzN3rq!rdna>hNPUq}u|0V4n^-?d!~1Yy@jPIeqPnpL@?} ztjfnH`y+e<@Dml_Wu#_px_N2jb@~c$!m;6|iYdqcE%g#ydNs)Cf;)}f=v|=S+V9qR zs#~-A7}D)T*oK9}=iAldrLGI}S2=E$eDA--0eFjQ2ri7N>nHb68Zk1>ar6nY#kxwB zqA$jp@hN)j6=>xve$1CIU&L(REG*jpz|T&@xv59GxuIY(SjRydx`}V7LuES1Ahfl^ zzs}uw!e#7<7KKhSye6@eKu`0+K;jInTE-8`S7Y1J|)_Go@Z8@|6SP5ry`mMBQW9g=O7(Bp-NWE8?3`Bg0<`ir4!59(9Jjy}&7=A(sat>Qqm8 zNP#Wi`CG62FR-q0PA(BWrnwJQJqigGwbMeKxj0fYRJOST6wiWudbJAxcR-5_z-_dS*=RNgi`SIG>t)dshM#$uY0K3)lK(p()RCyjS?H;@9SNJ zzRM>G{b-9QuDf%txc-RBUqC-3d;(aFZYx1uE6EtMfzp5^Rm%7aO|*h9vEk=-`c34HXfChejirBe(Kyxy)F$iE9PO1$zd2bfx#0y} z27P4nVg8h_EHrHk-h0y3McRY9O^J|e)5-n_JyNqSU8;kk*BZ(?n*q{kxE9IYJ zolK{cKMlEmWYgfk&8Rs-0mbvVAGd3<&pQrP(C8bZp~Ik8Zvo;pw`{)hEKS%d?a5Bs zUBUpp?5lDyV>-Hw+`@5N@IhL?*eZaHNO5}t5O!VUL&Sk?r~vb-Fn6nKbT>3HpH)Gn zodJSOo*wvS1C)PdG^F(bd<~vw+hv`tcXbTdQ}PpXdb~3KEbMGv$(HH`-2YRQMJ%B_ zQF8V8jWCbjE>eCDM4B(9@^CC^WBWG(scX4_Shr?yxeos3nAb~K= znf%1lZMQJ6(KhLrsV*#kb$)``O$-w5aU%v7$@eFOI@5;&_4~txx1t{_jtgLuS`=Gs zuNUDfOBP}H2>#zIW!LaR*bFum-Y_UNvbuVdHgx`w);Dynah8BwD+wrW6l48ZDLFKp zn}|HA?sVK^lr06m(x0ZIqa)#q9eE zE-s3&TreF?GI~^bszR)U_|3BExCU3gxKaU&R}&Fgj>MVqKRsD)DpnrEO|CWM@(7i_ z;`w=iif3O=)^~Pt1if@{mdVW{Jzk@BCbHkysa17X+)CmHgn#%O{KWk&Qx$d+HFum) za4wq^!@?xc?q1Bp;R;fLoPakb1+nsZbMyD(uHe8ugG&8Lw!&%m3q zs7xW>Bvdi(_ID^#%LN#rZ0aO_-pixA`+g-hh3E?L^5%}~kLf5yRd!ZCk53op&!+} zpkYn<{BVB#8{*Y=J#<*4ne7Q&F^`B%J)$g0xS!>1N)DN}gMXp0l3;2c*1H92$VoN# zU6)YG82AIn#`RiHiGg75A*ts#&h+fv&CDeKt24?(#Q8TfNU5oI9v$xkvsQ4Mh#()I z+9MC+i7Ei`jWm*a1^gq-B=l&~v6o^7@`5e&Q)}2s(&V!HilWRo381bpZii@mocRDA zYMna)4r_RrJOhSp*9Jh)Z*3%C<`2QTw}jYOyIlaCb)G(z>}|KzP0pvE{iHPLcAc7J zoWk@t7Kn9)PsurS&zFwffNleo&^Avxr&Csdu72SQ zy45F|qk^VS9Oa#@qiH?WZAb&^2kevC39_>ZUEpMx`W*m3%Kk7Ww_hw0~c+BO-TK`YO|^F`M3Q3 z3YkxLiwCKUtF~QzVv29-j*e-fuYZNqS?X+Ti(>4RZ0Nl%4ao90;&&rA^8PHBGERW? zxTSI@i|+D<+zH&2(UEj83uss1?Qy#b>C4 zse=TRQ{h}4`YdGk)<7htS`~=Li@M}ll=h9~i!lJNrhQUBM=+7(wLl*SrV)x^Hb9!N zW84A^{#nJOeXWkz2D<>17^P%%YJ8n^C~E5 ze@kxi$|Ltdu#=ono%=N0uT!gnOAxR3!R&U(;C^5ywezpM>{k}De`q@W3;@96lT;P$ zwTm!?LCzS3q>@-Dmp;{>7mwO z7Y!f*{PpP|Ea`bYuRxwMHRx1z<>X2y=fy2JcWjs>8h@U0*1~@;aDPfXudVmaFJLUq z82UXBnr)Gu(n4_uWqHdQ(8(d6PjaSR+J_4{G3XD;o{BsA^U|h5(wJ$*>}1Si0{Dai zu<-Bsfk!OrlV0RZqs9Z@3sSe&%GX$|ER&zwwG`aUQuPA-cVNh|sZO3F3IqM&Ts0kB z@aN+UU=b7Qs$H(T>hT2;i_YwwGy+$iVW1h8_C-Ka48*TN2{En}B8IeDS^(h=Ddbfi zy^3vV-|f;abnoWI^GcWs^_vI|=t&sO^3!L}b{d-5B?*DF0`AKPjp2;0NA2^(7^Frl#)0PL4P6?9v8>T;{EkEN}2hn%;aJOj((tgK~XPpw}yCku< z1Thg^t!Gc+=@jhJrPtIYL~6@yN@kEVmK!T&9)7YKGu3a%YJ|w5;`}z>@o1cg-3_g_ zAs3ssPoLOrD!KQc^s4Do$`gb*Hrd9LT>SxRo`g_G+2LRDLnc04ws-tbJ7mH~q9}ea z>%C3fq>r2{S>hnWJ+jB4^uNCTr^6+SX}8RGk*0BNHJ6sz)5C;#!`uk*1ki7%l>+9G;U00KFj%(<;171 zD$?D%AQ)$bR5C8o_jqTkcQH$0-3)BUgTI+LD620xt%W}3eILpgHf@GmE? zEFeJG);J*7yW&aGbtwK<^p|v@-j@bpVR%R8RWD^l!SsznVz&(w-nwgf?}8bDjGLqQ zj}eR?bg)~PkSS(w0Ec7#3v|g9l}Y)9SQTMm^E4Cx-#{fCct87#0!emMBMhV6`I`_0 zG*NAbrH1tI>tzRjiNr;HlN35Yh1k1(4hjq~&oWt}E<|t?Tr+z^iP=@mA|om89MHy_ z08zQIGE`n8>fUZ<9;pSk=ZyE8{?(0kM9oGd2NfXlb$?yd6!@E4b|*W z!tN%;<^~9%1~w3|6*xpxn&MEMwN0(hpIxU>!^2k0v%o(;={{yI+&`b;HfFk;OFAsT zC^kW&z07N~uu|jYj`@G3p|I_6qVDqoq1XJyBD59Yc*7xa1( zb6Qs~a-yupLCsCIs7UgP#$yE+6c_{O;Ii8T2^~8QG$*4L#o;N<>(Eo2vnt( zp;^zkqzV0HfS7*vYp_{^es$R=#;pR@mjD72uq1x%=ZLee`kDHz@`h+zajQS>X@!{X zZ`jW{mF%nFmby#lY3RDGG#OEC9K5O2$*k;bWGscb@pD`>m0*m-)i75LfZ|H%dZH09 zn}2JeyN_$j&eK{dT+g1p4vEF00U(Rscmri&e$A!ZJe2yyYQZ5~wv`k;L>& zurtMfzqaoGIF}X$oak^0JB0Gxm(U@UWh;|uHTWnY>%dT-(Oq_OdZOsfX~EuQmBV+8 z@{`|s=z!ThLt{iuX)EsVEYf8zd#93EDttgf$8w!`+?7EQQveuD&&IFvk8^#cHFALv zyN!EmDZGW<9{UBIrcfsaQ3>$tnxV8rcrV*JD_3n`_Dl8v+65&ms%<7 zE^fRPE}n8&_Pbxc)u2|(409l*OKMSMyBdvsoDeb_c;JJiwISfRrL0#Gu4r&k?C!k) z0UTU>r(w5kl-OQTbKa0BMtlCgY+etyf{?K0en8rw=H4;^3#lFf2~ZkaQQjamz+>lJ zvI*TgXkc{y#ttG%+}2v$@l>?YcAc^gUAG%!OvKXF3`%H>oIRwmiWRHZF z?n*Ac+RJm>Zi5chjVWYN_E939TeOMPt9@s`mw|pU%M)kGWJvSW+|A1!V0bkI^*Hw*nktaC~5*KV4X4M&6Sm>j! z6&l9=5(0dm=7>O&&{>_q&bMK#;&W8j-PRz_CKduDB* zLY=@6e?|KldQ&}^2RFS-S*0w~5BB%dD3)%6sZE5;N`OF?y;1_Wtjx`u4bVtoi!0?7 zY5spJ#~%`-Koy?z#P{ZPKpw{?_CH&4^RSi5+@k5tVdD40gN|oBDRzJE6)h%O8b^m=-UnQV2oi;1M{epkuQ;L@rWv|MD2kNVo_n9|VuflD9Yp8@zLbVWq$}|O( zljLui8c`WvX-Yig+99Z%_7}GvMjZMZzbScJuD_Y%y)D3}A>tm&`A^t`ovFB3uKLJV z#V5#-vI88;s6Rv~X432A_}?}9s+us~2q7*kWrLMkp5*-uHhBZOByQ{jTx<5R1J$a+ zjwS_XGvGXvX@C-nhVmNpeNvQTPM8|_!li2mT|cN{RJ0; zDpT3`N(~_z_D}-sG}E6JK?#b>^;K~Us|^4P5yTL_C;LI0b6_OT-Pczg4fv{jH%m5a zO6jeYV?ifi1?m%&E^!2GEK6SDk#ecXy@`f;OltCKe(+amWY_}5L8Zl?wHsj1b?W)^B7pLlu1bty%35)OknuutpYrlFH) zJhp*Mh6xI?xJjjwcN$`2udDkE(U_oi*Q1wx`yTFxkBf!{d}EZqSa{mb4;JSGF{tYlOP&9 z*^@|5LbVn!YtvK+djrowh6@j{!cS=+Yb>n=j@x0B#JFF2ooW6%2 zRauihv)*QV=GCc1uD+o`H}A~2%CT#FmzmWK%=UG^?`Mt!@LAOL`E)163hGHlnW!KJ z1wHCQfu5gpqDuW$SEW&yw`I{%=A93xhGwRf-@U3g>PV5h1-V@bwZ~8GNa6yPH3&8C4IyvqKkI0?2vsAts%_8 z4&xpa!C|{F}Lp%C{8ei9sz(@DgJz@0t*A9k2Y-8C`PAkJowR-0GT_q zXUlyM;uc4MX^>u2sQf#Eau+X=uAn8{X;rEc>UA;KAyL{ zQ@Hj_T&A0EB4EH<3CX_XOZ;-q857lPQr%vTbW*P|r!7y``i?L$OtxIEh;H?(ehR_M zATz|^3-s=BgAl{o8zcSc$em1blyTzm5|RI!U9n$fuEPQG-8XQ|V0nI&Ce&!~`lQRY znh+1vY~gTjDY`_`*jt7}G^F02;I5&;qf$WiSz*nnm%-c9)Al1FkfK`HF0QtItHiF! z^NezipEgv%zhJV5|3%_itr3Yp+rbMx?E67qZv*`v2J4d=e4{&6;1GzgOsIWH@IKKT zU4D9S$&b}uN+KoOB+qyVB<=C>(Z`9AkJj2Lil0(*aK^=2uSe`LiW>;8AJB0T^6JUb zY@1nSgcS@`AiY{aI23vhW4Ks>F374A+tf^PR&}F3xpcymN@WJqI-ZJNhI1RFcDxHP ziE%(0EIy5!j$ZdS@lPY-p*63t7%XW0hc3g-Blqg`%{idzk#u{BQWx5O2R=HZjcHql z2tCm}SVOk}e^heH^oroM<_!=b01rOl&*33;+UnsJOHZai&6!^X9<%x-!Q6o+Xd^hA zzTWOH+&`eGSAL&i4h1116Sz^14f32gFem(OQKOm@%*eJ##EZjV%RcB>s8996joiy| z`L{&CNzYi?c8_=v*&(w+a85ydB zcn=e)SIE0xIhz0VjHE8MN@qS#>o}|>P(U4%rdJ;-sAg@fUT6h>)DK}~;|NvAP<@KW zkVG>z7nfR*u6x({-u|IkUoBToX_kHnw){&E#wz=Q-B*QTQd}M{$}b1uI~~F#|2AQy_aZdfITv?>Fca!GM{Nv$9|W}grY=j* zyIJCZ*xTsns1mL>Z%Db?n*J*`$kT~mPc&!*I&CbvNwmLH8)5xoLbsVP>gk+lDI8H) z5P%Q3op@FOYNi^+Qmsb?@TO^vJAHxS(Rf;Wr0flu$fdoCga7FNEPS8ym0*<>K{Bxa zoUq1$-b$>U3&`q>kI=eV1?<@)}@xmb_dYkeeJBHcAZr^hbRTn3BZ_O!i9a&RL1Bng(OsNR+d5HEqI#n|9tA zo>wVO@XNeHycuA>O7}v$p~pU}PM{E~MIkwH@qddU<$*{64?keuZ59(nLJT!gLG*Yn zXDKl%UxW4!_dmn-D9FEtv1^uh2VPmq8?(tcdN@D8ovfW{Nbd#J`EYv2U?SzrwKNJ% zD3e092aS}Cq6iLx^v+IBmf_=N&`3kR=AiyHMp|1U&s#QEmqT zzqo(ra&rP%oeH&+gjP^`x;1r%YjX z^2W^mx`#ds*$X9>JppmH3c}^4s*SnQQwq=*i7gD0{DJfF1XU!)eXyCF#h<^{rfq_O z0=&uMyQN;geMBQy2hg`&W5r%N_9!jj4%mXwCJsKZm8Wz83ZgH( zE0vWKO9|>{3g!@ZSGR!IS6LPunCzIcCrvEhe0Q!Z^j_UFCun03CjUSVUHD^OCsuA4 zbZL2Jc4I2fW~1}GFJ<0pp34@h-(mL08MMilIzqRry0h_fd0cg&{6|COnZce9p!E(C zQt?I{+PeCeJoTt)vd~%S;r|D-}EM9^7y#Q7D_Lf zwd|EmVcu(Y&8{{2YHKj&tI%e8TVgPixv9Y>D^kS@U}h$NIV;m z%jW>)A#!TZSj4<_gnkXBn}koW5LR>isST|q37`nW|)esOwHYO*Z1j%P)qJxVP%;#H>7^_Sa|fz)M53 z-|s4QTT>-Gy1}Dsd_Qs{4qK{8%m^>jNbp=Lm)Yw5D5q1jDF@_BX6`nS|Oe>*Iv^Q%p~kY}YD6KR>5 ztvaBtLY9cRf4U;&EyG@$fwOK7-z(0CK}78TGF6 z3l&r(?aJe)eEWKf19-eDA9&|g>E$2n-m$HVUXdqx-hHN{I*FG{gnP319_e;Q@5Fwo zHTPMVm6O3lZ6bUC+*cYqmg$aIZ^zb@C`Xgo{RmIA23MV{m|tse0d8W{zioi-V;jwk z4#K4OuHGl}hixS{^gYYEL*89&4-O7ubqo-qozPV|-lkR0e0aVF44ZtVc;?nE=l>4e zdrXBgmi;mi1DJ>4!eb|YKGUDO@L9e97f0aV;F25ZqF>}^D#^15G;>4bRGVUgbbdmH z=j6d*(_21-p586(i3>3&z@Tf>?A!UK0|^vLx3de#K^&s6y?@)IwDq~aRFSbe@{l~) zvbOOpEL*zCn(XL=cs#GQLFbw44m}L1_&kodT~69AbUe0q#2*bNn4g5 z>QtV*u-)w^;i2Cs{b2tO4R}Mw!$bGr$KXtRgBdIAF;r3|4{aw)E5xJ1mN+HV*^ws{ps=dF(_ z4t#M|UdbJ57|ZN~PGwxN?h2*ASffG(p^@k{x%tqgz5KirM^j?y!Rb)V=m+7#ft$bW zC%HgAl!4dUG_9knGzuD@Q!eBQwVk=FY2`bTlFJ9`H(VD3J^9P=uKFez^;c*9?(DL< zGZn7cS2;(z4*%wWlynW6Hrm2PIY5Cj4Nw%5cWz8b*-ksU+xk+DG-aA4qd6+UbZq+s zX-pvZjiJ#vp76)nE}roU6X#5oE7sNAj0nb$A&9mLuSYr8g^MMNvfJNE94sn+q1p1{ zx-8iRB!9a%KA(w7)y zYDjHrqNP8}L-s-};qYU6D~}mo#EY8Zb#3W3yl(!D(8AD3TKPbQiXj3!RkFE~-DyN6 zY+gMe!Ee|1&cAEb%02g9MDMJlWcP071iKF{#4r=D>N7W$dXrLS1Qjn zzY27}U?yKNayWv&<{tUK^xh9Gk;q`>$s#mVGn;%w3KRN0{gH8 zscmVd-mVv0RuMa1G_oc%)I_Zs3-lzvMb~}3`<7`KdMNWf!c_@?_g8cu66Omnp@Fk=i*SC`_|+ z{?+8fyLBonV#_pw*%^q;N9LE;P7_|WEoU}PY2p(lDMB_HH&16)zt25=H}%`E;rGp| zvIf2!-rbb@OcMokXSdS`7kuW^R^4&b6xPl=r2#?lKD`Tj(~Rq5gjM}d4X@1MXIgnh zj2rmsZ&Ep9tD3mM|26g10Zl*e%hSa>S_pkyl;XbLOYv57CWPn)gcjH*w zK5O@L_KJYTv*|A^p7FoXq(nq(2p{Mx1T{53iq14($F7nhBra) z*jA&rSw%J)vwdq2nLX3Tz0MZ;i*3u{LqF}Yk#HAZ-^0m3(YRKEz1gVv4@mrBTBIlz zvY|N?lcEl(Ewi`!1m_jWUAi=avH`K*<(=45o^Q?w=&c2l_gVxxp?cV-zMbYtoSv3|mz!r4b5f!8!H8?T$x$j|9 zT_k2KoBw_x&WNF9ALX>-c(m`tVT9E=+h8LUOO47rjI8deN@0m15zxM zb~P$^x4D*&2JLLmY`LhL4@1tU8bP7n zqFS=OJHfwpeRslTzutaRJO$=g;9ELSh}IZ*<&4eUzQ6098Akrl;(lhV$xvMdi=rdW zt9*9I{GuThQ}+FbInXnjt7cltiv2I}_E;Uzjk8D!^BRs|C&yZGq;CCy)lTtEIO>h;p-Nz#zJ55byaedKQ8 zP#Aa0o)a@V{uqT^DTYTMgIR&+lfHj2yzA4Z=%T3-RlBkCP+K3r>H*?-Y%NHj0C7E| zw7Sn0M>9EMVs}(q6{Dcd6rWS@NIyeXM_*aW2&aQT7-OLh?}J4dCdM&=QLFG?-yVDt zQ{s}>W#KIJuD4$n(b)uY>~u>;BVr{^R3;xR-g6 zs={TJUocrqj1CZ2R3(of>U%3FH#KOQ>xHMc48`sDqV)PFYx;O=^KAjX9ExHTy(2e- zW_-?5h1G!ojVp}O!A7=xlb4!fG?Bm-#5HzXNA&>;iDv@hq0yGL=>No36Xi1Nf`(=4T^-e0 zE`wB5_{pKyHsF;s5b7`wF-gJaIjFOX{L^2gJW+>4ZB$D`iyj&~y6QDRV4Ci131Jg5 z#TcDS%#*jtK1|lV_-h{>H1Wl@w#rrRoIc9s`q_Xr4|A_C5Cpz$slO=bMF~H|?U6nK z!FQZ9PB{=)-Q_@l?e2}o)hw=J_8Pwk7fueZ2JvZZ5ZtUpy_Zm(pdjnws*6z2LKXFf zS2?R#UJ#GNgfS}>LdQua$Lsc-ew6k!L6>!TSztzw$Pr{Gs^Z9|zJvmqu@#Lljd0bn z`+#9@GdJs4)%687opv_GX>|#9Ha}4A`D|$t4(_gBoI`Ivx7fyxKNARYNs;p#mO4)z znWF2F-^88%95_7sSar8XzN$s>(D%E;)Ujl>i+)H{<77oY1#dNr=En;Eo1Ng%gf0&L zC|&RRx9nYAM?*{E1mdLz7YNr7nheBc-N0NCI~23GtFUh$dgxJ~E#y+4h3&c0d%eTA zOM!d(^P$YW#1dxmnstmJmHD><{QhvnsCs^v&KwlTN7IuHA^HxPOelpXlXx$TII zRsbW}KMk+VO(`o*U`(4v%) zpd*}A+ct#m{nAbN0q%Ohu}u6|(9dU#-R8Oze8P`{EG}tz-D&h1xi=)S zH#-<6q+$%uI584EvR)cC74ayWpndB3ZgFwZ&!T%UJxMUiub**cnpH@3b#}>K(kNK% z_0-Gg_xy%VlDwG*TfOOu!Wf524Z&Kig4Cq-ta)2>8)Un4q~HA-99c-zrkgc)#r1EG z>ar!TJU?k`T>B77;ReoVB77ftDF9+I1kk&o`*n%49$rXXdfd@2{JW4&$j%h5;F&xw zAPdE*JPSy=$YL7R%0zhfgrTj~Ej^z-ygYF`r&ZKACIDY0*xaob1zdDg>7eNe{x-b* zRint>3|bk4io5Erlg+ zs-B{VKl~Cu84P?bUfljk?&~{ywRO+}MebFW+n%|03@A0~ng`P9;~(tPpan*5)ShvR zvOPBBZw6`hnixI-oRsT~D5_{t9RA8(DoTOEZ@;|uMy)lYicQ4S>xFC`Yi4e1*8z+B zZgR8&_iZCN=iYZO3oam&U2a|yJ(U0QM`kK`1SIptFN68?^}v};iJbSYfJAt}u96D5 zuW57lYlSH_p(d_uZI3$=m%I_9AMr-hEc}K~%aecmQx`AIdq2CX=tPMzv!>;cKYA3A zAnoC9<9IE=h$>$8Di=RiH235LpC8cUb-1nu(Z5B)2`A=grKyv@rsCg6P} zM1WdlzzbuBg75UXLwC0|TEED-H;?HWH4|H`jxVI|f=dH%LDJ@29 z4&Q}LCPt`Ojw3|&O7cn7nTjE1E&F*(dzhcT`DGJQ?sMJk$UbYAEcp7$SZTT4lahTM zRa3IUNQ_MA`1u0EYsUR+EBuO+_AU~DH-|BMQ|bG-XE1$|L1=6Z`v9usZ}HKH5>q{O z)OStRA5)cdK+Phs%n!YWUn?G(o*Sr0oO|;G<>(1H=f)dnNKwbRK=}%A57MnxT?-zf zqa~zpdV6h+o_GE2N}^HRKKn6VQW3Q!j(I=G8w`xzb)s0U$1WOVb%W>l+oeC})9qexq-+erIEs=7~BNbcSyfBMfiXAwhwW~l#~~qaraecORjahTYVJL7s#Aici^vwL?K1$I=6Pd7UzwSgA4>L z5H_9-zb%XC7g4>!Mz9&*vHb#k6}?Fc?BNoq!Rf}}m!}Sm+;Mqj#RHSOL7A+I*5oQm zCaHDw{tZIo95?fPJBlCBel%vhm4NG*&t0R~s54<_#(ckM*L|&w>F!f~+2lFw(!6#d zqn8fc3d;(WreJ+@mka+JH~z~w92};CifeA3RROM=Rq1JnzsOR`hLT$dbSV~H01c~> zg)RlUnVt>CV5+~mTqksj`LFnmtPGBu*SAFD24d`N&cu7UoSP8(MooyzDKb6w{aRD; z61zuPeQxJOtHJWp`1O3Oa4s{Y_tjhHhj1VXkBd$jHcL!*T{2zqpSo$;RLPpFW;GLU z*IkjxwU5h}Ss!|Lqxe~ol1#Eg>_Z39#NLZeu6wOJKg`mS-ccmmas=G@()3ItZoR<& z9w?CZ@q=ei7cHCSA$;lj{dM}nJ2_%|;f>b)b-!V|#)d0+atHmzE87TtxEREBk@e!U ziL9|ex+lW#FIpI(RPw2I)~x-Z)oRC%RcdfjKx5lmCGhR3XH2Ol;Z;IPK;8SB4a39O z&`GD++A-|GGn4ii+nqk>M@vk`ke1Qp;G4agk!EX-Tbu;Lx^UIlw_U}B(P7+%NIX>K zigEpvWPE?az@t0S`C#TwFd>b+Rc-I^YpLY17%1@K5as*Dz~6ncJp&ojY z%ZwQWD})dxH|_BRJ?uK1Z?v~+bJ1@I;Vny%i5?ulK#SCgnm3x~Q3PE(;-G1*yei}a z6f^9&i;dDNzc==+$9t$}Ja4VeYj0&t3si*B^(m~X7Cfu8WU-lG;(xdT4R5i3XAmL4 zD1l(`lYN-4udk-+-rTq3mvdk)QCodjSFEmx$d@ZV2>A{{1V(++8<=_tdnmmcwIgfr zd>-MuOxu;8OueVXZfMaMWB*bPOHK!VmT##{dVqVS;UlF6*nB{8x30YE=M&sL00TF*AB}taKu8paL(RtrP>AZ^08~^wr<@vXnoqNo4Y+C5O{!b zh%x$-<@gWxhV~D$wbgMxMFG}=~cQK&ahck~o z_AA%Zq3LW?B_|vgg-H{hl7^TGTq6(g8Rh?A>@)yV&4Ev}j2&b>^=Zxta$>xQrRn6^ z<2b*kfjW6k3S#QEehV^ZwCTtsS5o$5BBj!(S?Fi8_5)Z!4eufi8=5&K$Ujf+vuhDd zJrV0tf_o$SW7)wc@8HFTp4fLDVxDDH2+QM)v2&Mi*|k@#+Fv5)c{sqBRz{|xI-ZLD zCXFpWa$9NqI&cfkd}-k8c+*HlV1+fdbtj~uqeIH{XByBxu$zmUbh^w0sBRTTuIkG zwpyBc=o0zn)Gdh!9XwHGy9%n1SoV#<>+L(6MbJglpwJU3K%81D7}x40hJ2v2@9&(m zdfO>yNHvQgfVIU*++>!3*^wEBr$kLK6L?cBH4q`d8Cfa*%>^Wsv$|HL^pQkPRuD-Sy--2Y1$nNi}ynR-@&SLPZ2S7;?+dy9O6ZS8N6N z2U@kEiFwVU|0Vj+MccgM_RF8B`kiO{$h06ickMf6#7i*;yC8DVNS=I=sS(TJV3Cm2 zFjcr&fpdt;>ZioMxUvC;4K=E%p)$e&-MNHJw8O-%!gr^k^}QmvTTy=Sg=JBMZF!|{ zH!)EZA(9_ywYVOw)jy)IDN%3;B>95(TLS5H%N6gkue3wj?!wuUyc9&(KN%|evpc%s z+1qBHc@j=ey};_y{&2_$>WL7!E$ zlhzEw`WnN(8P#UX%hR;|n4nOPsh;aO;uzBPy*{c-7ecHX_%5VEi#u+RakomvGq2RH zHA^z3O8Pi=VVf0u@X^+hT+vmc!~uF5%KwkcaN}~vGtg7!!7=<0jkwSVG2;M%PU(Z?(c7hHKTV$u-9O!a5U;s4`0;sW3L!)O)-Kvl=Zi6#gsyCzZDSe(|a2Sm=Nku}@pW z!Wg7zMr|mjgx(l4k8$n11h!LPr}tJ4VoI$%*v$t+Uci3m{lkOHE}l^xxb}ExsnoYU zEZmeiAV0VbQ#G}gJR_%XJv;N`c>bMI(AL^4A|KFT)S^Je&(j7IUzIk9VG!MH`ZTQT z@X1lyR>kYUz3Pt&WOLnO2FZS4QyWLuR@GE%n1P&H%fm{ffM!#JRH!Bc=-oBERe}3rwTI$<)aM6i zh&rbq7}joScyJtS<8o;Aryq!GF)@hbwa;>PYW2D+Z!WV1sc3#6$iq()dO=!WXzQW4 zT2>Ko=a$F8T9||u2vjS|cseDh;I2W8$M^s*S6I141UAt=Sn)H!5l5q0$L@Va!<}`y z*ctzZOYNP*w@Jk9L;!DZ0ge1u)hljQy4g(@3mnBb*(`zfDh+FVTeFF#zM#*q#i-Qp zRV}4ttqw4>ZD`Y{{{JXJpF|&i_C^8)=0G4X+n&>4 zhqP=FDaIeIn|Fct6YN8usw7jhFj)CWubZB<0e2E|va_>waxM9NfoqUJx4>%?r7+cg zJMA=ZhAg8+)&#&msq>O&-~)vy?vCcpthRphfQIWYTxQY2vhY$SO@R23E_?21t1<0U zY4Ebu4&v57It=->lp_aWu$mqc`)zWJf|gXhMJ#TOkRO5trpNy7Z?C&gYL5ynqjE6| z3FRV1KX&lq7nf=SrO5*14eZ-zmYFE-5Ive7^zb4eCzzl3qkbSxZlRu3gU5KcHHb@ zjo$$WIk2P}nwsDAyl?jzg_E9$2gwY^l1S%}hA2&jMvq8elG7JDOP)?huMj@Wg#JKe zk29Il+Nv3*zT4NUs~V3v4-7HmBhOKbH8!Ls4KSLXdR9FK`0FR){sFCG4W%;u=g4Wl7d-?Wf1D<{Ox-`N_S$Ul=mI5EFe(t$2Y*) zf)rBEKoi@WKviT1b*s1|30sHa!x>WX`3ejk=3Lr#)mhjPS;*Q8!3z@20_)HR)%uDwh*z=ff zGXckIL5cD6==9Bm1yLtg((DyXk-!2zp^o?9x_3!V&$#LZ4~wji*UWdy$wedeJE!%y@mmS=(9aTq9ovAlmWwTb; zqxq2Ie7tMzpE<|zSLOYG8|*??`fT6*k@@Q37ezO(WVx!ckLm7=ZoM?CXQR#(6X2be zjGzD9^IE+^PXW-~-;xp&6EUVC#}(kN1KUTtwc}lRy{d(tY@)qni$KDmHva3)5L%7^OOsEQ5{cy%H8np@7rcVP zkUDVep!BIvzJEG2wf^p#$8-l4d^hRkJpRwIxNZcU++QQ6@OLYv;pFOf7R9>Q3nq_T z8z4GXNel`A?-ZzB2yf;gi^Gb*++64s;NqBmYEW zTd_vf}%t35UJOPK0%EqVR9Hwp=Hu{gGp`kLwV zavlp%&Bo5Rc{5qB-^+$qdMGS-!=)0wDpU1L?sNehn*YaXXfS1IKh-r*p{XC<;kUF~ z0tLA0@A^9a$_r9AOfWh3re$Z)kMcx}q8-4*rljPkYFKKTD>zi^s?5Mu1lv z4ybnaD~Yg;Aen!FOz2;`lQMNiA?`L zXtDvN6P7U$;XEci1QT3OWs(ray-2VOMsYVeNDJlr&z|N)$v&Xs!C!LfKgMl3ifoj; zjm5;Nn~~W6K2U@MkS|kK;LmNq5hEdrF` znjx7%OdQ;-yYu-Cmiw~+!4j{0-9 z-)cWpd=Rx8_Pf{nH1{nh?oF&*w8b2mhzy36_;3F>3CF*f-82$v22~SY&Q^*opCs%_ zkw2JV0|k&sP=Hk0IK7=8IjBK8+{$p0PnYCB+^6R;Ka;g5 zwFunkSjhv!Q8#ABq zJ>EL5@mstr=mK0%e~PrSCnx-Te(G?4BI6plV8aE(%1@1wKl?E7!TP(H?sf^6<#2?v zCsh-FMB8HgxmnIz8P>>B|BBf?qv5Oe=?ndopXj5oY{CE|4k7%y8+oRT#4IYLs2DxJ~T`*0s9aQEI; z%Amv;Ia`h*wCVDZ#O)JDtB^s7H9)C`(*A;Jc?VyHUk%_m<}DOg&*2laF}km!Me~7u zUOTv*7IAC7QzJavVZ(lyzaB9ax)=*=@MGIs2Aq#c3)gU;Wde|pD$VcRrV!DN3|VY% z-R6s(k6uz-4tzYkb;TR2LF%Hfcm~ zb)AnlO>#HxkQNaHVqvi002{h^o$P$0JIL8?x1LH=bXwE^R6|)5-v>*=I5SE20cA z${t;7+rn}_(+Uyqr7gD>#lneohl0fGDq23$0@IfE?w`egt+EBod?IGeTJm7yIeG|+ zk?sfn^gcHCO#_`;gC@128P-hXUHZO6J}$KL?6=LAVLY=y7|%A*7g#;t6Yx|fxla#? zn>TYLPSTp6f$#MojyE$r`GVDTdS}XhQ73-L=@K*j7QPj^^?ZNkPd=AK0|=z@8rH%7 zF-4nE1L^Y4Ai+*~dCu7*htt{7dwi^g#1@F%O0WZtKH`g*fa%G8=>AEUKotJ@4V6(F z;?XKCGv*j^sqfe_8tdGZar8SdSo3>4UEv(y?n5ynT~zDGy6;H}252l+uecT0NZKg5 z%D+i6$gPMWmL6~Ld#^Ezg=;-Tvy=8A1HzTt_43fftme?Az0Fbg*~O(a{0FO==!ePL zWHAd&Ian-dLxI*B4eL1f(GRvL5N-4Dm0OW+>nzCv4%AbibvA(Gh)E^KgnKot@^)DH zn!}fCvq=)inZtGa=m?MSf!Qqe`On?o(ekI^0|>NHeMViS;WSirm=$Ooy+zuvGQ>LN z-?@MifCgfmx`J2KEyh?+bsMnvb2E*P+JS&2B585Of8S-@cOxEg^$%{KUh-GmTvIC{ zlYVyvN~szR_)4FP0R>2Y>@u%+_Z;t5F8+lJl*?rNey-BtL_e*oWLU1T0?I$VwJpqE zy=ZnCQ2}6kfnnTSGx&Wo=wqy9z9!oAFU}37I>naFxljeoUEu1|X)8#Ab-b-4c?7h; zo65d`i_kdQ#Ys@UJ9Zcn?80Gu>Zb#cquh-#bRP5MUG6@nKbRj2lupgAyg9yiN#rlN zFiBuJ27i#-oCs}wq3|Udd)BYd+4JspNJ-#|n~XBGBb1^po|2;pTIn#oBnY!=CaZqrWqWNSsk`eT|e_ zi5`-;J2rEXm>qU1fq=eSpa);!f=(6Xgl%EP%zO^;`7lNx|LcRXc)}&ozN&O9naF*_>Mi^PoTHdE+ zv^ua(@HFcZGL!do77IvE{D*=ountd28Q8LtEn)IR-4BJH+iOY6`&$k~{L}KIe>=ru z>m!1cURBKDP9~N4@hn4qL|3~EpK;`Jy;-DTI<>U*tkL{yk%WD6AgZ(^@ zjHoQ-@ZIkK%;~2q>IWhFaNfTkSuVWdwpfd6bE&*E+bsE7-L^qTL(AXd*94`L!(R|Z zg`(F6FP47xpTv>lJ33bs?nkY-T>JeFh)7Ob13<*Hq57kHu`UHlvR8Vk#*_$VsUQ7s z|C@sU759-|4tzn^gLj9hACBzEHISg%t~k|2l%SY?^9n0 zfDrjm5_qv&?!{W_+qj;y#AKm70Ul5Ret3E*Xa%k#+axAAUf&qZDBFRBC#$UPO^?3iu@XPh1F8Wv( zioYNL6TLQ3{}sbof20q1GOQ68z`A$et67(!!pm1M{2S}A3^hLp#}%WB3@x& zGbu^8lLLMB`dNj)Fd`*q)GLI%<%?uTIy?P229B&wr+tbkDttetMB1=lh!9zAEO_ zYLlSC0Vw-5;qP#sDuJ}8wU*+RR$l2w);$jJzq(8$^^E$cd)^(b1hYfHDM>s3M*m42 z6UW$yDai!<#Tf=ZkLFl|k&;qQUFH zR4_qh?~Gc&{~P(M9YOZ5xW(1{k{e^jCqEcEJoCX9n)&~)q~-%-PJd~;LamGxPEL{{ z)&TC(pO!=iPIoz@arn7AEWVU&j|c-;JO1CWW!DW9@aI2@D+0dSX$!<%20w%4pVip1 z#hC)4>xwH8t1gN$ksnKxbp>8+`5&mCnSrVr&Cv@5{v@^PC3se?Gap-2vpynx`uEzu zDGGpxj>(+>2dyu(d;tAG2q^kr`U+xU=M^6?#tJeNGaNM6qqP2ZZ!o0? zKU+8oA-?!EyuW8sAtSKOHO(rfigDH}>EboQk>Arx`G=G#Acnan=M$2Nx>pYR0KF7R zr}tqt$){|+tuJ!qwdx<-LAJp5b6H?avai+vomf5_YDQE_V*3l2 z$Yb!eUF|`v^W?FTWjwJ6^2Iq)R^~D}7;=-Zbj<;?(m>=8KtoiK|42Q2RP?$y20C9; zyU@|8!KDK@gam(M(Jd^4aprZ8FcM$GZL=F!wnNKfjM=znNG;4=8{NqJxBBStMA z-cHA=b|G!O>NXG4Imr)Cv`l?;%d8wyI0f+Ex+>l)d!@IBc@H>cj1slRI)$6nGMBj2 fQSblaE2442)<9l`5E5@bN&j7mCP(xkivQ|BqEI*ZREf^`#MrvT}dg$<{ z?%;1<{>eo5Nm1+g;zfiy(@6fc(A~$2;mY7sBBYlTi1j80*Kj_Lz>>GOEt){EdydB%+Sgtt3^^`^ZR zfdrL3EuY4FUnCnJ)j{V2JDIeT*ucnYt1mmz#z%4nxU}6$^Th8UXc8&mmo{vj-wA02 zg08a?rZ@+IkNA-oYTJWu>*N@+z{Gokfytm)$^768w5%_Pdk|R2kNhb@o?+PQegr%H z=1bem88g(`>f$r6ITM$TFjD(_HoT49N)Bn0G-4izWdN* zh|FmcLB_`eusP1E~r|gP4SOdExK9DPoHR zk%;l#Bt#Kl;1D*!6T4W>lPEo#+1uv-i1Py(OMt2l(5XycY$NiC8d!^#!fl8h2I65k zWCkN`>flx3N!6JcIUZvSBz}n+kq8&XrYgREB7A*Cw;&pr^A#pP zLM!8*1Xyz@?HH#}NJh%qMsuz>V?0oe1kp#9Q{&)-d>c+bTDR)IanyH+ZsgYNKt41Y z{D~;9A44#mGUtFY9jk7s@SABxcBFfVshdG{V+YQR*^U;2Vz-T{!AfRY z{lh4`glgg{(>MPJ&b=J`UrA169g*lEb{Clux2Ju!yH|pH-|+W>ukEo()brP`RIfaL zU;Iul1l}6Mp{nXsPhf;+h{*kgy$E%oQBv@9$=)+XAY=H>d5P*~`ZwA)l?A}ugvp5t zpx9-U52-}NWxK#~Tl_y&mZGU*Hc>)Y(Bn`=wuUUid5&rk-SY&~*c>M4gO>N4`b=`{ z^W~P`rSyl~SR0DerK2vk5sc)B~*n&3;{V(+NKo6n9W`5ffe-a4r-JZy=)~oE?USD%##SXkj(SGNDl$z|z|{ zRBZO`B=_zJMCz#qor=$5O7-GnPSFN@o>Mo;%?*Y=5@|)wo_og z!Ilg7C8)({;g;_0kqHb$C4qoNuNPSjRWobq=2B+hK66ayois4wB0ECF!}Jm}+85h) zg4022w{2;0znVMNrINgvQQHB_g0H6-+N7&?x@}E;CWX17IkWS|8L=^%Kgwt!fmX@l z`lyZaWx)=;_EM{thRiuXl7dg4Y)P}oqq-tVv8c7l4c!wSW==y3-8@`%aDKjpWhqHm zq=(>wo;j4j_t;1ovzZ9c&+jnwNpF^DSvU!yHCbtwnf~oND20DLg&uW=!JRXKrDJ%b zz~X}D%u>xR3)WaSRh6zEvh=B&Q$#f?6Rx#1HKbSW9Z&T$F5PAe*7>*Ih@rMw#!s5% zeNeIZ;9SG;1vUrEa3TLki5c{KZWJF^Y_GiA3>wH@MAu74=zWJ}XFeF#+0HT6lPtY> z!e^6o2kG^zCSjtd#E8JWy+*0dN9B^e*uJe7IvZeVb-q_{Rm4ChWC@EG~bd{F{^>boa zCt1|i6R^N$3({hN%13=WXGF^-MR_R*Z09YKzk2)l_k8H@ z(p9vHaQr~Y*1+;{*JxPBW2Z~Pp1bGX>r2hT#0&~d4`7NOWhKg`o4B2#ly>|g-}1i9 zZ;%8}l9PYK6bL(&6Ayr@lD!a2VxZ=>c0QKb-|tx=oHxW(w}M&#HY_CrF`6JvlY*{q zSEY*m2L{FAw7-q1bCl`J453MYK^jV|A876hjQ8LFTb*F2=b%h0Z~_vD#ze;i@@XQr zs6KW4TDc9*eQ>`4oyG4@59Wqiu{Z{iZ4BJ2a-MJdy*zdP89;#PdgmB_R!#Z=O%hjZ zbL7_o1+}D)e(F#%0IN9+Q7hHcn%n;g+w#r*ujjIuKyJ;4Uxr7VWx*jmkNz?HVGzLh zcS+vzcI?E@VdsL355BF6FJ3LOx1IQ?%TkJ=*c*fGSbF#uzmA*!1g2P7-|P@s0bx#YrlhLe&<<#FlRoheXWxPi;z55a za*WGGCFE{EI~e3Z{4%>+uoN%B0854LSM9GrE%HBl0Q;P}3OS$QgOnC4p8Yi)cBVO) zU!)(mKJCSFCJS=URdQ{9@)_3IqN>n-IPaet(PgWIbQ=OQodn8uMCxKF8fgxBus%Z~ zcz?-w5L{8{DgQWJsWyRuHls0T-oMrY+D6D=KItf6^@Q#H4vN5b$L3W1e$7z2_hbM< z>_>HRCSw5XpB&qmOI{RcJNkiHfs=N}C6?^*IB|ksfl)wd%<83kz ztSXsp*!d$BzEeruN~g)UR1KvU#-!b!q8jw{AP}2EM@3#%$7Yb#C;UiY{oc2k@VU#| zzJGo6xGV=mbyq;tb6jwq5r{udIps%+OaXcjudZP`pceKm(+$2IS*mH~b zO>bC`gRmTHiMooqud0X}o@F^M*e){nE4T3*b|{@tiP5ogny2Sh(rdebqJ0j1Su^O% zw@MAF_mJDeilCCm4Xjkh2^&YB`x)(KhZ{U;{S7V5c`UYMjG0Wpc z_ex|Xkpui1*P#qzO^>UU9J2hb^_o&7D=$BO1ku#AiwwVHS{KY^bezpRKpcFXyK8s? zGBJaGIa_HXiFeP*c<}gU(ln-7c%%ojX(yo{&LWI_UH-V&$ngBdUFfJoMB6eZ#B(_= zsC1^8H#^}){a3vlj4>cI5>(F9na2*39N+R(WUYJh$Z>~7CEv_a;pTM=5BMXcxnpAKX$iB< z_{(69Ix5m?PFGf?UpW{D663!%?B^AZoJALP39%vt+{uMJo!Wei;L7FbDazo?h+41o zmpHZDf`7*U{>7Jw4{e47Pn_!kyc?-2S8g02ag^rwZ|&MaOl9h#T<;@q8ZlCuEZ?h! z0i{<-_J+$?-$HZ?Fv*^5U~(x(F|}&sv+%+FCX=Al5^2}m#J8`( za;$)-QL1Z^A4rSZ$BTfMCoUS`<9S%>d1E`@cI81f$Wk-1W42M zZ$qqN<;ch^vLNCAS2j5XRSof&CE;jQyo^TZ$=|E+vGO4??&s~k^|4S%!+Bpiq0{eN zQw}>`PHH%jS(gtA#5m5NFCK#8Bxz4-=u%P!8hx) zoaS#xLjs7~JO%*-^EC+0B{y%6_c?b0s$YUUiW^A6(x28gQY(MR0~zzxZyhhJs-|eL zP1gj}AORnjz1QZ0bE{*OHGw348(T@iqHslY$u1LABa#eaJHU!Ak(nJLia+Inq8oU& zm-j5tC5mpqeh~mBb)-+B!r~@tU>b;Y^H)1osy=E!lBenJ@-a|(Lv}&rA|e zjF(Z{x*({A-J=c7X-PT$&+hpMzn?(oE>oAP?RuRAt;~nUN_jz0S7v_B$2fYCF9Y%@TV_z9SkZD zM9SN>RU-jyhE$+|?~^Zp!tkNnDImUCWOSbP@~?=`FDWs(J#_rN&Jyr0#r}stlB1N5 zI)*!4ccPW=XV2h$3%!ztBM9Ao$t*06EX#m_+H`(@78)b+on39}c9#_%tr= zu%Wt;Dr1tR#eHaa$MRhLcha#g;Op|_ZQX7fYm!+W@pmcBf9gVar|jbPH;FM`r0b>wO!6i!Qk>k(HHqQdSE}N85b{FrL{Q9PEB}+$c1N^onL^+CQh)Lx>5`ewEO%^-t#VB0e zDxuyi4)_!n1bjjV=264+t54`Y^>liK{)K0oz|pZmzYy zqQcC@vKlaehk8IwQuH@qWF^TL8A1UrzfMmX&8S!c?cF{`fgSU4i7hfj zzvNp8M2KaYHddj@L5Z1_f38!m-|tetTL+WK()f($FAudcOGp-{Z}l*ekh{7DvWvun zq?O)>L>{tW2T+4LOd4}ayhR~ZpPuj4?ek%bo)bfPcIPE&jpyBgMaV=Y_{6wiz`gdvVkRDJjI7`Q_!T>H_yKw zoGm>C=16x&%6staw9U(r8+Wv^o%}@=D|%uXv6--muwYUPdq(WfFgd$KQ@TR*UQvKv zXqUMnHCRW7_~Ej?du0@&@0ZR{V)UbO+3Pvx&K6|;151OeiATGEbCpv7hkH>VhtpZ8SYk7H{FD4;H{bwi(V2>}WR& z^)FHZLtYLME{-d>Ze{k&xW6|;VjB)DBhBTBwHHqW#s zN-?VHorfg^9SnR#4~7Xk@t5B2IEEd?;mtE_P|PMYJGjK{i- z#w5V#;TxnWYlfnsj#cKufle*o@xK!E>;^DPiVZ5E!uc4;NJfG^$W80~GaehC&f5)} zr_ZWO#7zsfAj7KMCjS2RRh7}Okq4HX1No-+Mq5ZwuN#nNp|MwrDt6);T-tCodomLoe zh5iXfg|{&K2aJMd^*4#;ya4$M`o?MG8zZyu0;Mpqa$m=!Lq@v!2jt!N!v(PCCKZ{2EW zs6nIw7uE_`v!{u>U|8VSxT%f(<*tZ_yTw?j;}py(YARv6^M3f(+(1mf16;q|BERUV zENd*)jupamQ_i5C8a`$LwCj$gRF|T{`82D%0gw39K zar4X*hd0tokSGl(Z5kj`Pi-JGZ)b)k6Wcu%dfPx|4cK^eM$V{mZ-BvU#s(;U%=qE$ z;*%9;B}M@xF59rnFIKg$fChIDPLW}=8U=lcnf(3=pf*r&A!K)Y!9&d$LjCjCsyvx) zI~P>B8pPYCpw3)k-_N0GO!!j+4txjL!9tJ*?$)(CT_$ee?VRNf#)n@^>A5tvuy+YT z6|`DaimFT`7>%L~c*EDHWZ4k%v)CU^C7#{7_H5+TuiEFNha>AE-KZ5f%#4=f4CS_h+Bkr-4rp8cCfGJQQ6iQ(37?deJ+Zsv$U zK#&;T=WsBcEa+k~0E))~*?M*ZOhcQ!fEG~DhxML`r3Box-wRzcFlu|Z4#Az|NfCK3 zbGe~flsvV`HgfAq<(T=%w6@dPO3QW1Z)$xdOIqXZ;DV8I?4>wqwe|5v?&t0(eD-Uf zk*4HziBk05#*V)DE=C!2NJ0i=7~ImQy3ugs5Ms8ao~6kH9h-d-=2 z`Z7_;y3@H%rmOXs+WfX^E>B@pFAO7IxzIec&3R z+W#rEyW&36%Dc7qLCSRA@BEpM&*`J)4JG@&)egeOWINwNL{DcU39EzY5(92t_|Ew% zTf;=6k9PA*-gft+R`0cUTAUgOMSognk(2}*+UuB3UF6~78lgwSN>YEglGRgv3u{Vf zZ@Z9$|ZuAmY*l;Y`yMrr{~zU z^-xvMW9RI_eeqy{&RrTlU{7Uz=l!7|s!oUR2=5{m-YCW6AsthWuT2Up{Z_X&Uw6#Q zg~|*2=Kv%kCI59lzrBGotVOD+9AC!3Z>Hu^RGn4q zEGK=&+ubEq;W0;L-d+a%dbfl7#b4!vG(48t9;-_uMc{M``B0GfVD(*YA}E|Hjx-8Y zdn^)FdFfC?KKZ4Ny<2if2N$`U+iLz)W%lfy1wN4|H z;)9C!Zbs#|doM{c)Ukz3raaEn1l5co9&u{dao)Stz4z!YscygOzkeTzXgT#YSUO)O zcg}%2ci_YIBj&-pN9CDz2a|xz<*vMg!K29ZM}DOcb#7gK4tzDU=&2hS#M-`#MsgLh(1kl$rIaeo0UZ&_5EjKD-xl z7VZa%`okBWsC7)yFQEmx%oiF(3tpQ2(<@cZTkR@fC>FxQe|a_LuMQ7TT=_iaeD08* zm|-}4$!`4+3o%2R>GU*9^kfMrw{SKj3hh5%q9#G5g?Zg?QahDy=|aU-KUJ8T+FZYd z)W9}PTFgH~n;U(eReC2qT-2#`ljiwJB3fOR7pffCWO<{?$5@@_df!rr>^KNhn;z39 z&Pi@0{?FEdgZE0=&WHP=CVXh=54F4X>1B}V=9-HVKJ#L+?UJo#!<~QQ=cfswxS!(I zfXhzbLcy08TBphpwdZ8Nz^IBD37?+ygr%Q)pOegWxpeV1Rw546`SGcMVjBebokAM#WcJW{$`BLm?V(a2OF*&`k1p_ z)gQ8)T#2h+hF1Zw?3-v36w#%mKZ_^TNqk4s4K5k@)OG44<8st0S@m7kv!54d)imsX zWw|PBD|>v@B_3(uM(fktvt)io|Js@{Z`E2HT~-(J#nzXx0$AQ+l3Wv6_4xV~t9csb z#0&ek#SU;5-^aPj-@LdY%N50TuB`(<9M5BK78djh9|aL=)L{7i(RGw0@?bbOvz_I*r%b!3_Kl|K1{a9vES-id}P#O56h-A-ESsxkWW*50xWB z8tl(^S|!tKF&SZz+kW>${p)?7SvvuoUW*Rl{)Yb!L4#2*JOAW9+u$wx_G9*ig_CrD zOytReGfqk{TneW1?%HMv8pUOMJ$XDo@A2>N5Me9W%;v_`LuIy*S8am5L1iLV#{IBl zjXXB}s%?|TliQA~&H4^&yd?s3! z0{M5anwP$(kqBH7Ec}MsyVP(!qB&k%8t|nq!?=^Oz3_!sUpN$cW=t;N%>5%63t$e_ zn~p~msq@OIAGC{Na;z?P{yg0WocE7BQf>Lco9yzu*miqc#?f8=veK3Y&%j@E#p`l^ zJfO_eEyvO#+~ntwp}JMp+>}pin*#-BI=g>P$C{cTXF&_#vBl*&-pF<M>nOxAS?No<@Xmf(G-jG{~(?`UkA{(2N zw`1<MYAihFGulDk5O<+xZ7TWsO*vpVpj>b~tcRVpL!Cl`O6l2WU zn=FlEEsC25vrgqexhXR!3SKt&7Uh7rnv3&V9Y@<`3!p z9-k`U=2JX-cL{2X9(@MEt>m=Pdgz%+T_8%^YHuB9v6Su4C-?rXoZFXn zL3&gRR3PKE=p9c@rMlM z?0WBFT@%&fjb~6A_#P{m^0(R0v7^G5@jpLA%xEBB$*&6&uv3wI9!&(&OF&f|#azR_ z6uJ>?*3P4QUbv?jrj@LLkhg0@vXApsh)M;H=PrBt70KE~&t&`b*eW#AP27Ud^z&

qXzk`;66$uzRn`Mjq>$cS#<=X_}X{(4e)*Hkq!Iuw%@aGba1R5P2<3pM`DHd;qb zasZFCngWfja^#J|lW!$3i8Seb=;-GMtj;kIG2vr(wm@is6hUzkI3X)2u*Ns=_e*ca~*@o4-( z@`07SImXLj>*Jg&*s~LS4?I2a>a>(5Z({3HWdA_U zJ=u||-wJLc?O%3~q zoFHV%4w@w4=2S;ZvJh5YkYYLmDr5GTZB0{Xm>0A{;&5B+q>ew*a1=Sl;cmmjTm3}t z0{ru#k>$Hq9%x7Ocr-Mi&&Dr2{_gUPBfeossKJJ)nxP>e7{5>OI{9vtMsC2N)Um7v zw#s&OGo>e~>UZKB?_h%N?A_GuvT715%<#OVQ#yD@p|Oz?gxv@IwHq0o(~XeLXi{ke zJy9f4+(}`18jQ?n&(MxFUx#z|iO{PHTD^V{JufD)1=S#I?DKtBC9tQG*K)id^BfN2 zfn*6zNc^n^gsMe|-T$Rns|Q{QK4^a!)-HEKW3kU$)mtag3G<3cQdQlcngD{iXLzY! z|DH*9mhcX8m>~jsj`})|C)tlxn5Bk(FGAXuxdKWRffLm9{AlpuTo={jsQYILsW{ zww(7%=_lkKQY}xB%`%S-iqAYyMu^bzUc?QGhS-nnWT}vpdEfW z?WO0$UXMzi6|UVw!=;rBjWw23RJTN3&HraYcITU7IV5}vR+AR9yX?+Jdf1lr>aHrd zbRSg4l{fAw7Be5(>010NrZO1>9pA0Jp!FoOH)B=*lLgy_+f}V_;Iu#e2a|aVqpA}s z4;0&`w+u@ngX2$o9!LM1ZiqG8`LD0f7-)j@+SZfy11fHF?DYiti(uwm^(ON=0CiQh6%h}L}8N>;H_@y2E z!Ipxz?}VIGfp}*eE>s@8 z;%Y=Sm4rwhtR+RcZ?u1Nkpv%=$f8PYuDL=NE?Mq(E%wi%OYf8GP7ECwjup9VfLekw z3}O;bX!^p6OWu#lo1kVc^y^p5CBO-+G!8q8r&z#WUYvyu{cTjV*^f?rHk1Vo_@Lx4 zU+2MJbzsll1_K&=`Si0MjqZm@mqaGC1(9w}#OS-3p1%xgjtDZLkH=**h+|&EzH(hO zO=}9HZsi%2O5;Rkkv+d0=sEHJNpoZHE)zlU(+~F}8qna#56_LFcNdnXm5t4RfuD-PeSmO@6)iHicY*H>@vE;H*E1W) zq=PgzRN!XN-{+vj0s)2GprAxsTfXHC)4hHR13g^-YEfY4B9;G!rC!Kk z*7^bI=_J4-f~OkY4l?O@E_MQ;NC!bxjstz)l}hIvfhpO3{tk!N5dkN~e{ok9J!cpc!d>vKyO&6xMa`^!X3!o_?ZGXG;OvxMlXJTe)0w(hSB*GLuB?Kwr2I#iLHGolf=mgS1=k5F!7rg_Q$`B-F zAhX7pD$?v3WTjc;kP1>4sPAo{tPOIaD5S{P6hfM5L#7eJtOFLxZ{GVt`;>jY5Yej# z>vGX%uEfr$1scDh&0v1L=r8WwnG{TGUrW;xdx^-TJFrF{B-~qiukS3hZN-84vUIpMTjBLiUu=fL#)c zHp2qM7t)hJ(3z|MQ`$eEC&&{bt0v;Ow^6Cpn(WXqZ?e*zZZpaoD$sQ;h(w^h7!fV4 zsPajCfJ=H)uqAp4_?y~cG~{5B4Mur6LgK{YZ6SS+ZEg(k+ECxFEM&0fJMYo_I7`yS zrul9iFnEIRJYc1j0Z1w`I4U)mp&z>i|Y;GT=<2_Umm{X9W% z{Q?`G&(z>-bZt)$_m55JKbBxU^BoG!oYmcbK(WQYKiHT&*DcS5JQM*PP5Bbtf3^$88smS!-v?`5J+ zH}zfi9E-f5)vOLG7lUyQ_Q*-~1X1l;s%Cu8pmglC7N6#r+MyfAWZ9O(-}+9y7Fw`N zl}&EWt12CML7#aYt;;W~&;c)9Qee5E`|0}6QJAg8g`}ss2^JEV20je~pZns90Sl?fOlv(`*D2)SQ8gF64W6 zNPY8$gesZTn7E{r@QZt8e#l4V2sX8f#du@!zEDd49%T<~Trf>&?O^e9X%#z(QN2tE z$}4@+1)3kqsr>u6X$0Y)g5ZVem6a-Zo7=z-}=Th!zIEZDPG0g6qOk)F21A0sCIUl-+!Pg6&DqILB0|F}B z>?^xgT?|!Iu^EWqdXz zc3v{~d%A&Xy@Q;ioE3 zQn8>hoh=;-urim%5;f$InuNHs{DxIkwGR2JJ0gjeV82ORsU`< z4Fc`?k#|N$?+|Ls@)k2MDUl z6svneZ!hxRKd^Z6_G~If4q7eh_N5eTTi@fWsuP41A?iSF8R+M^o@SKUkH9sXSfSOf zL=9nt>2NV^43dHgs>&L>{%3HA_|H~em*F<&Bm=EZ^kS)PVD!VvuNJynKjarrjjO5w=7CQ--`wh(UeG~r; z{bv1}!qRkavjdpO1o3~>A|~y}0wwvQjcLKiw?F}@7yuNG1g+9QP@Pd-`q5`Vekmjf zDh*DO$q`6W4C9{ilBG!0VuDr^O<#;#_d(hsokbT`{#}AJL@BI@M>FET_a`0RAdoXn z&$@GaX%4pl!BSsibtMIM$MHmd^yY9}4hU++l@-t*EN7SQTV+<4Ow6|T@;4kxiiy8c zyg9g54WQ>oHr<(hfrvZelS>0Z1)(5!VHDe>OYF@JLdOX<3N}T|zaKkh*-&OOf5a;n z$Xj}uK%8i|g7!7JBpEi;!;?!d*~|`JM{IHn0pX)rKg2;-7^>s}ULeP~d0k7*t5$WeRKQG)_YThbSuBgp2{f zLf=R?oK4!c{NF8fEsm_!_!bI<^*~Xs#?elzp56|E0)vMh1xz2UYxz2fC=Q`K9i_+Fop`&4^0f9htst=WPK_IFW z5Qq#=BcZq2rBL6{0;mOLa*ob z>-VpOdr?RV5guB+b&zeS+mw@YjcV_a`S3S$NB+2x`=^)bBs8Ypt54di_uy~u=1U6L zg$ozBagi6C1HW_}I3F?)-AP9mTGglS?rd9DJ00={9^E0XKiGYDcjvM1Vfr`wr}qK1 z{@+jK_`~K<6sYTN`8q>u?giDy#Mgsz_S0lZ+^Di++Gl`W{@)KQol)qX>s3z9FVI(q zxY$P#-;_dau2yvOPgSgs+28ip{C|YN-?vc~)c(JI{%mgjr>TfnX&Rk?yP&F1Br=Eb zpHhX+Ql(^npTi^s_I7X=aNkRSPC`3dAyYa`w`(D%WFTH1WLWPNi#K`QKF)!5x7izn z&b)MZfThS}8XG@sj14KZj8tV^?}nJQ&)SatIzzOmh@~iD#U%Q^YC8wXx};BB@i2pb zgU&~sp&4OpVXho#X=#Z>RDRm4FVOl(=lXh+m+XuMn)v~N5sG!`^U7WcpMr)v44x#O zJ7s~q0B|6GmS7`?+#vs-aZq5K4uu-~{bq_&a_prR=G)UhfBtMGx%GCe(Q5jScEsd< zTR1C}6kx{$87V2>ey&D~nN3NqOJiZ7)Tcata#5(i`T__&4~O62(H_v^g08!D^^l)Z zzyJc6eSqg=hd{WrUSP;jgp1x`h)hVZ_l9iI$4U2|CP->sz7tbu(zXP2WlM^;`Ry56Z8qVl_J|Y@Y z(B9JWEK;=*q6i6^YeBn?uI+oC5$hs3SRGr{zyFx`V%LdDD9KLe^^dinmh^UW`;#r7 zQE`tl#?t?5#}%WQQvz5BlTgb8dV2bL;qDW$FN-rI2d224vD()6Ao3qi-Q0d!Cb&jv zQ}Z!gJ_;c42b-Vr2%Q9cu8NbB)0dDQ@_|&%O% ztS!t*yznq~Mv+r1gwoeNY9>diX(#rDJD<_4{~lbZMV>18S{R#3?l;=AY-n1T$AO6a z=}B@kgB?+wSxHzYAZ!32tiof4V>6hX-Gkh3XI_Da3lc#|NBz{fP&*cHepm|9I+3wnEv}5l#QTDu@Lm+N$dl#+vYZV z5aRS*=#Oj2FryR4_{GeS7C70_Nm1NqO!QUH;5a)sV6nkf0REmsxWv%W)IXHfIZt`m zGlfB3JT8syN_7fEHaplyoxu>{dsqt96ZYH8g~<_DHBsEA68(`+K>zY z4o6_K2<+u*%*%n$MD!FTA5Ple&OtDrPQ&*AVDbalJ4Pc6ME&kv7B4f}fSh_c`73s? zdOtM)P-a!L#yS37uY$rbXF%o^>&a`b>)HNYKabQ;$AJ=Ztf*xo7a`BRdOFqsvlyRQ z8$Lkrr@bcI31u|*H?m{3MLzOYaw2VSZyx2Ujo zEceBuQosB)fiT3o_8s|=8kTVV!FuPwMl*pE9i1p1DM!M=+0}RvXQ3JkM1XjJ6l=#n z#BWX2Lbr8Omn7vZHX@??qmKQ=&@2JR4IW*aic<|w2wQ76mDafBo+9#z6oih4Mje7500p@-csm71#6tdX>AM7;!b7~9w@|N@J zPUw+yeAXNvhSntScy)OR*d!ELQ>AYG5O4~pM}KxYSeKMCKr|VG6J5`^j*-1vO9JEd zbusE8Rmtiydi|T_Q%Cd5#QJ^#(Gl<69A@mweBTPuvi%E(hKStwpcZ*{Ovl8BcN@wU90n`u+}1q#Upn43Ou3GZ z==6*#9;K6hB1Cc`nO?QcCv_~TE#2S$ra!JE7;dM37dr*tFOnrt41>^W!Kq z0K;^1177iXvMQ2WP@eqEaQ6oQA>4ZGAtiJ2 zb~7BfNAhRj;6?HGmV|y%hwYQa}8!u0XW%FlJrTFeP-=`wkE%7N*u(edIO0i*zh zGVeV$Nf#>91SoPKT>sXiQQt07QRkTjFt+!?wy`SrjXgJjO7m__lpZxsIjB2k0B46D zE(OP#lzwm)oZYz$DLw;MZv@=rO!5{=S0xTO30g&QDLqPzFD?3qlyz0J{q2ot$g$!= zGy?&*nax|Vl0yqt2i9;crn=J)cB&^f{|BYIVmpn|)J21QUK0;}VKMetvx-PIROv2u zV7L6!uPfjob*?k8T#QDvBxo1n??ckWo+h$}tD99uuF;tOd6e{E7?UE!kX)}+bE;ai zj1dc9kKXU3pDV6$RM&lLWj3R=8!#`Mgw7t|FCYR-LvlEYAD>32Z z>{r?Lq~a1neG<`hmJF-CaY8nDO>dK!kh(&wQ{)KJSl@mR?v=xz39;4Jw~u>p1^~a@3ztUiZ!a3RCtUd-;shZivm%6rY`Y7{3*!pNa=(4P4-utuPRs$v z9hC2PwL%`9;yx(pI#RKKg2~oF(quy-z*o~g@j|$>rc;)`;;DO_7xf1mQ{d4HZR%;6 z$20YBJs$w`vxGsmclBh0@A92eK4+BxBuz+@U#5QHDgf_L1tN6<*tuw&Ut_?%vWwL~ z=3;X&bnX=0#E{>@AUtr7p$Gp6tBF0FY@9KaXf>W5XY3a>E1!Kt`Cr}^SSx*@TC0Cp zUi}Dv{`|SMn$vA|Kf#O#(0tHqc_0`z&+vSx69z#;x^&2X`-Nxp;OO|vk^t9fbYv)_ zUdXZolvDdJThRFrBmgiKR!3TuV4mU}sY5T>D7Lm>t4}T~AmsU^q>{n=J-S%V#ms`g|~sjB4dS)@p0Tp}{~T_MO@tpkWm% zrwlaL=%c9Yu_Z_*Mq~o1G+n?hCN$W;gH$MR8a)<_4%8_qRw)*;mBhj{8eY+{8c22) ze`VXL*GHgBqag;AmBXdNVe!fRK-_CnBh=rn)4snsYY|@EhW>TB|A~Q&FR0r;dmcBU zKEd1>sA;c=QM=iMw&eKEeBr+uFEo{eK`NW?McSyDSn|My{S09t-_E|TbrwwNC%<5t z0HC{{&cl_60bk^w6sa>R!d#s>0TuVZ=TOpr67U*gW{|Gu&)d4AsMa?!-(r2bT>a`C z0Q%5on37H0!mZrd#vO$93*zYH`Mw00{Z}B6|C8_05Eh*hiU}_gkRiWdz7qSutQ>`b z{LU*tZiI@hQ4>DAJ3Y&UP8!Mr+gY-lV0N7xJmHf=SC1ky`bgV}LVZ=@G-VE*9L=-p zQiAPd((@F;8?9$j7>%Q~qjJH$4O}0C7Nt*3ypVh_>{l+#9;aNzy!G5bSlV$WiTQHu zgKDSaJxtJEJ)<758MNYg`$oL~Y7!==z<}sE)I59TvDT84Wp&0wbCQ!-_le$~{QuJ& zSE-LxYFCu&XOorW3AjPDS*ljT^5O0zpKnQMuUGEBC24j7xDK|%B3yBIoo7(durBCv zRyxV8y+gWgwd?;v!^z^8z7*Q13khrDqg5YODmD1-tNG%$Yts1=w{E|ogp(~kbZlfV z*}S^`eU8M68ako5^}6ie@7y5{w5B!mj{WM)z@=HCH&Ugb`}k zd;dQW#X*fuC>m>2Q%$2L{@>nHy!h8vluG_hC;7g!fwJH4OZ5(2^QccpuqWD4))FB$ zGwI|;FFiAoXFbiQGGYPb)dPiI$It71(e8Q~sUB?Exdj~0Et*qIIJ8zO#M!W65W)bs z^gS5}mMTn_a(%)|wm>CM8Unz`k$c*|KqG!Q7W(f#sObNI zOHU-`sX8q{AgHaR$Vo0eH8woq{O0ny-&mqC71<{n=7B3P|7@!0K zfA&Hl;QM3`huZUKNV?yEf&mvJsMwB`6c`gq9ZF{3NxljcjBsmCHy*%dCRdEu2 z=dE}2me$koB@xCuEu_m%=JCX9~c%F~Cw>l&&z0leiZTMa(|WzE_` zG%5Y(FT9F-Zy))eWXchruiNMY7aFB6L4gLHRg?oVu9CraCg7VMfOf5=1&5wv^Yl9> zyV1qw9E+|*@}F!G*6-KPS?Y-jKGS|OLv3knO$KWa2NJ~I4^${}n9}gSbNv27u7G@_-TUDM)g#3l=aEC;<_PGTyhLqc; zRkH|S@_>=U@00;G@b!cVv9go$=++NnG^CTlV(!WNb#s(vpvv!;;WBbgEW!-bpy|)> z$_{kNKcT(ll!6S&01q1|2=>o1r}y!-chx8v-#7AQzQOU(Xn@Z`MQcj}oc1@2&F02x zAWn6bgXDG}IXs-)dl$SY&I)Qv9IbK6ngSMU!c*((X!TOUi4D<=Iax29~-w84%2#yliGVDFDEqkE0;WUmmj4LdK#NKr8Q(S^osw!Fc9`(LHYq+ z<+s41R|sC8O944Tx%@?uirfz^&;lo*za6OlTaITiYEcxV%VR>G9n*Wg!4ob>2C|SK zrTN_(y4PRfeO0l}@5B!~B#W7O<~ z+WzQ}!Hih^GtVtB*C~wXjJv72%t#5lfj}cKgCew6h*s_D-Ye`VkO08Me?b?lz{MX*mc1=!V%1q< zvOTpfSLHtN_uviyVYr*+>v`SAU)I7MUjZuxf^|-CbH!7`(%?gZlb2c&Y#Z~H0IuLQ z!HC&tO~z$r9<8<+W4Dy`P}q)oH=_*><)*@B0++Tx7$4m=(axb5U0dWckx z0gG+C@hU$^D?pvIDa}Gh(E0dXNCY<r>`_~_tRoH_1L`J6IG9i3z z8=;!@a@Rnav*?Ru`<64__8k#Z+kXq>x6`5fF9W0(mK+4KMjALV+hi~Slyxb$-J?Q# z%L);Oq}}p8cSQ&YG$@Gr(TAwFaT?~HKiTM?jtiZ*o48>PWkC}YroN!^-6bm^NB3`E z`$21&Xvz^!s19V>dO5}>z7F%6aE5@c$;jeXBSWL6wgXj%I)}$Qz~D}zN^7|^AbEi) zm5Uk1x2yE4aNNJ#M~cC{2b9^-7u2nGu6?jll`hlYc*|TK6T|>GblcV|(3TOhd5ii7 zt+&axSZ8Uh-4MM(`9ZV+86)VahLpFaT?oB!_ncq9D5(kn^O|(?wOvg$!>-K$w6H+d zH$eUcJ|iNi=!&2MG$l#hv}E?Xq7#KrC|P;e_a#YhIQ-_i_&4V_8WXt?`cMTbfYk+B zeGrI`RUzaNqMom!{KQ|fb606u7Bw*EhH}>a@g`GiPiQyOGAU^jd?E*F14^0}q4==* zw#F@e>D0kujsIlF+KJkTWsP=qt&#fg|3(}=kcI;xmC}=Ro|q8uzEpn$^$KrIE{5c> z_?Vj$rdm4Jzr+bl26JAP=_EYU5;XJhzQ-YZGX1t3Qn8BJqE_R{IP+Y?I1G|HkGjOg z7}`QhmS`A|k^i4UEiAJhqGjkPlNHmXW~>E_dkUOK#mSI!Oz-buXX!&k6Z8ekWBgs8 zZDL>H&yj*zM9AC-CIJ~HzheuHPEb8tge%*CN#sUiROrdHGQhn}vxDx6KqbC*riczM zxL5gVz?BL_E<0yl9XaE`Z-UPg0qB4fZ~H4apa!|l?Aqg}2t0wQXqQtUHS=!=^VD#7 zlfC<7)Wt&jgL=gbRzJxAM(2~&O9h27{}$&92uef4k^$aVfxQt}ED$sWB&arckfbja zeoHOh0rLBsH&wIzgWT6UygS{H!d3`e_yh#C)7_js2Rgncr0$x`ygQMC{*Oi10i^|) zLVdt@RHWWqPZ6lyGK{wBDLPc*$*|h@iOl~uBch<&w{#j3d{y!DRbXU^PZp>++Cnw( zjuW5rGnPOdP^f-dU7e_bjK;!=SqhR(2`1P`L9l2VqX%$Kff4+$d@P}eeo1H}+ltje z1app&YOa0wxoq8i~Wbx=|#K?^nmjEyh!q55f-bxVpEeTU4OvOLRY0e+>Yy?`q!l{3Zmxv z#Z!=t~T960WDD+3oBapr_ zHcz42DG(RMD%Iji4thG&IB@yjy6be>$Y;TKQ@{n}=aZD664b(+ZOSz$wk!#TmeYDL zB+ChbU;?A_or7HY(QB&z+KJEGdFD>}RfD~+PAX2zCk|#$76yUU)tevfgqcc(7|=-p zcdZZMf=?2CC_(A91-l)jT6ZOY4#cQxzvFk}C8i$*fnT#NxrDj^@2bR)P8zI)?I}yl z$0!09_L$5DiN3otbLA)+$(vH|Ox@Pfu zZzp*%s5xaW&QGMs_sQyU;sX06`RWeu&YRr!uhx8UP5w2r4qbrT%_AtZL2#;JnTjQi zI|rT!j(zimUOP*LfZ4!{kzY;K?I5DW42S#m)guqOIIV}uL%z8m%MkRd4k$tHz-8MN z*~?S9p7oTyt%`&btHdrrwRWv1t9J6V1?xU<#?+O^<`Qq}9X-H1DLyW?;+DqLiIxse zx-K`(GiOqb>WUp^S=zo|k@a*}{aqQ%MN2lP)+0yvZVaoQyXA8jqU)n@L44@i za&@Edp0@;|T=N&+`QOD)GkFq-JOX+f`XsMF%Nd>tDA8u%{8d0$w3|v+)@(eukEu!f z$wt_1ikmqoJ6%m1RPY}GIQ&i26$&rPZdKo+Ze@mOz(IKtNc!GfO2MwHy zt4j_aEB`ny$$qM6Y|Ue0bPYLs`NjRj^@^y$%i= z3&?fOv;$eK$R^q0iGyW}dEE!3$IBxC>cZF0wYw`nKA0I^AubqjJ53U4pTooigsLer;s1n7w_(l=a zVya)ViZti=;Xxk!da}Tg^=ZX!`7?^)#rTZ?L-U@U2E*p1glNYRlZ9}4&P`8n=iw+t zu&991%FdsZv4b>%_W{nd5*OZ+;Mh8wl}a?(f7{)cdxQ+h2(>>Dk`9>}cRc55>Dbh` z)rZd;P8IA%nCzJR^r>%j`w~zz``g}AoJVYNUSHPX@20##JPw^QVKJMPY~W+0%Dyrs@GFQJ4U5shi_e3cuBt!P$63sc&}%t){!{% z)z0vO*YcaJLS)jq^V)o{$j_J}%bSeNZ}B-+2*%F%rSfwmSnlJj=g?B&BTqM#m4?PI z@Ib95iGz!mj07`scO`$3HAaoO2PYTK5ME{NjE>N)tt^jM(H#^Yb9g(M&}}lyeo?QS z8V_Ey&LLer_Hi4VSNIwz-79DlI7xPcHcVww>-LAA0uAGgPUa&V6RpZQtg8CGx*Ds*W#Kvw_wWe}?C10jY#>E#1s6y=|* zRk=={nTPYAOy5ogcLae~_C3&G{LLx0KCJ@t$38Fo3!Y$dDE1mb#SS@(tjORG%QKvP z-!52^O_VW+4~gF0s`(6@5r+P$Ac76NTWg1v#|$L?*}#GIfSa#rXPA-SDp%=m!jBvq za9VU9@~(<}=iZYF{CJKz?NEd8#KnI^{Tf$i{>DW+JDAHiPBz~ChLY>|`X+cV61 z7Wg9C^SFsvF9G;x3I%MKm}`ix@~;Tx`SHK<40K#<{W`>o{^}VGLM>NBAJh0n^Z9g? zG@jRvHKLE2GxNaTG!5D8qD1x5)%cz@?)nPhJAt@l8#6RIKI3G(;k@uhGX3tTPWe$r z`O18lQFi_jj&994pSONy(^#NZM6GY~fCWnWu94n@fL8_I_rVpWFL55le$l$a*aHo_lLY% z>p>4Ep5m0z3FY?BzJu3jK#NQVw`5o*Sri=0qO?_=53OW`7WXp?tSxhLrq<&^U(ESG zJGklm0-fL|3-wpbqGS2^Vpf}BzdS-%ue{ki_Ad!mg}v29Kae2vt7Z5yF&0Z_DqTspCz)BcoAsx^ZHT`&6F>F)U_}Oxc{lSj7~*Y7&%{WY8!BL0}jH_5lE^Dhz| zmaDK(6#?1mqSQ==p((yS>3t()+l~%ove)n0Fqkuc`e{mV0fIbRUho_HI^o z7s}|1sRl!k&H>=@R@SZ}_1{E1d1|8yG$dSernMTbqP-(=vg0?6EoA$o*|eXG;%970 zJe8(Yu#y8qDFoA`?`@Q7jwoMgH(RIt?l0OosFALz(af z!ywtbyf(aKWz(EwQXy3;AMK^Fsb8L~!#R(JF<$|ntuReTY(Q=rugHfd|7mVcBLmxFxAA1dKrxyTiwLO~29j-+jjhGzWF1o77tZ_!@ zZ~8C@XfcUaCtP_XN;`&5J(%8fUbOyOeQi{+m)aeM(YWZY!E$VQ?aC?&8?Djqt&+`% zye2eYTI|~uw{kbI7mZMC_IOk@RUn3-WjiwPvIpw@i!8(R_I6d}wLe?M^}H+yZwV1v z82{d$`wTj*5Mo0n(3nyf+j&1A!9=*KBVg$<*bVz0dv!0MR!v)=+8ra9MP`})wxB@j zsZ0B@alX~m%B;lniiPUK{aJGCL(I>i&Ow*S{W*>6rrzqpmKUbx+wdC0hgG0#g&WLE zY3HFRwKo~1E#p_0;5SA!@^k#D3IF_fAXpY_YxO$B8s0fd^Gq=tmHNzJThq;M)Tf`- z(l`S{RV*@7w&Vn0b1kKlYuYPOzglx{Gg`zQYy|i@gM#bRd`Cjck#SkUNHB&x{2Ly^ zQD2>T!vZ@UuoM?=!6_-mCX`Y9$73o*?hTRbeUR4|lV+PtZQ?HxGsmerJKIHo;9Cqz zvc7Wm3=Eit#t%8$Uwa&w0;b-TN6w>4fj%zKQ&>%nB~#OR&xW>I>!5)7Rx4rbAR5Ld zd1vX?J8JdtmELoZzz7!sy&UE>*abiJjE|uWqT*(({aCljpIMPAsr8kKF@K9_gry#r zFsFHGd>`UkaJ*JR;IVINqzem= zk4zsk9@=

WNmoYtUn`+obVHvQvUv2z`~_t!ycZ-o_cIeuOn#$Z|GZ;yAYO|HAc- z?bDnoAq8+OSWk)6z2{(5)V)jdh^!^@F^c0vgG2IzqrN=9I&rLtx|>39B3#|L78 zf^Ot{%`DiCaJz4rTpCTebOH=I>w9*ls$x}yymkrY*9LVtHgCNHA>kfiHhYb z#V6pOG|cbuHWiU-;%JxoTD?m(#z<^|QSpc^(?w0>O}M!Ed%j^9ip0@bC1>K1wprp~ z$ziOY_B+FXZoz;1xgUDyrR!bWyNRy1j59??1C}f|x)M?|X_FQFt;2VIta#ZHn^Xa* zJ%Iv|lmXZ-c@a`QFZM~SbK4Bdw=C5l{h3@M4H_#+sqRu(pbH#a?hJ_ohPr?f0m=m+ zVM!md7s4gJsSLQp!kWZPRfBo~jRcus#Tts5PNgAQaOKVW zx`HCt=Op78fDU0^o`*9&7Zo^wf)zYHGE+S``hL zgvdg@(_gfYl#EKpJnGOuT?!o7W^edR#C!it3=&%HlrUblX!>qCRLICpWVX<%VVPpP z+~dN!J+u8$SuvZ{F+%Np`5Pqva$VzR-}lqDX(J(POk<=tL9+qE&(@bmfqIDQ`-IAm z9Uot9F-{uamCOW+k|UFZt3)nGlv;1N1L8UK=}k7M$q#k`JtmPSD;XU`i!M0majAe@ zjl@-*F5fb|r+kbwXiS_aau&DH-C0N@f1(r@gWbH0rd!K@` z&#e#y*rb#` z>{9B#^bw3k{ePDNARIGC{!^E-KRBl{t9oU@_n1XksV;r-t<$m z^+VfL?1PI$q+Fq|s)!=w{hX1}FR&=bq2@Kq^-smRlN@N8=4_Pn2aIzMh8T%SQQu2w z%1zbxb@geLjIz2aQRMsAd#OyD`ushrQ6WNg2k|^kzc!?0$E@7ls2TeUZD2}sLomfR zbhb#c@yDE4*F|)~q^d3@Rr61qXs2uM{c8zUv{!2! zS82_;>CCI$-SNkoX5vZWgmYp(K5*k-P*UxkxyHuYZrqh%N$!duSKO4X1NZTr{jgu_ zJj*^;sc)GMPdmGQxBiP9!kqd8kZZGY&{^UI_n*dBX|Gsh&( z_S@T1QMLG@AGLVR2iD0P%YW-;8@z&-WlPCu(UH08X5Mm@E3G_SxbmI;rs93hZN^0N zPGQHa#4kA(QRenQTY0}`a_<_nQHxTI6R?Qi1g-%ntZm0MU?&b}7tUjncLQXaMkGS! zpQbsjev34(>1AzTr@J$9Fh8utQq|)`*2U&t>U4|g(%+^E)zIIEo|f)jPBTxc9KX4< zid<>q-O>IUt~PebZR6-yLUhn$LXhZi=FD^eEuJ{fwba`THtWx%OdNN*=A{lzq5CpcPP~H)CD0@RZl$5KU@JrEDqjQ zxAi5C5<2x3%O4v#fCVyiRi3jA#OiP)xOMpCM&+keAelNb_i z)^_77Yh_v9+Yu@j3I!3=)N@g({k$IJ*PgbkNn+NW9v7`kE5LYC z-m#}ZcN>^(Y(=405(V|$021j;D`m91vl%>JhJU6P3Wq^+bxcpi= z1eULD8FG{rT2m!&r2t-`0%E)XR+rpK!3dnYa}z#>!nC}D7|-7Hx?JEYW8DdNY$m_`LfL%b--=}pe>WL8%T*s1Z6FH ztzNj;3L_h1T4HD)`<{~aWd#kSr19LWb~B%9Q5Q4YKJK$ToUS_SZFnu0v!}htvJcC_ zhPwpY@Lgwj7F;t&JEhEz)XqH7oOP{JmLy0DV^^ zvre%OeI%h{E!$)u=%>9DAgWl%tFW=mxkn<%RBc zLRSsNn0h(*K3k{bh_5bD>=L&`69hgUx{&z)P6$boRPugbdlC>gv3GR8~6Y zcPvvN(xS`TQ|j=~)2<~Eri*pMAA>xo=Cg=_Xej(m5ml>Rr4=plsL0{T0(;3I5-c>z zCMKu%e)GVwo)iEb8~*}L9H&nlsd*n)aSr%c2xyx(C>!(MF9ltTy9EBn1O3t*?&E;2 z;@1=w+dq(}fB#zc#<=tn;*!Vv`Izzhf;t32w61o3WuW+cl5?Fvoy@%-Zs4d*`I=l@ z)JpF!DF0)hx|$V+t(T9uON$^>ik3x zE#ehY^}XX7MU$@VD@f~Xdwr8uRNbapoB6m|-Q)1^36}4$^#geXZQzemlbE?c($A-n$Hh=L`(5>kD(L zzP5F&723OQj%rUI)&&))dAvC~1THd<9cQS~eUs%YJ6>ck3QI*n?>z%W$j)2gN-YU7 zI$@_iMY#qH%?yh;SCY=HnDOysf@Yy0rJq;4`xL+a{U`gjwq8qf^4WDpr43Ot?X~@8 zrED!+L|z+0Ik0SPZ99-W+IiPJlmAUrSBqr@w`5ZT}AHKk7DAe zd{k`JI@w4*`$n&CeA&!%(HZ!R0@e?s?ZwZ@764gRH>>5dt!Wcz_Mxztyn*085M}v{ z7Y}x}n$ejcJO=KLnNW@`A3X68cl?1rW*TC4!!D;S1tH`P7j9wXli#aqT8dzxduSiDSs$G=aZYi{uPOof z6l7Y}y+soI*uSCwlLm4`OByI<7QhpV=Gkdd-2?(uP-^#X7#D7NSRP}~8ztS=&-Y=W zLlnpiRWHIf0g?>X&>fU@$k4P>K7F<5eIuX=z}g%rDODE@-f^N=HQbI8kdQmT>-HGo zk^-}Wd?|?y!m?Q_rX!BwOF2h8`nR>7gr`V-(Cc$8VHR4aH6D1dAln_Ne936acRSh+ zg?>W=;x!x?uGP|O$>hK*E-~K_7`0n*^`KKaM+6#)O8Y5$R^u>wWo#q{+Risg&hDQo zk(X_wtmx>l_G+)BOU}D<=HE@Hh^5fldB1H`R?g8SFc;8>vvx z)5kA<5nAWRRo{P$!T_y){J(M*vvCcz4$>5FLnB6l7qUta!_sX2HDc$V8V-dWBU{%o z*tp*^W$%-_j4-6GNw_feJUL=mc|JnQX9$H2c~|J$6_vDUTm%<#e_rc&;rY|3a~4Oy zCk%J1L>rFiN?ap;5pa(h{sFxZXy+wMWNn|tXBWxvnE}`l!D&xJOn~2!*j2uRP#<&7 zx!p@wsM}>pT;0B#kK8veXl#P>#rDh_hMIeedg62MgDix91U)0|zV2If{ z9qjmeJjRlVhPId|qbH@II%rHl0NnTMe*Mi{RpQaR6uFgo7Z%7zUEm;poztY>;6Ski zpJ@+#^87yEy%UI?*CTdc;s)UHm-q9OOP|IlIM4am*{E6f#}GW_mR}3fVNxmwX?#?M zZ2utAOr%IA@W7H%Bj&%(*6(jF;KU{rdV!KBukZbR zWkl2n_bTyk9fTtdMuBS+hGIAQ-ayM+nBIwZni5S_4(-f$nELM?zy%BYOp=+o;Ww`E zW0FBHgb{xGg%K;W{e7?T;ahP7zR%lN6l?wwMWj;z;tVUTH{9I9Xhdox@edBoZS)sH zF|%q0ko>RwY879BM#UW@54?sD&ic3+mV~JKa{J=2Ve9DUr{Tl1_0=3{DS>yFy1oh~ zM$ea`FsToP>es#}d`LtH8%iS;hnTmtODluM1HLMVWicVtU_es?6Qn-TSLP4xlIMMw zPVr8*ySLg?i&TPqm#}!#O0OIT)gC^KenQOAstC_u@^o*79igTVQmXHfp+Hitu636x z1=S2I4Uv_}_a=twe^ze{vAK3|eUl}<%fR<52cCZ;dS2XXgl2e#Vm2LNSfxZ=tXJNq zNwL)l8F)jeV0hc<QaepM73RpuwOf#v8L+U^Jk> z(%uU$G9*0>*o@f-Lcg5qdN*Af46Kw=jss-bXNW(#X-d9? zm6|YtTxXgz5mFvX(0BHPrK8ls5yPOFOEH%~&|ly_+r_)k6sK#&^CGfk^9>Wt2|JQ{ zDkX06S_;`$F_;vkrd7jgtElwrUuU@(S$wFSElXFv-Xf<7xd$v#If^zN?!(MbOBZ*% zY(SA(Y!sypwN%f*>1$ukDWC3c4>q_l-oO=rcjGkbt87<#!pXM!x?tOTc#V@X#|W)E zZYb+g!A~fwaLhidfZ?!6N$y(dZ^NWu14C@u7qP zJ>x?1esPu8rpZ_{`pBi2l`7HY2I)A)DIl2y9%f=~fA$^&ZQm>35C>0&K1NB@qCZLh z$qF%cHIVBJsLTAws+snwXwg5z1Xc(CN_)lM{1l}(fr2}Q?qI{GZL9`yGk(K6dODqT&K1^4L?YcjigM{_2ns@$=B8TKDx@giOAWNr`& zH7rmq0KLE~M2ZL06jw(0zk{VWH{nQAU$GLV`o-d0?zk4h9l;Waxf5U ziR&4TFTre`heIoZE^ngrrJ8A$-~1Xnz^qy|F~((q#?Wgm%oqnJfvG>zLIy($r7@VX z=UU;Cm`_(ciyz_&k<%D|QF7<|k7giLNfw%-qYB$`pzOz%IUAUPlz7gKoEi8VRh{y% z#!8Nd@Txpv@TG|Bq{dFV^XXBh5<<%11yI@OcxP8-o-da?*RKOTVt&bG7|IHHGSH`= za}j-(wF5h4j$|4KJNi`@e(}eq&w`gc^3b;um!R(V&32n+fg6D+z9SF^TO#J(LJJ#9~2#K z7A0$>Q4uuWY^FgcgXbas@hIwY{#~oDM9X{OhhjCd=Ay))`*s z>%|N{D7gTfe6a84DL@hxef*+2t1GVJ?OV|&%jCu32Npf zM-zxgF&`EiR*YmbKBgCYD9jtXnuG6ID8Jd9z=3-&3cL3|wtLeo3W&tf_ob?CT@CpE zDX=0&KS2eVL6VvJx02PyUjcTh_1uxaG4|8#LnkX9$1ckUlg-$&S`F|+7Ie(jOQ?S7 zi?Vj;0I<%1yx*%1)0i71N})t{jde~CcfUQs*PlsjTQeOp=!5B~$ zPlpZ{sbxzgz2t#jJ)EAmd~jlVu8g(O`Z!XeNEpeip|r%*d_FL_x|Va$C{fE4EZz;NfbVzZbYr(WE8RaDTS+628_ zagBWo#s5dtTLwhceqW$NgNT%X(%s$Cf~YjYz#!e-jigEl2q;L$5K0U=bPf&DB^^Tv z2n;FZ5clx@{`cPVfe*tu=jrF{XYaMv&V?w7?Kl9KxyW2`00D{*h3Z|MNzRJUkzy*? zoVHj^m(7@~a3=T}t7{hoY)1-ywZgmYcb2j0R$^V*iWDTU3>Y{s0Sxkbl7*Ely*EF; z|IsH$?1+$hcJ@|idt~Dr7*0GYlDFhnd?S?4zIK_+lk+R~EBxZH1e6;JAZF*Y+VMOE z$cJ%2xw?H6W4+E%G5?Zp5RR23f$ff46q5!(0FRuU@Hv%;e|oP)r<81F#@ zI{wS&C8^jTng@R0(afVY-0XCVtBs6Zj}D{TidD=Os3V+4OV;)2Rx1`oEhC#7yJ4ns zZ<4v<3siZ|kpKWs;V}HPGKm|e$)7lXl!=eKm_iE*i+>7{k)UX{hV`EEG#HIVb}`l! zw@{3__DqBuD}O-vDHiweBm%RHi)K$syN59rQo*p$9g8^` zFx%%DPE|^D|8`Cd9g?3*{Sq@9Ak>{f9VeUIO_~&=>EnPSq7;5Foiv^b6-+ z2y1jQ;JJILAS3Xm>uGTWSk96eL{e7cB(y~hN&G@5YuiSH=V@< z{y=8cD@I|N&h1(izTsyKUqNQpLSxt=tzR5qSNUo0&FW=AA1(T&-QMrUE_0}wRy&Qg zcWJ0~%xK1D)?@st4)A0KZgbKg~=x+*h_$r(%k!nhW$-`F=@es~jQzR<@V2F|l zZx&c3$=r_*-hQW<%LSWDqWdeHz%zp$Vl@D!v{vEIl)t2vSc~*wdB@@f0llYzYjcF= zSoL=@PQ>IG3O9q87sgZGfb;Z*#V03$jUc5_FkMS4@YkOh7l<@9Cwd-P7bUQ82@iW0 zv{<@^5Bg{0o;*^OqVCbg)blv7i-kPDN+nMHm>Ybp`02MxZ&JRG`F_=t@-fiE7!$jI z)hb7X{5_oCspizC5?n0+`c$yL@F}3|0G7cr1WvNHAjM-N+}oQ?Pa4ttIqmTHD@mBbjc{*w2$fb5PYP#93*CM9ksB_9^|<9Nwsl)D ztH|0*m-+(GCm#UwiETQtND-oEQfUWMnKX|kOhSjNRS^*s-=!r|LrFSI(h^bGG_IV!9=md@4iZ%GUH(nD3d9Dp*vbgOgzpn; z&VL(;<6B{T;wtrz_nD11oQ!D+EO*}`mx0Ar7}^}n)H(b!rt?Ri@t(tmMU?tzPAVa|9jcYk-NaQXzClTO3x1u-VLo2Xt&%D!uXAFSR5k6 z47>fQ7q04wQCdLv>Y~?lIQYdUrY+1nu@-i+=Ke+27q_%ykBP~vK)7S^Ymj||kO_p0 z$w{I~;H_S0cG!Ek3$jwSUp(hg!d{x|(H#cBa~Zhs%G>kgySVqC7lr;S zB%lrrFx~a?DPvw3{i(}RAAy^P)kZZ@rK;yhUqCq($+4J-+gYG7NE=%H1>@9U`64#) z@UGBt(jF)lZJxCdwYPEpBlUI=d&z^pR-=nrvC-NR*lKzMG&|@7=FX1+RKENr>(Dbp zq`6Z1`d|duvlks~tN8HSzdq)P`dIAPv?X2~P_ryYz*Kw_haPXffK&zgqV?S~!rwcs z?jdXM9YSTKE_~>=MbX@fY*|*IVk7;N8{?hk>aouY+$pup2J6?FB51~Qa@8(2_Zray zM3qqBo#_LcT!Pe&?w5Ci_0h8cu~4wi1JIk8Q{0b08NZGgn0d6uZv*}mV7!$^42lj9 zxb@7Z~HYp2bs8Y%B*jEZIYiIsdQ>(-owFU12GS(BE~%M)auv`*1J@SApFNk zgLV;lgDzRMC??W-@fUmVW)kJd-{VS|=mT|V})_zIVA#ZfMs;ZE0< zfFg^y(s;_#vkNh!oLwuP1eJG@=_#O@DNqmk2DRnvt$0=B2~z$&V{Qx#;WB zYyxt=VwHX6m-SQL`G{G$wPBAUeQY&tc3l}~KhPJz7YXs5JIz#oHm0b~B$N1Ov|iH8 zL*VzkTGfvEPo z6?!OX;?Hw3-=owjQtsJGb{pTr zsOQeN-hZ9{G+%8?9wI9=oh?W(O9fiks-}B|19ot!>Y0z)OD5rOD)avlHz6Y*ebSrH zqv(Au*KUrUHd{=k7YtC?VId~HqPqcz#mz3rKDI#?7P1d)H=TjYeCc6-0cakG=*a0= zW|U0P$>1i({*{SaHj6pYS_K*&AP~#;R5(T zJN3nAq5dEcClz-Ry6diSlg$ow#Y3z1h7DUqb54?)e$g}jV3xUwh&aBLl)h2~iUHaw zn88!C?IPGg#7qXHkK@_BE|9RR5F7P6zswrg>5i#qe&<`U~~Gr zy=VeZ#}T0ImF!N%Z=J`y_}`xylW%rxx+QK#mZYnu)rVTN;we%3ntJ`%>4IZp8R&f zjLvo6&`rhEszVHrprC~*vYRbc&2$|Dvr<3g<&!cJ_G89@8t(e&Z`*NKOa4ZFurEuj zG5`ZNPt<@+u4lSl<@V@s{_Mp6ypaQz>OFv(JU0z~iDk2hf);b4?$qk=r`4o}O24(P zmdE|lsn@u9w^;87iaSwBhqzn@(EhLhNax(x833up_r|YxE4o$HW}c`(Zu<__uKDCK zx-G$nLz`?*BoJXUBG6TE_l!dl(_EpEze^v+onkHCcb<0}x`?-jEV0=~iq=KFLLnvI ze6@YqqT!N7eWH@#QVOlYV=$|)yz`-4- z6nxQifUUA4^f}MM2rtan0+Rx?V3EID&mJfaeG&K-17AWs@aIn~wtjG>aqqhxnl-0- zE)XZ!gbD@2U&#w~%q%KJw6#TZgGwmAKqJ` z?>S13j`v<$qR%#YLtspaeFW{$cHZ7E@P_;g6YeGl$TSY`ZFy)#XdAIQ3q-U zI#`=c5{G#IXDpIc<|7uj0(8qN`xI2}SKaiRqG2sihavuo1&?n(^CJ1&5KfUKUiE;p#H?bhOUt3>tz!SJOUr+PcM!`F^8JKLk6cQ+7rq`Gt zBa3B9qo&GDbnLqYx>NUPsSYZ4XBkJc9I_-lF4Us`uNCw%f4Hi1;O)0bE_92Gadm0R z>A9r1sSYXsRsEL_QLnFM@03ChrD?f6xGuy1p1h3Dw{hICxCmttP{+HJk>x{=AXL3O z){&7oyWw3{u;a#O0PP$wu|fZm84N6yngc+&B&iO`9T05S#TFl?B8=w7WGiZR_q1C) zLU*a4kPyr~qS1Z;5Ec!L0!C8w0k(Pw@2_&N_hb-KZjbf@lsh&^p=DFitZH?fZ;2^F zZe0=^^S{NicAa%6)_262-60Y1pVUE|{qN zKc?pyMiQ#6B0u8SF+Yy#Qlj?2Fd)j(5q4<}8>dpYosGQ!hGB`)aM>7u&T2wje=0F8 zr3H=j`N!QY{)!xnmOJno4Oam%X23Rh0NKPkm8zZq<)m!>2(=~Sj?Kn6wJvrUv3<53 zdenl-igEF#(wdPxm>Oz)?1MPE{aq2RW{jT}wAjZ0!%u7FFYE4R(WNn~y%>MBz3?z1 z7HyM9_Noe?;PoVO@w3;zKNzB*N~!`?F}amiSca4hzg1jZHg7MgId^|s8p?mL=r6Nm zFF^rf6#u|BH+XXzitpksT;A8sX4+)k?nE%@o+w-witeHJbCxN+O!{iF)s8HQi#3t$ ztU;dPfx}hhNDw~VAt`2DaY)mRItKW$8w!c81Z3!ReO}`$2Q30p7$x}BG7cLS7GGz( zFKtt~lZFW~INOiR!~{>CqwlUiR=CW9!c2z%LlnkVNEUeV(Ojj?vK<-{|Bo;)ws5yX zy*Ex06gJ}j!=us@zSBC|?l-@c9Irc&pWW4**ub~&_V`Y?ZX%s~2Q{1xi?0w@UL zCk@XXo)nxP^^33g?UaCB+{In))(9`CP{=#C{fnd2-C~m5M!Nhb_CGiK0Y)8h7pn*p z_$0Js?&a*6^gW!^KEc=n{xfZqB_>K+<;JtO7ZIfl{Po2H8C5sc@Q5FJ|9_S@g(3k8 zZd<&Wb#uUu2@>U-T_+)!6*bs(uVS6D4YE3|mqfyoJ|32CT(i#52XTUhkH17WoJkhm z9!Klky$wD_t3nU@YLLrC`)gioT1ahbhS{yw$!G}wRpgB+q9opkL^z!xcuh}5rdCvs zls({;EE)Ha|BpnU(xc&^9;2N(^a-FIIo@jQVWY?`#3ApQ=alxan;E_>1t@du3cm5E zvC}_kZRiQe+O;l+7yZslTm49F&bENXUKzrXPdDc34lQ%Y7B z4tx@|#-VQVFyqoX2HF!a9kv&&;lFq|$YUj=ck;J#e>y^rW)aYsj&dIu z&igWeb$*lnz-N5xitj2LAX2$8jJFOsi~60ny>X!)bFM)lVKF$N-`Qu|d` zp~|6R1DzV}T~ksU%mZa$DM~SZ+mUxLGo4=NAit@YEJ$sFB*-9nqabEN9aIF7T zcR>Q)FJ3pN4JNWm#gkca(?cWWL}f*VK|qLEM-~8hgAAEE*Ttze3BsMK(?XbfzQjiO zvp%Ne4vuG?5wc3A1h}shm)CW4HDmLs+kjEDN8EDWOsL4Re{XEAM3{6w9@j=UW2mKrUZ+R@QylzmrIJBoPYrWO4k& z=1t*Q5&EcN04n|(_0rjN&}jX$nyKeX4s_C#txbD6xO&qjToshtc9M8#hv?Ht<^o4k z@Op&2x#?fSK15T0s_NG0ZhR$qJlMsMKufI$7$<~@mr%Frk5v1?XO0g5%0e)(%-gx+ zq!w0bw+L^jP}?^zp@th}mKD`1B_wiJL=;R(u-t(bi^g_3OMB~dZ6-U2GCD(QnywL0 zA);wo=Tl@@`yfN`fo=J3{rb&;y;6j*P=mDmmYq^dCmx9TG(~b29D)d$k8exxLS$z( zFvARo0G(93?)Q^}yy1SylNHczyFsi-K}?)>osG+{F1)G8r?^K${H<)Na3gZE zxMr~1VugB}VQxbLJwt6r!^F5=aKYzjNl@;V13#`^zw|-+&bwlO_>Sw>PjH4yNOTJu z8wthZjgQA8AJ};I`lt_I0D=gLG&Q>Czo!#Zt+^L|XOSgVA^YP8OMf=u~C-;sDa>Nm~hkjAU3FY+Fmqcp}RK*U>OI^ zRD2nnkJCwTCHXufqA1@ATm!S>T+LH zG)it^DPa4`ZFPRVcaO6-diWkG)+Ls$v-LZuJ=S0c6{|?~B4ZvVs4nfLD749ZUrE((zXS-Ci;h3ScsXq;a8C`S^M}HHk%DG~3~6!hpgL z07{UX6)pbtqBk+!tmYUGEYK+&1<)|G7F8&C9jckT%ia-m^6^?P_PwGm))5{n{VsZZ zfeEU5UD4R5$ZOTB+?&|w*{h^R_AR>23`zoGjG3^nbt9(YF|DS-Bq>H}_Ijlj>yw!P zJqnrjd9$DCKW?Fct7a?gF&Ty9oaqmZ({e&{vz_YTsL|`y$jqH^oZq4*>G4G9x2lc< zD5%y-O25(e`4WKaV*#?W!KdFU_x{$Hrb8jpNMScle!xNa$ti!=eK%($*hX=Pe3=vOQtZSD!pw*TS!QP-B1vUA>ijc}DgkCZb&brHgqeqlzD4*94Z=#S17n4-ta zOa9i-7GQ`P_r81p3QM2!tL%Ry|4^sVb@(wAh1z<|)h&I2Ft=*YO68(w8xE*Vlsc~U z$NYcTf%EW%aGDQ8qowC1`iVU(m|@frGvhWcicN*jxqy#>lOwVG^Jf+uJRE7*)P;aL zs#*0h#`Ix352C*A@@SW>=3Ej=hT9vm%|HyW@28z(3%f&<01bw2um`+@?$tgGSw&O? zVGnuW`%vChQ{CQVk0KdR4+Uj6fRfuhCn{4kfi1L}km&%*4QD(p>_s4K)qtw+aYg!tAoF1p;B! zZ1Tr7@8kOf>U+E?XRXFY151u+tzy^MBO4f8Zs{B|Z6AXpndAv4UH$h$4ajcrC+@NY z8_ckO$#q4tWH3F93wx(3>prbp-?=cf6TkL}8@RSDdQj6h^vC4_{ld|g&RNAhKzdu& zs(s3gxI6(-kx!vx1aMM7wFKp)QmpC~@f5SAiVuKT!nrgssX}W|7z)%YWE_?Lx55(T zt{knQHW=9@UobJaKyY=Q92!D{TvR8SU*M!5?}t;S1#&`6wnN<@E?9D7eO(vVMjjSW zmItTy$ty>BfJ7H29^Lj+(pINMp9_Ye9`V@p4X`7WV*e60rtfChPcq3coX2|2cUb9tV^fI7@vWmb_ITV2ZedG2?f&O#)h zRfrPO3zAkev25rZP-=PDLlykqtfQ@h69Gt0=M$D2-0N~k)W-DL!e%TynQ&&h0Guvn zhRy6|_;0v&>IXIvKOFVBs+PPp1rM^NdR->Kb9Ji$ zNI&3(zgf+~R8ZHOF46(VD))N}83=nxn_F7-Yd+K>5p*a@!BGwQA=+#j-HF9+R*%d~ z&>|>b&tte-E^egh4wW|{0>}u!Xld;0j4q+xB*52OSiirJrWIxC6$%A(Lby5f==IOM zj)uC}s}m2&xm6gA<#piL_XW~6y}`QJ@vO48Jzr}EVAAR1l4#kWUwx{LLa06I444K7JD!7-&Z^JEEV~1y z=la_cpSfHax4~&Lc;ia-p=S6J*(r3du5p_o_@tFT_PvCubaIJs!XCF~Y~(X8mU;a| zgaH#RSe<4>+_#y07r47Q+wFQeZ|7$6m{yrQFa(HQS;~YxJ{q@{MVNAo}Rmk@A z2X@SZEtg752!+L>QNo>EU(5!(*T)VAaXwJ!-!K)be0 zsJ^1C1T_mVHfr5$bCuFbTYT5kj8iPl45e4a4^inwFKuZP?EYSRTAA-5R6BU}Aua)* z=2%e0-e<$b6;YV4I7|X$s(1uA%9{Tqt`~@P;dc2f8F*afvrwpIkV=nxWso5Z7*(Wc z>)WQoFC5DJD+m=1BRYQmA5hD_$^Ax&hZZz3Z&w86&{E5x_mce>poE_?d>N_r)0&X5 zi`7)`y&!=M?NL;-wDpNcUSj(z@tkzRq@WetLmCihROp`hPj5mU`B}430rU~;X6!)#<7FTxrV)lqIo`hE^_!h3SAzt^vpSnm;g1+ne z)ZjtW{l~t1U^}IZP>=uG+??6Qa9DHPB6qBjhRu@^p^k7~9EQ$clG8vRpiFQ_Rz8{$ zA4cH0-3}vuzbC6yS4_hOg{9#8Nfs6xCg%T8a|@@z%+U+t3b`;~+z+he=I4Ip{Bv6! z%4zT-J_{^r-`-poGkFND&}HcNt~X%>Y3Z` zlW4&p^uMpNtu`CzTYL13*0dEp>l;$)7jbR*I+~SZZe~Y_w_1&oA5!0$771p=jwHrb6!0>5MevaS5=#) z?G$~^LP3Ovq~m83uw4-CMlH+Ynn~dhx60{?}hoX6<0S z2$F&Q?Le?{+U7?<_bGdWYLJ3z%I9R4fGX{01?2*690l@O-Wv<#=?#;u9%*G?Kr{h- zy1cP!t#Y0~Y3+#=VS4R5q0j+r$Lv1!KK&TFo#90UANy**{^&D7&Uye&xSt)NMhWOK z6OQ5Ar@}#uvQVn0sWRKpR9%ZB{1je4N&9sQ^$@a`t{dmj7M=N?+ZzULp?To+X1I{6 z!tii|yvA+r{7+}%Tbrb}N8iQXCy_87*UQnf)4&#eBaPfR*sN2pMZgcrZP&}=W$Y76gJJC2dp-3H3X(HWZDU;~-Qxhf zhpPA$|E`qZhK(#Xn>5T$ka@tX$I4!Xr`cyeU~FQOFeLrf4`}d22fxxrUT4I_3Nf4# zuHVZ2JL(ufj>xV!&wuYc6_;bo&E8tBg0fnBLLT@599RZ8<^$UZ?cP)ap99E$z&4WO1 z$(36~sp{z2ANP848~i$C88Rg~uS=gtx7F2AuR=V zOy@*E@ZDDWm<4h9vJUkkqJ!bQ${kfsz_C{sL;gbstQVuBuPfjbI9rXwoK|HFx_b5A z>9SdKu$q>9Bv14X;R316t2{tI0Oi){H>Oog5lGu1DQqh^O|I-<$+hYL`;$w~jO5sz zfRH7MwTyYKq8Nva;Z%esRm`1$N4L(B#^`xPW4uRe_xL<~rMpyb`$*Zi3xV36^@)~oBu-d?{x zS1dqsW$acs0>#h1a5$HBBkEipxHyTpd`vjrg!+hfO!(G+ZKZ?|k+ZOY)w@{fS-J%x zw5A^6eUTZ?hRC$P!r$Yc<;mGd(_sPdjrN4Fl-viMiGK@Ke`>y#(H8zoDJgQOOD#_x zX7it~MBtci-*vqF*}mNcfLBj80+f|>n2wShk&AhMZ|E%K)hP}#V9L~zTZfSsfuD5r z3Nv8RI^h|b_)i+$%jECzpWx(-Q~**$xhq=Y&rb#VURUNg5HI+;wo7HNlDZi1a|tHF zEC~p=Iy~h8;ppX6s;Q>QqZXFRM?%Jy@}~|z_-=yY9ofoLtKao}p}Is)^@ITI_l>R> z4peUJN{i=YkiuP^u%qVnz!cSo9Vn}|LpM8aQ{h4l8>TXwO*X9}sg#SAL`OE$;5|U0 zQ*rIm%!fZX=X7xEGLWGHnZ#m{ICGKw#RUv~%;&xZWSFui#xwx5;_#`a?7nFhzK>Ab zw>wk$MX1W5b$wxhMFdVrdk8@Fc5mDl*4<~heu$;HtE>-#O`QBvc;ukhc5vEp)ak>! z;Y|J3%`&LX`rkeM9zdzJ)U9?|`jcVWPvi#R+6wn>p zwu6KV07+-6s};6?N8Rq2cnj;w!2Fe89d7#phB_o+$#* zn}Ktq$@z{0MwnGVq92gLELcOP{|lf{^7mYGzoHZ^p&(Des5d1C*SH8_zFR&!2S^{M96{5lk z+P=9w1LR%aw?J(6lmraSWU@JdpW?JX3Vxmbg=i?CCyc#8t5%*Rvvvu!M~4<6&t@~t zbtPBOJ=-rFd|-wHSzxcIjl5bj%#^olGTjM7A1ek)<;YJHiyWeABHVdLRdYrOda&%H zVKn8!q+RL``6pv>tOqs39K!X;q0i%?`(p}yuGRtDPg~pmq1TUI$tHAO)#>$Wd(c@#R$rphtJX}Nh&?Wn zXJa)j_yL|m#g5uYO zFJ~XFd$f0M+*GR^>Jv`K>*iPingR#KQvF2{;In^y4zQFmj#e`WkEtRsp5>PPtZr5^ z<^BV271NHxcO3v#0d?JA*WnLrfV*j%!-9;L0+tL$hfSJK&~oJ@dX3^T^)@&so*xU#do*F6xi;-`s#6x)`y%>uyPA-px zef4I^ziew9vxq~nljh}TMdF$C|2^$t=OlTUpML}ZT8WkJ zEzY^9!7zKafD%)$Ww3XAyW!Tqd)KQpE<+A#1qWiIu7iloZx zQjQ*Ya>J6p{ZV^Orl2)1G$>C93sxRqrtp^jA z1oOOoTJ9dU1rG(3UdP5xQM5}`@YV+kNl8QLiYmj}$*alkc~EfU>N4P{%_xr%bQ|n( zzPrqptZ&N(!w<#yrm}CwE?OX9XTK(D5=?%2=HuQqE60RUWPo(TGGB`kZ-jbpSE0bF zhF)!GQ^kv}Gq6k>T9)t?B@@M68b*_fBuzc?Unq7-Pfi=y8a+WxFbuzg9- z-fDP~sNQRLr$VIe?-nEk=T%s@s8!>VPikh(D$lFPP&eH8+s%r(KgcIQVT7zW|N zSfFu2o^Kc$F0cF!L=m(HPvWZ^X&2}(vpMaQ^unQ~jXQLube?s4ejlkLaANDvaxNl# z&FtUtEd2t84=JrV0Ib=jmC zBW}u9D{0clecL+(utIXxQuMsD!Wm`6Nmg32V^TLA?ML@QmTwX+`SLVXfR)ViHnZKV zT_;Fx{^U7E+J#!nYal5aC|9CY>Qi&&7lZbNtDaaG#Y!{6yEHg7*LT|SLK1fKAJQ;n$=uK0c z=b1B&R~~m*RN8{KE1XE4p@}h930QwHGH6t3ky7cXkY5nDlh-Qr>Fv|`7OT@jePT$a(LcuEO6{=p7=J9%Rn>PP4p54PM&|5!8k`RT#p zn91~`5gy|<4ej+d?E&y~|8qAgI1gy&2{B|eLT!+Q|84h!JTkxP0jFH_7Gg9)Y67>Y z?G`ba%Z=q;$pFN6=^xl!Hfg(3<|Sf0K(DanX#|rK$od!KO%H}v%Fh2@da^y7f&C>Hwpr0ve!Rm`}LmC08M?qz}; zn++ENI}^W@(Se)AtAU8_H8u*XOX~I&pg!>pVte@mG|b`-c=P$X0I8PW<$u|Lpc^3oz3`5O?~)VXXBa=$Dv+%j{>^HCEIz* zcx*_bl)YEu%_2Jhv$IXP@jGd_s-V%P9nxu~go*cZjD+8zr|EqiByDb|dwbD9!A}F+ z#&AI7k;h9LTPk-dt1aH>u5uaB#`mIr^9K-2``Z`eWno1DB}@lYtw}uIzCJVdPoQ~K z#TpNuR+V9V4xKz}8(V21=83!G1OZ@J5a^>qBWsCqxGG82q1YgnY0-i^o}MF<@njT? z%w#-+U>d9#;o#OgamGDmg+W)>6|#d7BTJOjAP>k8LnGAss6psw&}qlK#OGi?EJ0o# z(*!&5iuq&DS6EbXB0%C7z5s{PiuaH3)Dp3oaTy`h2?Uv{6ucHpbd4KmAO^>1u&T*S zl}AQPcHSnUsMI2Qtq$NDn2w4eR)&*_BX=yIQccyX(Y|h zDt3<+d5x>fdP40Y#BsM#L%|gCZpqJaJun_BNt(&mZQ3+orH3rhTDJ6v$%`2J5qU$Z zSZmz?cF$7n#W9EKMku9tGV3?1#SaZ#S3f|F_Y)C=fGSjOB7@K;bHP9BWWs>;o2?yE zjRgW1&=hkI&&W^L>rS`t=#r~mBzsk}~DQ#5%WX1SqH57cQY-yawqwHeR7tiV>J$sz_i z<}K>CJbp*QzS2<<&^P8?iX?V&Z(|!WiqZi+aNz=# zZPH(p^3PtZya-H_hO)CE#)tO^<76UXrpuh(8^8ATXwf?Qtc8CCKSTQC?AYbV5hb*^Qc%s7s=o&L zrSF|)5iSnu@t$ji>oEP=Oezk~5Em&`PbR#0Qa;myhy!-7_f>OBdo?&+P5)pN8|?LS zTNp`nKH+$(&X>zurArBg=v7$5>fXk4@QE=$#RmW;eg4s#)==LYibMDE+wGhDw0l+X41Ryd3V2uhFk zN=0}DEsgdA>(Vs5H6oJ3L1B=Qfe5`#?hk6bwKhx_npCpQSR6)r9A`vNDzrjVNwZZr>}T<%6Rz!wQ$n56GG z(ijSte_ox;kec)5+WVJX)WH-Y*SWop>4hTJC;DrfL6}yXN7Pjo{M>-nm_s`;cGnf; zoAS+#sqM|^;DQD~9+$Y^svpHA&n^{; zZ^^Pzx}jVPYvzr&#vsrtJy@GFc~Md&nXG3WZECP{A$;DX%?|O{ejIxvme!({V0F7( z$lO>9e^hTmO}G>7p0m(f4^|n*c{lq^&W8Iy=Psa8?IxToqh)I8Bda`Q0>Nl>)2{HE z3 znFWWdTx*`fXGAENR6qvlkQG9SKxZ8d?=og<&iIAD5tr>{aWpK&_(w^ zuH@Mp4~u_gk=+7i!HTz-o6Pd&}ty98ED{G-yj}3$o)F0o(b4 zRP|9&TG~?>qaF{pASP+f>~U%F|@1MqLNjx813J4Uncqx3sd2 z_TxP42M!t_eetR=6@E(i1epbLkqDimrAp)g4~1Fgg$^Rp^o#K~l1i*77MBcelyh0X zHlZ9}p`=sjPNn7MamP6jvWvbbit*NU$juvYD z7y0p^R(WWe0nj9xck>+9a_WSa@!3axTp@_Hter7>E;*Y~EGh1TlH!0I2X0B>f*dKg zI@yhCe>%_*>(Cz>?TrnZt4K2ayIX7tHE25ECSJ88QTFGWX?fZ5I`b3N110#UaZ>75 z|5(2L4}A+iIyvx@}E>U+kqqw6^oCed@s&`#M+oc^man8jAY zbC>9AKV9sNFfoOA<(1NkSEf+Q@s?OS-d3f}RTUy-I`(fSoVHHHcbRG`jMT9&FN?_c zcl~LW4MH5%XN%v5nR- zJMyF{5LXQrRDCO!ivG}Y^~N>rqCojdhIZ(;^?2m=$yEzA-OuggTjLN?L06x?od^Ix zHoHWdfv2%05!IY?C>J;1J4?-4B2guPhsSIn{IG#8RLs7beyHVGKF+A$LKat`g;ZE> zM57@)(DiNQl~2Nr_A6{sf6*Z4_LuX>a#2vKjZQ+I2#xa*r^jI9>w)PF2t zws+h>-{3l0(SNJHG2>wX>1UDhxQFN-CJl$WG;AHZ zo!#tTthEuDi)Qe4Uk6*<(!=QksxymT%nM0Eb! zD)6#R%-|%%oueF2O_hrn*F~CiS&CdxPT(Gk4_t!OEss)uRj>&WrXE=wzCb_1bCK3j zeH$AO{MKYl@Prs>$$yu*_4y?H`()kbX!B*xj=^M{)kHZJR-aPC|7G%fk}eD6YO7$& z>_izdL;%S|O|BfhITK16JSW!P3yqfp8}0q|(!P>TZ8z>{q3(O^guutI$Rz#`Y*75> zDt*;wWXtcE_S(WMrvCq%$2t@HoH~sm1%SzK@{E)&L!Dg=e4^UnZZi4*-qhz{)|uG) zUUI~S8f@atQ-ZD5?DhTITFiR^T7e5?pA`BqIyH)yr1$`8SeEbyHd z>I0krbW!(7WkBy%8UJgMT2m`|X?f`zN$=7~)p+F#$JxXS%*ZvH`wlc@0kFJ4eii{* zPJ>BFn$q%E4~0+)-fl?hc-?p3FiG<9P%6)MQy@jj!lYvrtNf4#*8Qt}*E)cvJ<*d+ zaqipQWj5&YkfTUu;H%E<- z5NLYeI}1k<{RF|0OFp1L5wdL^h0tFeQ-nZdvh?J-AX4>_av+ca5V+>*lzn+iB)axA zj)nkl9DYg=vq9kxZ$5`#UnOU;{;fp^WlQ7(ofYij%TuxfG!S^?M+B}Kb!7xJ#ISa> z#pZ}Gya9aX#_`EI^q<*&TJ0M1S7Lit z##_E)0@&~`a=d6qY-AV2i0+@5`=S4VO>YIiQXZr3>4u+KtsBoyY!Y0i&Z@@0N3ul3_)c6H%s<)oH`S^1@v9|E{*nmNqO_+jBhvK zw_AR&M8?;;`$wysOnmM~(y7>*#hc$kMzfFXw~!B0st87`*Yjd*kU5v5eUR*e-TyUX z=55t?YKO*6gguhsqns45XDqzVf)QZgr&i&Mf%6F;0cqP#vepN7Y_TXf)r5- znB`%rH!1Ix(m2G2b#%>ud5w%x0eE|^mCv=t%-HFg?gSkWhykwivQu*vv1<2$JbNVc z1Hy1fib4&@j)ej6LqXnU-#kTAXA2g+qT{xVf#v|WTXS_LI=)y-oRLo1yl|9GMdene z$dMJ1@mnz5`z55nSZr_G2cqg`3XBBqlL&$KyC(r6@#`)&lh0ix-h6)=k^h5X8(9UaTsFHy2mgT|YG=nSKUZ6G zdK>joE|B-4t6hxFHiiA}+Uv@vHItZOtXY1wdsLJO2u+;lJ+<-r%W`{GlzFz6=EL^K zGHAC=hVH&PRa!|qUt1+F5}JazB8x_0IWJ>R0=K?~M|K`vXsR!G>0r0&#V{t40=1YRwa&vt8f!N_T ze9-UXzxw>hp=NrLW78ROAO;KKdG)^y{LyzvXCf>e9VEVY^W;${nXi?unjcbn}FtP#CPh#rI`c=7{ zCa?lz+EUNdRVG1%~ z0d5Vvp!;ota>6G4yJxA?f^C7c= z&h&)jTQTG6r#HX;NoJAoK7}Ry_{K6Jq9GB>p?Hx9FWzu99o{}8C~yNxU6{HGaR1-Z ze2z;Fl*|9+3?8UL)d@ITwf~=@u05XV?vE==weD^u8;{<}9fm08?_H#nNg(RzQ@*QsB^i^QdJ_E$LEn^22zFl)`9mTV+XBGt_ z_}p7j&O;xoT{Kczq8|2?<;?kRG4*0Xg4roMQ1TpXDGP0ERYVS*h%5<9X!soe&4OD4 zRFhMUYC60V1yJia9jeczI_3Y`h1eNwHgg~V*v3UtxfDD?3j&m;njxkle-?GW?Lugf za6Cq9x7~8XHDhX2$Ze<`+s0YQC5Nw zdF8!7#*`9!%#5F2jmk|aNi<&EfEA7y5Nk79UtL&uR`9lW7TgI@(I)Djm7{eTatE4u zm>wSQ_`tnCgdXMO&pmtpCi(B=lFBg_`*ED`1$OIr41&NdQ`J0p&N zk>oT}lk#_;3uHl>%n*S)AQv3e<_kJcS<0FH70CgDOt=jVh>-V?ccMLS?tFap<5U_2 zI{6El?5)A0yA^}-EnHp;X8&!Zd_;H2ftC1)2}43)e>2$2Om`gk*0S*3xmQAD20R>m zC&8zC1Nz1oIwTZr6V~6H}QEnG|)V zC*@ubUif&eU6xHDgj2$-##lwM&S!Rn1kmYE2I?(HHPZK>kV9pC>eAAeLs+7FJpwEw zh;8R{R&zW0wEktSe>`rhPEWHm_UH$k{^o}@Up%m7DYphLlj^7zYMVXV|g)t6=@eZF}8aJU9Y>!DOvFP}9HhJegN7@|@`i@6}2jU2K9_`+8 z@9+tQXI~7FrJ!)K6`~Wd!h!#kB6Hpg|D0cIBdk$7l>gnAHeJVAiW^ZMk8TMAxBN&u zx}sWLY>T!>CXD-yWkHSvo3~yj1W<@R_^0(3N!klL+G-X-vFZPaknI_J-NKBqzeel- zGW+hDh^xEOa`(fGCZu>Ud*bvgU(?!TUt4K{+G2fG*MrZ!)thtkpX7nimO8iP&0}8X zK`~o@U*`tmjJbUtJ5}YtC6)HH+b}{FB+<}b`zeZ zePZchD_q$Z0(q`%aAqnZeZz$Wc*oN)#leEt%d zxiaX4^-OL&!aKunb`lg+U@HRlg?Cep9ABjmCY7dng!4+7bqhpSh1!7Y>OkPtuu%`5 zMxvaxd?Y^oacqcc;nT(xK&O++Pc7M5YhK0pug+XL*5Q!VYYZLftU=NgssUciK*G{) z(|=nQXTP>8SQxJG}uE?uUNeYj#YL z_5fPgIbcHMjzKM-PXB(py=G-}OPCwwFTqyTveOhU#w^Br*VB*EvLT?)lmK6*%e= z@Ag|{FSX%7MHn-Ge-!Jz-yI-o%d zelG>eX5cE9v2)REs6Ywh1b`99=YY^Vz^Jd+yQ76(4(i|(?KFb|wdE+J8yyL6kp5TO z9;S3?a5Kne!JBh8Pz|-76*-tpiWrL62%XQDRm#^}C(C*X%;vf@{CO zOMP`SCd?a`FS=O(18)!jY~|kVO+rVV?wfixLgcnQ0=fo1ZmNjqZ&6UPeP0J%U-mH~ z4WY&G{ul7EOGOM=Hv*+D@G>`@!v@gijbMyUrhbih5=h3&6W^4<0yP+edFmkQ?V^Wq z8_8~8ri~J@p9;k=FRL}ls9kZ_?%xrz%6aJAhlpF?RzaRv-#Y%h^>jg z{Fs8VOdB)SHP`Z8M&7nuXQprXh%Rh53<;p9=BqSRE=xbK6E&&qcFji&yPC;PVojIN z6F~y2Xp~U|{xirZ4H)~C>QGnbM*B9RUZ?!*@c=zUJ|{?6_)DE#32fR7ZEehP-@Rs6 z9)LfgbfQD`fo%o;U<%IY$*9-r|belXfNFo%?eUBj3iPng!je}Gr=9R};dgcSGlr&F4YLW%tpi8z(a2ZQ2x<)_` zDYYA>!HqVSgY0EM{sQwe_IU&>ETqbHupH-Xug7?W8fvvvF+~;EqpDZHJS|)WspmKG zdztbXZ&5O^p*cCQ}0~t$zjM7*Wx+OAQ?|1vCe`sql$H(#?Z?`4Sd00_>?`#7b z!3Sn4U?K2fnX{-AK3-`ab{gDn^XGWAJ-M&~RlX4fsa_m!qen98)X^utwjSQ9C|`KB zRDcHQ?I#OIDuSY>+X{{WTT-QI^gU3SoRmU_qO5nc9s1IJhS=q0>lLd`Y zoWqNyZv8dDy(PduXxO37?WXZL7lO8#Opa0Ps#_w4JNsZFLlx*`4c%H;>F{#mL(options => + { + options.Services.ReplaceConfiguration(_configuration); + options.UseAutofac(); + options.Services.AddLogging(c => c.AddSerilog()); + options.AddDataMigrationEnvironment(); + })) + { + await application.InitializeAsync(); + + await application + .ServiceProvider + .GetRequiredService() + .MigrateAsync(); + + await application.ShutdownAsync(); + + _hostApplicationLifetime.StopApplication(); + } + } + + public Task StopAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_Exchange.DbMigrator.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_Exchange.DbMigrator.csproj new file mode 100644 index 000000000..3d19b1418 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_Exchange.DbMigrator.csproj @@ -0,0 +1,46 @@ + + + + + + Exe + net7.0 + enable + + + + + + PreserveNewest + Always + + + + PreserveNewest + Always + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_ExchangeDbMigratorModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_ExchangeDbMigratorModule.cs new file mode 100644 index 000000000..b37f9d624 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Dy_ExchangeDbMigratorModule.cs @@ -0,0 +1,21 @@ +using Dy_Exchange.EntityFrameworkCore; +using Volo.Abp.Autofac; +using Volo.Abp.Caching; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.Modularity; + +namespace Dy_Exchange.DbMigrator; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(Dy_ExchangeEntityFrameworkCoreModule), + typeof(Dy_ExchangeApplicationContractsModule) + )] +public class Dy_ExchangeDbMigratorModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => { options.KeyPrefix = "Dy_Exchange:"; }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Program.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Program.cs new file mode 100644 index 000000000..3c920eceb --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/Program.cs @@ -0,0 +1,41 @@ +using System.IO; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Serilog; +using Serilog.Events; + +namespace Dy_Exchange.DbMigrator; + +class Program +{ + static async Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Information() + .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) + .MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning) +#if DEBUG + .MinimumLevel.Override("Dy_Exchange", LogEventLevel.Debug) +#else + .MinimumLevel.Override("Dy_Exchange", LogEventLevel.Information) +#endif + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateLogger(); + + await CreateHostBuilder(args).RunConsoleAsync(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .AddAppSettingsSecretsJson() + .ConfigureLogging((context, logging) => logging.ClearProviders()) + .ConfigureServices((hostContext, services) => + { + services.AddHostedService(); + }); +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.json new file mode 100644 index 000000000..270e8e679 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.json @@ -0,0 +1,30 @@ +{ + "ConnectionStrings": { + "Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=Dy_Exchange;Trusted_Connection=True;TrustServerCertificate=True" + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "OpenIddict": { + "Applications": { + "Dy_Exchange_Web": { + "ClientId": "Dy_Exchange_Web", + "ClientSecret": "1q2w3e*", + "RootUrl": "https://localhost:44376" + }, + "Dy_Exchange_App": { + "ClientId": "Dy_Exchange_App", + "RootUrl": "http://localhost:4200" + }, + "Dy_Exchange_BlazorServerTiered": { + "ClientId": "Dy_Exchange_BlazorServerTiered", + "ClientSecret": "1q2w3e*", + "RootUrl": "https://localhost:44328" + }, + "Dy_Exchange_Swagger": { + "ClientId": "Dy_Exchange_Swagger", + "RootUrl": "https://localhost:44363" + } + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.secrets.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.secrets.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.DbMigrator/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_Exchange.Domain.Shared.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_Exchange.Domain.Shared.csproj new file mode 100644 index 000000000..09875fcd7 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_Exchange.Domain.Shared.csproj @@ -0,0 +1,32 @@ + + + + + + netstandard2.0;netstandard2.1;net7.0 + enable + Dy_Exchange + true + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainErrorCodes.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainErrorCodes.cs new file mode 100644 index 000000000..2c7a434e8 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainErrorCodes.cs @@ -0,0 +1,6 @@ +namespace Dy_Exchange; + +public static class Dy_ExchangeDomainErrorCodes +{ + /* You can add your business exception error codes here, as constants */ +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainSharedModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainSharedModule.cs new file mode 100644 index 000000000..7c1c3d100 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeDomainSharedModule.cs @@ -0,0 +1,58 @@ +using Dy_Exchange.Localization; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Localization; +using Volo.Abp.Localization.ExceptionHandling; +using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; +using Volo.Abp.Validation.Localization; +using Volo.Abp.VirtualFileSystem; + +namespace Dy_Exchange; + +[DependsOn( + typeof(AbpAuditLoggingDomainSharedModule), + typeof(AbpBackgroundJobsDomainSharedModule), + typeof(AbpFeatureManagementDomainSharedModule), + typeof(AbpIdentityDomainSharedModule), + typeof(AbpOpenIddictDomainSharedModule), + typeof(AbpPermissionManagementDomainSharedModule), + typeof(AbpSettingManagementDomainSharedModule), + typeof(AbpTenantManagementDomainSharedModule) + )] +public class Dy_ExchangeDomainSharedModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + Dy_ExchangeGlobalFeatureConfigurator.Configure(); + Dy_ExchangeModuleExtensionConfigurator.Configure(); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddBaseTypes(typeof(AbpValidationResource)) + .AddVirtualJson("/Localization/Dy_Exchange"); + + options.DefaultResourceType = typeof(Dy_ExchangeResource); + }); + + Configure(options => + { + options.MapCodeNamespace("Dy_Exchange", typeof(Dy_ExchangeResource)); + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeGlobalFeatureConfigurator.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeGlobalFeatureConfigurator.cs new file mode 100644 index 000000000..9946e4929 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeGlobalFeatureConfigurator.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Threading; + +namespace Dy_Exchange; + +public static class Dy_ExchangeGlobalFeatureConfigurator +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + /* You can configure (enable/disable) global features of the used modules here. + * + * YOU CAN SAFELY DELETE THIS CLASS AND REMOVE ITS USAGES IF YOU DON'T NEED TO IT! + * + * Please refer to the documentation to lear more about the Global Features System: + * https://docs.abp.io/en/abp/latest/Global-Features + */ + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeModuleExtensionConfigurator.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeModuleExtensionConfigurator.cs new file mode 100644 index 000000000..8f3cb46fb --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Dy_ExchangeModuleExtensionConfigurator.cs @@ -0,0 +1,73 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace Dy_Exchange; + +public static class Dy_ExchangeModuleExtensionConfigurator +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + ConfigureExistingProperties(); + ConfigureExtraProperties(); + }); + } + + private static void ConfigureExistingProperties() + { + /* You can change max lengths for properties of the + * entities defined in the modules used by your application. + * + * Example: Change user and role name max lengths + + IdentityUserConsts.MaxNameLength = 99; + IdentityRoleConsts.MaxNameLength = 99; + + * Notice: It is not suggested to change property lengths + * unless you really need it. Go with the standard values wherever possible. + * + * If you are using EF Core, you will need to run the add-migration command after your changes. + */ + } + + private static void ConfigureExtraProperties() + { + /* You can configure extra properties for the + * entities defined in the modules used by your application. + * + * This class can be used to define these extra properties + * with a high level, easy to use API. + * + * Example: Add a new property to the user entity of the identity module + + ObjectExtensionManager.Instance.Modules() + .ConfigureIdentity(identity => + { + identity.ConfigureUser(user => + { + user.AddOrUpdateProperty( //property type: string + "SocialSecurityNumber", //property name + property => + { + //validation rules + property.Attributes.Add(new RequiredAttribute()); + property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4}); + + property.Configuration[IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit] = true; + + //...other configurations for this property + } + ); + }); + }); + + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Module-Entity-Extensions + */ + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Enums/Enum_ExportCustomUserSetting.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Enums/Enum_ExportCustomUserSetting.cs new file mode 100644 index 000000000..f6bb7e3df --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Enums/Enum_ExportCustomUserSetting.cs @@ -0,0 +1,13 @@ +using System.ComponentModel.DataAnnotations; + +namespace Dy_Exchange.Enums; + +///

+/// 用户自定义导出设置 +/// +public enum Enum_ExportCustomUserSetting +{ + [Display(Name = "未定义")] None = 0, + [Display(Name = "导出")] Yes = 1, + [Display(Name = "ä¸å¯¼å‡º")] No = 2 +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ar.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ar.json new file mode 100644 index 000000000..cc2bc09fd --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ar.json @@ -0,0 +1,30 @@ +{ + "culture": "ar", + "texts": { + "Menu:Home": "Ø§Ù„ØµÙØ­Ø© الرئيسية", + "LongWelcomeMessage": "مرحبا بكم ÙÙŠ التطبيق. هذا مشروع بدء تشغيل يعتمد على إطار عمل ABP. لمزيد من المعلومات ØŒ يرجى زيارة abp.io.", + "Permission:DataExchangeInterfaceConfig": "DataExchangeInterfaceConfig", + "Permission:Create": "Create", + "Permission:Update": "Update", + "Permission:Delete": "Delete", + "Menu:DataExchangeInterfaceConfig": "MenuDataExchangeInterfaceConfig", + "DataExchangeInterfaceConfig": "DataExchangeInterfaceConfig", + "DataExchangeInterfaceConfigId": "DataExchangeInterfaceConfigId", + "DataExchangeInterfaceConfigName": "DataExchangeInterfaceConfigName", + "DataExchangeInterfaceConfigCode": "DataExchangeInterfaceConfigCode", + "DataExchangeInterfaceConfigActive": "DataExchangeInterfaceConfigActive", + "DataExchangeInterfaceConfigLevel": "DataExchangeInterfaceConfigLevel", + "DataExchangeInterfaceConfigExtraProperties": "DataExchangeInterfaceConfigExtraProperties", + "DataExchangeInterfaceConfigConcurrencyStamp": "DataExchangeInterfaceConfigConcurrencyStamp", + "DataExchangeInterfaceConfigCreationTime": "DataExchangeInterfaceConfigCreationTime", + "DataExchangeInterfaceConfigCreatorId": "DataExchangeInterfaceConfigCreatorId", + "DataExchangeInterfaceConfigLastModificationTime": "DataExchangeInterfaceConfigLastModificationTime", + "DataExchangeInterfaceConfigLastModifierId": "DataExchangeInterfaceConfigLastModifierId", + "DataExchangeInterfaceConfigRemark": "DataExchangeInterfaceConfigRemark", + "CreateDataExchangeInterfaceConfig": "CreateDataExchangeInterfaceConfig", + "EditDataExchangeInterfaceConfig": "EditDataExchangeInterfaceConfig", + "DataExchangeInterfaceConfigDeletionConfirmationMessage": "Are you sure to delete the dataExchangeInterfaceConfig {0}?", + "SuccessfullyDeleted": "Successfully deleted", + "TableFilter": "TableFilter" + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/cs.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/cs.json new file mode 100644 index 000000000..5a0bbf613 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/cs.json @@ -0,0 +1,8 @@ +{ + "culture": "cs", + "texts": { + "Menu:Home": "Úvod", + "Welcome": "Vítejte", + "LongWelcomeMessage": "Vítejte v aplikaci. Toto je startovací projekt založený na ABP frameworku. Pro více informací, navÅ¡tivte abp.io." + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/de.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/de.json new file mode 100644 index 000000000..831493be8 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/de.json @@ -0,0 +1,8 @@ +{ + "culture": "de", + "texts": { + "Menu:Home": "Home", + "Welcome": "Willkommen", + "LongWelcomeMessage": "Willkommen bei der Anwendung. Dies ist ein Startup-Projekt, das auf dem ABP-Framework basiert. Weitere Informationen finden Sie unter abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en-GB.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en-GB.json new file mode 100644 index 000000000..d2ca0793a --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en-GB.json @@ -0,0 +1,8 @@ +{ + "culture": "en-GB", + "texts": { + "Menu:Home": "Home", + "Welcome": "Welcome", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en.json new file mode 100644 index 000000000..d2a6a9831 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/en.json @@ -0,0 +1,8 @@ +{ + "culture": "en", + "texts": { + "Menu:Home": "Home", + "Welcome": "Welcome", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io." + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/es.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/es.json new file mode 100644 index 000000000..31b4b59e2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/es.json @@ -0,0 +1,8 @@ +{ + "culture": "es", + "texts": { + "Menu:Home": "Inicio", + "Welcome": "Bienvenido", + "LongWelcomeMessage": "Bienvenido a la aplicación, este es un proyecto base basado en el framework ABP. Para más información, visita abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fi.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fi.json new file mode 100644 index 000000000..a318859f2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fi.json @@ -0,0 +1,8 @@ +{ + "culture": "fi", + "texts": { + "Menu:Home": "Koti", + "Welcome": "Tervetuloa", + "LongWelcomeMessage": "Tervetuloa sovellukseen. Tämä on ABP-kehykseen perustuva käynnistysprojekti. Lisätietoja on osoitteessa abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fr.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fr.json new file mode 100644 index 000000000..e76eac0c7 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/fr.json @@ -0,0 +1,8 @@ +{ + "culture": "fr", + "texts": { + "Menu:Home": "Accueil", + "Welcome": "Bienvenue", + "LongWelcomeMessage": "Bienvenue dans l'application. Il s'agit d'un projet de démarrage basé sur le framework ABP. Pour plus d'informations, visitez abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hi.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hi.json new file mode 100644 index 000000000..a1676bfd4 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hi.json @@ -0,0 +1,8 @@ +{ + "culture": "hi", + "texts": { + "Menu:Home": "घर", + "Welcome": "सà¥à¤µà¤¾à¤—त हे", + "LongWelcomeMessage": "आवेदन करने के लिठआपका सà¥à¤µà¤¾à¤—त है। यह à¤à¤¬à¥€à¤ªà¥€ ढांचे पर आधारित à¤à¤• सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प परियोजना है। अधिक जानकारी के लिà¤, abp.io पर जाà¤à¤‚।" + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hr.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hr.json new file mode 100644 index 000000000..fa8efab32 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hr.json @@ -0,0 +1,8 @@ +{ + "culture": "hr", + "texts": { + "Menu:Home": "PoÄetna", + "Welcome": "DobrodoÅ¡li", + "LongWelcomeMessage": "DobrodoÅ¡li u aplikaciju. Ovo je startup projekt temeljen na ABP framework-u. Za viÅ¡e informacija posjetite abp.io." + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hu.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hu.json new file mode 100644 index 000000000..c7b6a33a0 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/hu.json @@ -0,0 +1,8 @@ +{ + "culture": "hu", + "texts": { + "Menu:Home": "KezdÅ‘lap", + "Welcome": "Üdvözlöm", + "LongWelcomeMessage": "Üdvözöljük az alkalmazásban. Ez egy ABP keretrendszeren alapuló startup projekt. További információkért látogasson el az abp.io oldalra." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/is.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/is.json new file mode 100644 index 000000000..190df9037 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/is.json @@ -0,0 +1,8 @@ +{ + "culture": "is", + "texts": { + "Menu:Home": "Heim", + "Welcome": "Velkomin", + "LongWelcomeMessage": "Verið velkomin í forritið. Þetta er startup verkefni sem byggir á ABP. Nánari upplýsingar er að finna á abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/it.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/it.json new file mode 100644 index 000000000..82ce42b03 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/it.json @@ -0,0 +1,8 @@ +{ + "culture": "it", + "texts": { + "Menu:Home": "Home", + "Welcome": "Benvenuto", + "LongWelcomeMessage": "Benvenuto nell'applicazione. Questo è un progetto di avvio basato sul framework ABP. Per ulteriori informazioni, visita abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/nl.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/nl.json new file mode 100644 index 000000000..9ba8da474 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/nl.json @@ -0,0 +1,8 @@ +{ + "culture": "nl", + "texts": { + "Menu:Home": "Home", + "Welcome": "Welkom", + "LongWelcomeMessage": "Welkom bij de applicatie. Dit is een startup-project gebaseerd op het ABP-framework. Bezoek abp.io voor meer informatie." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pl-PL.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pl-PL.json new file mode 100644 index 000000000..33412f307 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pl-PL.json @@ -0,0 +1,8 @@ +{ + "culture": "pl-PL", + "texts": { + "Menu:Home": "Home", + "Welcome": "Witaj", + "LongWelcomeMessage": "Witaj w aplikacji. To jest inicjalny projekt bazujÄ…cy na ABP framework. Po wiÄ™cej informacji odwiedź stronÄ™ abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pt-BR.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pt-BR.json new file mode 100644 index 000000000..8c818a07a --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/pt-BR.json @@ -0,0 +1,8 @@ +{ + "culture": "pt-BR", + "texts": { + "Menu:Home": "Principal", + "Welcome": "Seja bem-vindo!", + "LongWelcomeMessage": "Bem-vindo a esta aplicação. Este é um projeto inicial baseado no ABP framework. Para mais informações, visite abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ro-RO.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ro-RO.json new file mode 100644 index 000000000..1fe560196 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ro-RO.json @@ -0,0 +1,8 @@ +{ + "culture": "ro-RO", + "texts": { + "Menu:Home": "Acasă", + "Welcome": "Bun venit", + "LongWelcomeMessage": "Bun venit la aplicaÅ£ie. Acesta este un proiect de pornire bazat pe framework-ul ABP. Pentru mai multe informaÅ£ii, vizitaÅ£i, visit abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ru.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ru.json new file mode 100644 index 000000000..8464e4434 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/ru.json @@ -0,0 +1,8 @@ +{ + "culture": "ru", + "texts": { + "Menu:Home": "ГлавнаÑ", + "Welcome": "Добро пожаловать", + "LongWelcomeMessage": "Добро пожаловать в приложение. Этот запущенный проект оÑнован на фреймворке ABP. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации поÑетите Ñайт abp.io." + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sk.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sk.json new file mode 100644 index 000000000..4f35aaf1c --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sk.json @@ -0,0 +1,8 @@ +{ + "culture": "sk", + "texts": { + "Menu:Home": "Domov", + "Welcome": "Vitajte", + "LongWelcomeMessage": "Vitajte v aplikácii. Toto je Å¡tartovací projekt založený na ABP frameworku. Viac informácií nájdete na stránke abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sl.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sl.json new file mode 100644 index 000000000..a066ef26b --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/sl.json @@ -0,0 +1,8 @@ +{ + "culture": "sl", + "texts": { + "Menu:Home": "Domov", + "Welcome": "DobrodoÅ¡li", + "LongWelcomeMessage": "DobrodoÅ¡li v aplikaciji. To je zaÄetni projekt na osnovi okolja ABP. Za veÄ informacij obiÅ¡Äite abp.io." + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/tr.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/tr.json new file mode 100644 index 000000000..2cc911e48 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/tr.json @@ -0,0 +1,8 @@ +{ + "culture": "tr", + "texts": { + "Menu:Home": "Ana sayfa", + "Welcome": "HoÅŸgeldiniz", + "LongWelcomeMessage": "Uygulamaya hoÅŸgeldiniz. Bu, ABP framework'ü üzerine bina edilmiÅŸ bir baÅŸlangıç projesidir. Daha fazla bilgi için abp.io adresini ziyaret edebilirsiniz." + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/vi.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/vi.json new file mode 100644 index 000000000..c115a3572 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/vi.json @@ -0,0 +1,8 @@ +{ + "culture": "vi", + "texts": { + "Menu:Home": "Trang chá»§", + "Welcome": "Chào mừng bạn", + "LongWelcomeMessage": "Chào mừng bạn đến ứng dụng. Äây là má»™t dá»± án khởi nghiệp dá»±a trên khung ABP. Äể biết thêm thông tin, hãy truy cập abp.io." + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hans.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hans.json new file mode 100644 index 000000000..23790bde5 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hans.json @@ -0,0 +1,8 @@ +{ + "culture": "zh-Hans", + "texts": { + "Menu:Home": "首页", + "Welcome": "欢迎", + "LongWelcomeMessage": "欢迎æ¥åˆ°è¯¥åº”用程åº. 这是一个基于ABP框架的å¯åŠ¨é¡¹ç›®. 有关更多信æ¯, 请访问 abp.io." + } + } \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hant.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hant.json new file mode 100644 index 000000000..31e0ab5a4 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_Exchange/zh-Hant.json @@ -0,0 +1,8 @@ +{ + "culture": "zh-Hant", + "texts": { + "Menu:Home": "首é ", + "Welcome": "歡迎", + "LongWelcomeMessage": "歡迎來到此應用程å¼. 這是一個基於ABP框架的起始專案. 有關更多訊æ¯, è«‹ç€è¦½ abp.io." + } + } \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_ExchangeResource.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_ExchangeResource.cs new file mode 100644 index 000000000..2268cc0a7 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/Localization/Dy_ExchangeResource.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Localization; + +namespace Dy_Exchange.Localization; + +[LocalizationResourceName("Dy_Exchange")] +public class Dy_ExchangeResource +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs new file mode 100644 index 000000000..8e111bea4 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs @@ -0,0 +1,10 @@ +namespace Dy_Exchange.MultiTenancy; + +public static class MultiTenancyConsts +{ + /* Enable/disable multi-tenancy easily in a single point. + * If you will never need to multi-tenancy, you can remove + * related modules and code parts, including this file. + */ + public const bool IsEnabled = true; +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSetting.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSetting.cs new file mode 100644 index 000000000..6a343308d --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSetting.cs @@ -0,0 +1,50 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Dy_Exchange.Enums; +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Domain.Entities.Auditing; + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting; + +/// +/// 用户个型导出é…ç½® +/// +[Display(Name = "用户个型导出é…ç½®")] +[Comment("用户个型导出é…ç½®")] +public class ExportCustomUserSetting : AuditedAggregateRoot +{ + /// + /// 用户ID + /// + [Display(Name = "用户ID")] + [Comment("用户ID")] + public Guid? ExportUserId { get; set; } + + /// + /// 用户姓å + /// + [Display(Name = "用户姓å")] + [Comment("用户姓å")] + public string? ExportUserName { get; set; } + + /// + /// 列å + /// + [Display(Name = "列å")] + [Comment("列å")] + public string? ExportColumnName { get; set; } + + /// + /// 表å + /// + [Display(Name = "表å")] + [Comment("表å")] + public string? ExportTableName { get; set; } + + /// + /// 导出设置项 + /// + [Display(Name = "导出设置项")] + [Comment("导出设置项")] + public Enum_ExportCustomUserSetting CustomUserSetting { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingRepository.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingRepository.cs new file mode 100644 index 000000000..e7281dba9 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/AppBaseBusiness/ExportCustomUserSetting/IExportCustomUserSettingRepository.cs @@ -0,0 +1,12 @@ +using System; +using Volo.Abp.Domain.Repositories; + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting +{ + /// + /// 用户个型导出é…ç½® + /// + public interface IExportCustomUserSettingRepository : IRepository + { + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/Dy_ExchangeDbMigrationService.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/Dy_ExchangeDbMigrationService.cs new file mode 100644 index 000000000..30609718a --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/Dy_ExchangeDbMigrationService.cs @@ -0,0 +1,218 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.TenantManagement; + +namespace Dy_Exchange.Data; + +public class Dy_ExchangeDbMigrationService : ITransientDependency +{ + public ILogger Logger { get; set; } + + private readonly IDataSeeder _dataSeeder; + private readonly IEnumerable _dbSchemaMigrators; + private readonly ITenantRepository _tenantRepository; + private readonly ICurrentTenant _currentTenant; + + public Dy_ExchangeDbMigrationService( + IDataSeeder dataSeeder, + IEnumerable dbSchemaMigrators, + ITenantRepository tenantRepository, + ICurrentTenant currentTenant) + { + _dataSeeder = dataSeeder; + _dbSchemaMigrators = dbSchemaMigrators; + _tenantRepository = tenantRepository; + _currentTenant = currentTenant; + + Logger = NullLogger.Instance; + } + + public async Task MigrateAsync() + { + var initialMigrationAdded = AddInitialMigrationIfNotExist(); + + if (initialMigrationAdded) + { + return; + } + + Logger.LogInformation("Started database migrations..."); + + await MigrateDatabaseSchemaAsync(); + await SeedDataAsync(); + + Logger.LogInformation($"Successfully completed host database migrations."); + + var tenants = await _tenantRepository.GetListAsync(includeDetails: true); + + var migratedDatabaseSchemas = new HashSet(); + foreach (var tenant in tenants) + { + using (_currentTenant.Change(tenant.Id)) + { + if (tenant.ConnectionStrings.Any()) + { + var tenantConnectionStrings = tenant.ConnectionStrings + .Select(x => x.Value) + .ToList(); + + if (!migratedDatabaseSchemas.IsSupersetOf(tenantConnectionStrings)) + { + await MigrateDatabaseSchemaAsync(tenant); + + migratedDatabaseSchemas.AddIfNotContains(tenantConnectionStrings); + } + } + + await SeedDataAsync(tenant); + } + + Logger.LogInformation($"Successfully completed {tenant.Name} tenant database migrations."); + } + + Logger.LogInformation("Successfully completed all database migrations."); + Logger.LogInformation("You can safely end this process..."); + } + + private async Task MigrateDatabaseSchemaAsync(Tenant? tenant = null) + { + Logger.LogInformation( + $"Migrating schema for {(tenant == null ? "host" : tenant.Name + " tenant")} database..."); + + foreach (var migrator in _dbSchemaMigrators) + { + await migrator.MigrateAsync(); + } + } + + private async Task SeedDataAsync(Tenant? tenant = null) + { + Logger.LogInformation($"Executing {(tenant == null ? "host" : tenant.Name + " tenant")} database seed..."); + + await _dataSeeder.SeedAsync(new DataSeedContext(tenant?.Id) + .WithProperty(IdentityDataSeedContributor.AdminEmailPropertyName, IdentityDataSeedContributor.AdminEmailDefaultValue) + .WithProperty(IdentityDataSeedContributor.AdminPasswordPropertyName, IdentityDataSeedContributor.AdminPasswordDefaultValue) + ); + } + + private bool AddInitialMigrationIfNotExist() + { + try + { + if (!DbMigrationsProjectExists()) + { + return false; + } + } + catch (Exception) + { + return false; + } + + try + { + if (!MigrationsFolderExists()) + { + AddInitialMigration(); + return true; + } + else + { + return false; + } + } + catch (Exception e) + { + Logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message); + return false; + } + } + + private bool DbMigrationsProjectExists() + { + var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath(); + + return dbMigrationsProjectFolder != null; + } + + private bool MigrationsFolderExists() + { + var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath(); + return dbMigrationsProjectFolder != null && Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations")); + } + + private void AddInitialMigration() + { + Logger.LogInformation("Creating initial migration..."); + + string argumentPrefix; + string fileName; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + argumentPrefix = "-c"; + fileName = "/bin/bash"; + } + else + { + argumentPrefix = "/C"; + fileName = "cmd.exe"; + } + + var procStartInfo = new ProcessStartInfo(fileName, + $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetEntityFrameworkCoreProjectFolderPath()}\"\"" + ); + + try + { + Process.Start(procStartInfo); + } + catch (Exception) + { + throw new Exception("Couldn't run ABP CLI..."); + } + } + + private string? GetEntityFrameworkCoreProjectFolderPath() + { + var slnDirectoryPath = GetSolutionDirectoryPath(); + + if (slnDirectoryPath == null) + { + throw new Exception("Solution folder not found!"); + } + + var srcDirectoryPath = Path.Combine(slnDirectoryPath, "src"); + + return Directory.GetDirectories(srcDirectoryPath) + .FirstOrDefault(d => d.EndsWith(".EntityFrameworkCore")); + } + + private string? GetSolutionDirectoryPath() + { + var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory()); + + while (currentDirectory != null && Directory.GetParent(currentDirectory.FullName) != null) + { + currentDirectory = Directory.GetParent(currentDirectory.FullName); + + if (currentDirectory != null && Directory.GetFiles(currentDirectory.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null) + { + return currentDirectory.FullName; + } + } + + return null; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/IDy_ExchangeDbSchemaMigrator.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/IDy_ExchangeDbSchemaMigrator.cs new file mode 100644 index 000000000..1e81b8f33 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/IDy_ExchangeDbSchemaMigrator.cs @@ -0,0 +1,8 @@ +using System.Threading.Tasks; + +namespace Dy_Exchange.Data; + +public interface IDy_ExchangeDbSchemaMigrator +{ + Task MigrateAsync(); +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/NullDy_ExchangeDbSchemaMigrator.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/NullDy_ExchangeDbSchemaMigrator.cs new file mode 100644 index 000000000..201ece9a1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Data/NullDy_ExchangeDbSchemaMigrator.cs @@ -0,0 +1,15 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Dy_Exchange.Data; + +/* This is used if database provider does't define + * IDy_ExchangeDbSchemaMigrator implementation. + */ +public class NullDy_ExchangeDbSchemaMigrator : IDy_ExchangeDbSchemaMigrator, ITransientDependency +{ + public Task MigrateAsync() + { + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_Exchange.Domain.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_Exchange.Domain.csproj new file mode 100644 index 000000000..b1545de7e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_Exchange.Domain.csproj @@ -0,0 +1,33 @@ + + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeConsts.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeConsts.cs new file mode 100644 index 000000000..42ab55ead --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeConsts.cs @@ -0,0 +1,8 @@ +namespace Dy_Exchange; + +public static class Dy_ExchangeConsts +{ + public const string DbTablePrefix = ""; + + public const string DbSchema = null; +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeDomainModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeDomainModule.cs new file mode 100644 index 000000000..2e3374596 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Dy_ExchangeDomainModule.cs @@ -0,0 +1,68 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Dy_Exchange.MultiTenancy; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Emailing; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict; +using Volo.Abp.PermissionManagement.Identity; +using Volo.Abp.PermissionManagement.OpenIddict; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeDomainSharedModule), + typeof(AbpAuditLoggingDomainModule), + typeof(AbpBackgroundJobsDomainModule), + typeof(AbpFeatureManagementDomainModule), + typeof(AbpIdentityDomainModule), + typeof(AbpOpenIddictDomainModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), + typeof(AbpPermissionManagementDomainIdentityModule), + typeof(AbpSettingManagementDomainModule), + typeof(AbpTenantManagementDomainModule), + typeof(AbpEmailingModule) +)] +public class Dy_ExchangeDomainModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Languages.Add(new LanguageInfo("ar", "ar", "العربية", "ae")); + options.Languages.Add(new LanguageInfo("cs", "cs", "ÄŒeÅ¡tina")); + options.Languages.Add(new LanguageInfo("en", "en", "English", "gb")); + options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)")); + options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar")); + options.Languages.Add(new LanguageInfo("hr", "hr", "Croatian")); + options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish", "fi")); + options.Languages.Add(new LanguageInfo("fr", "fr", "Français", "fr")); + options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in")); + options.Languages.Add(new LanguageInfo("it", "it", "Italiano", "it")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); + options.Languages.Add(new LanguageInfo("ru", "ru", "РуÑÑкий", "ru")); + options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak", "sk")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe", "tr")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "ç¹é«”中文")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de")); + options.Languages.Add(new LanguageInfo("es", "es", "Español")); + }); + + Configure(options => + { + options.IsEnabled = MultiTenancyConsts.IsEnabled; + }); + +#if DEBUG + context.Services.Replace(ServiceDescriptor.Singleton()); +#endif + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/OpenIddict/OpenIddictDataSeedContributor.cs new file mode 100644 index 000000000..4d6982ff0 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -0,0 +1,415 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using JetBrains.Annotations; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Localization; +using OpenIddict.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.OpenIddict.Applications; +using Volo.Abp.OpenIddict.Scopes; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace Dy_Exchange.OpenIddict; + +/* Creates initial data that is needed to property run the application + * and make client-to-server communication possible. + */ +public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly IConfiguration _configuration; + private readonly IOpenIddictApplicationRepository _openIddictApplicationRepository; + private readonly IAbpApplicationManager _applicationManager; + private readonly IOpenIddictScopeRepository _openIddictScopeRepository; + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IStringLocalizer L; + + public OpenIddictDataSeedContributor( + IConfiguration configuration, + IOpenIddictApplicationRepository openIddictApplicationRepository, + IAbpApplicationManager applicationManager, + IOpenIddictScopeRepository openIddictScopeRepository, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, + IStringLocalizer l ) + { + _configuration = configuration; + _openIddictApplicationRepository = openIddictApplicationRepository; + _applicationManager = applicationManager; + _openIddictScopeRepository = openIddictScopeRepository; + _scopeManager = scopeManager; + _permissionDataSeeder = permissionDataSeeder; + L = l; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await CreateScopesAsync(); + await CreateApplicationsAsync(); + } + + private async Task CreateScopesAsync() + { + if (await _openIddictScopeRepository.FindByNameAsync("Dy_Exchange") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor { + Name = "Dy_Exchange", DisplayName = "Dy_Exchange API", Resources = { "Dy_Exchange" } + }); + } + } + + private async Task CreateApplicationsAsync() + { + var commonScopes = new List { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles, + "Dy_Exchange" + }; + + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); + + //Web Client + var webClientId = configurationSection["Dy_Exchange_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["Dy_Exchange_Web:RootUrl"].EnsureEndsWith('/'); + + /* Dy_Exchange_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + await CreateApplicationAsync( + name: webClientId!, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Web Application", + secret: configurationSection["Dy_Exchange_Web:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{webClientRootUrl}signin-oidc", + clientUri: webClientRootUrl, + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test / Angular Client + var consoleAndAngularClientId = configurationSection["Dy_Exchange_App:ClientId"]; + if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) + { + var consoleAndAngularClientRootUrl = configurationSection["Dy_Exchange_App:RootUrl"]?.TrimEnd('/'); + await CreateApplicationAsync( + name: consoleAndAngularClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Console Test / Angular Application", + secret: null, + grantTypes: new List { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.RefreshToken + }, + scopes: commonScopes, + redirectUri: consoleAndAngularClientRootUrl, + clientUri: consoleAndAngularClientRootUrl, + postLogoutRedirectUri: consoleAndAngularClientRootUrl + ); + } + + // Blazor Client + var blazorClientId = configurationSection["Dy_Exchange_Blazor:ClientId"]; + if (!blazorClientId.IsNullOrWhiteSpace()) + { + var blazorRootUrl = configurationSection["Dy_Exchange_Blazor:RootUrl"]?.TrimEnd('/'); + + await CreateApplicationAsync( + name: blazorClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: null, + grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, }, + scopes: commonScopes, + redirectUri: $"{blazorRootUrl}/authentication/login-callback", + clientUri: blazorRootUrl, + postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" + ); + } + + // Blazor Server Tiered Client + var blazorServerTieredClientId = configurationSection["Dy_Exchange_BlazorServerTiered:ClientId"]; + if (!blazorServerTieredClientId.IsNullOrWhiteSpace()) + { + var blazorServerTieredRootUrl = + configurationSection["Dy_Exchange_BlazorServerTiered:RootUrl"].EnsureEndsWith('/'); + + await CreateApplicationAsync( + name: blazorServerTieredClientId!, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Server Application", + secret: configurationSection["Dy_Exchange_BlazorServerTiered:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{blazorServerTieredRootUrl}signin-oidc", + clientUri: blazorServerTieredRootUrl, + postLogoutRedirectUri: $"{blazorServerTieredRootUrl}signout-callback-oidc" + ); + } + + // Swagger Client + var swaggerClientId = configurationSection["Dy_Exchange_Swagger:ClientId"]; + if (!swaggerClientId.IsNullOrWhiteSpace()) + { + var swaggerRootUrl = configurationSection["Dy_Exchange_Swagger:RootUrl"]?.TrimEnd('/'); + + await CreateApplicationAsync( + name: swaggerClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Swagger Application", + secret: null, + grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, }, + scopes: commonScopes, + redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html", + clientUri: swaggerRootUrl + ); + } + } + + private async Task CreateApplicationAsync( + [NotNull] string name, + [NotNull] string type, + [NotNull] string consentType, + string displayName, + string? secret, + List grantTypes, + List scopes, + string? clientUri = null, + string? redirectUri = null, + string? postLogoutRedirectUri = null, + List? permissions = null) + { + if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public, + StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); + } + + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, + StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); + } + + var client = await _openIddictApplicationRepository.FindByClientIdAsync(name); + + var application = new AbpApplicationDescriptor { + ClientId = name, + Type = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName, + ClientUri = clientUri, + }; + + Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); + Check.NotNullOrEmpty(scopes, nameof(scopes)); + + if (new[] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All( + grantTypes.Contains)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); + + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken); + } + } + + if (!redirectUri.IsNullOrWhiteSpace() || !postLogoutRedirectUri.IsNullOrWhiteSpace()) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout); + } + + var buildInGrantTypes = new[] { + OpenIddictConstants.GrantTypes.Implicit, OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.DeviceCode, OpenIddictConstants.GrantTypes.RefreshToken + }; + + foreach (var grantType in grantTypes) + { + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || + grantType == OpenIddictConstants.GrantTypes.RefreshToken || + grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Revocation); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Introspection); + } + + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); + } + + if (grantType == OpenIddictConstants.GrantTypes.Password) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); + } + + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); + } + + if (grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.DeviceCode); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Device); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token); + } + } + + if (!buildInGrantTypes.Contains(grantType)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.GrantType + grantType); + } + } + + var buildInScopes = new[] { + OpenIddictConstants.Permissions.Scopes.Address, OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles + }; + + foreach (var scope in scopes) + { + if (buildInScopes.Contains(scope)) + { + application.Permissions.Add(scope); + } + else + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); + } + } + + if (redirectUri != null) + { + if (!redirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidRedirectUri", redirectUri]); + } + + if (application.RedirectUris.All(x => x != uri)) + { + application.RedirectUris.Add(uri); + } + } + } + + if (postLogoutRedirectUri != null) + { + if (!postLogoutRedirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || + !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); + } + + if (application.PostLogoutRedirectUris.All(x => x != uri)) + { + application.PostLogoutRedirectUris.Add(uri); + } + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions, + null + ); + } + + if (client == null) + { + await _applicationManager.CreateAsync(application); + return; + } + + if (!HasSameRedirectUris(client, application)) + { + client.RedirectUris = JsonSerializer.Serialize(application.RedirectUris.Select(q => q.ToString().TrimEnd('/'))); + client.PostLogoutRedirectUris = JsonSerializer.Serialize(application.PostLogoutRedirectUris.Select(q => q.ToString().TrimEnd('/'))); + + await _applicationManager.UpdateAsync(client.ToModel()); + } + + if (!HasSameScopes(client, application)) + { + client.Permissions = JsonSerializer.Serialize(application.Permissions.Select(q => q.ToString())); + await _applicationManager.UpdateAsync(client.ToModel()); + } + } + + private bool HasSameRedirectUris(OpenIddictApplication existingClient, AbpApplicationDescriptor application) + { + return existingClient.RedirectUris == JsonSerializer.Serialize(application.RedirectUris.Select(q => q.ToString().TrimEnd('/'))); + } + + private bool HasSameScopes(OpenIddictApplication existingClient, AbpApplicationDescriptor application) + { + return existingClient.Permissions == JsonSerializer.Serialize(application.Permissions.Select(q => q.ToString().TrimEnd('/'))); + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Properties/AssemblyInfo.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..10e38623c --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Properties/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("Dy_Exchange.Domain.Tests")] +[assembly:InternalsVisibleToAttribute("Dy_Exchange.TestBase")] diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettingDefinitionProvider.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettingDefinitionProvider.cs new file mode 100644 index 000000000..c461caf96 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettingDefinitionProvider.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Settings; + +namespace Dy_Exchange.Settings; + +public class Dy_ExchangeSettingDefinitionProvider : SettingDefinitionProvider +{ + public override void Define(ISettingDefinitionContext context) + { + //Define your own settings here. Example: + //context.Add(new SettingDefinition(Dy_ExchangeSettings.MySetting1)); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettings.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettings.cs new file mode 100644 index 000000000..db0f314ec --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Settings/Dy_ExchangeSettings.cs @@ -0,0 +1,9 @@ +namespace Dy_Exchange.Settings; + +public static class Dy_ExchangeSettings +{ + private const string Prefix = "Dy_Exchange"; + + //Add your own setting names here. Example: + //public const string MySetting1 = Prefix + ".MySetting1"; +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedIncomingToWm/ArchivedIncomingToWm.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedIncomingToWm/ArchivedIncomingToWm.cs new file mode 100644 index 000000000..7041632f8 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedIncomingToWm/ArchivedIncomingToWm.cs @@ -0,0 +1,54 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +/// +/// 日志 +/// +public class ArchivedIncomingToWm + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string? DataType { get; set; } + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public int Status { get; set; } + + public string? DataIdentityCode { get; set; } + + public string? DataContent { get; set; } + + public string? SourceSystem { get; set; } + + public DateTime WriteTime { get; set; } + + public DateTime? ReadTime { get; set; } + + public int ErrorCode { get; set; } + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedOutgoingToExternal/ArchivedOutgoingToExternal.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedOutgoingToExternal/ArchivedOutgoingToExternal.cs new file mode 100644 index 000000000..657d2a281 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/ArchivedOutgoingToExternal/ArchivedOutgoingToExternal.cs @@ -0,0 +1,69 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class ArchivedOutgoingToExternal + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string? DataType { get; set; } + + public int TableType { get; set; } + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public int Status { get; set; } + + public string? SourceSystem { get; set; } + + public string? SourceDataId { get; set; } + + public string? SourceDataGroupCode { get; set; } + + public string? SourceDataDetailCode { get; set; } + + public string? SourceDataContent { get; set; } + + public DateTime WriteTime { get; set; } + + public string? Writer { get; set; } + + public string? DestinationDataId { get; set; } + + public string? DestinationDataContent { get; set; } + + public string? DestinationSystem { get; set; } + + public DateTime? ReadTime { get; set; } + + public string? Reader { get; set; } + + public int ErrorCode { get; set; } + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } + + public string? SerialNumber { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedIncomingFromExternal/DataExchangeArchivedIncomingFromExternal.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedIncomingFromExternal/DataExchangeArchivedIncomingFromExternal.cs new file mode 100644 index 000000000..46a8460ea --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedIncomingFromExternal/DataExchangeArchivedIncomingFromExternal.cs @@ -0,0 +1,67 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class DataExchangeArchivedIncomingFromExternal + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string DataType { get; set; } = null!; + + public int TableType { get; set; } + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public string Status { get; set; } = null!; + + public string SourceSystem { get; set; } = null!; + + public string SourceDataId { get; set; } = null!; + + public string SourceDataGroupCode { get; set; } = null!; + + public string? SourceDataDetailCode { get; set; } + + public string? SourceDataContent { get; set; } + + public DateTime WriteTime { get; set; } + + public string? Writer { get; set; } + + public string? DestinationDataId { get; set; } + + public string? DestinationDataContent { get; set; } + + public string DestinationSystem { get; set; } = null!; + + public DateTime? ReadTime { get; set; } + + public string? Reader { get; set; } + + public string ErrorCode { get; set; } = null!; + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedOutgoingFromWm/DataExchangeArchivedOutgoingFromWm.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedOutgoingFromWm/DataExchangeArchivedOutgoingFromWm.cs new file mode 100644 index 000000000..d051f2ce5 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeArchivedOutgoingFromWm/DataExchangeArchivedOutgoingFromWm.cs @@ -0,0 +1,53 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class DataExchangeArchivedOutgoingFromWm + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string DataType { get; set; } = null!; + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public string Status { get; set; } = null!; + + public string DataIdentityCode { get; set; } = null!; + + public string? DataContent { get; set; } + + public string? SourceSystem { get; set; } + + public DateTime WriteTime { get; set; } + + public DateTime? ReadTime { get; set; } + + public string ErrorCode { get; set; } = null!; + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } + + public string? TyrpNumber { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeIncomingFromExternal/DataExchangeIncomingFromExternal.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeIncomingFromExternal/DataExchangeIncomingFromExternal.cs new file mode 100644 index 000000000..e42ec44cd --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeIncomingFromExternal/DataExchangeIncomingFromExternal.cs @@ -0,0 +1,67 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class DataExchangeIncomingFromExternal + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string DataType { get; set; } = null!; + + public int TableType { get; set; } + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public string Status { get; set; } = null!; + + public string SourceSystem { get; set; } = null!; + + public string SourceDataId { get; set; } = null!; + + public string SourceDataGroupCode { get; set; } = null!; + + public string? SourceDataDetailCode { get; set; } + + public string? SourceDataContent { get; set; } + + public DateTime WriteTime { get; set; } + + public string? Writer { get; set; } + + public string? DestinationDataId { get; set; } + + public string? DestinationDataContent { get; set; } + + public string DestinationSystem { get; set; } = null!; + + public DateTime? ReadTime { get; set; } + + public string? Reader { get; set; } + + public string ErrorCode { get; set; } = null!; + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeInterfaceConfig/DataExchangeInterfaceConfig.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeInterfaceConfig/DataExchangeInterfaceConfig.cs new file mode 100644 index 000000000..54e912475 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeInterfaceConfig/DataExchangeInterfaceConfig.cs @@ -0,0 +1,20 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class DataExchangeInterfaceConfig + : AuditedAggregateRoot{ + + public string? Name { get; set; } + + public string? Code { get; set; } + + public bool Active { get; set; } + + public int Level { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeMessageReceive/DataExchangeMessageReceive.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeMessageReceive/DataExchangeMessageReceive.cs new file mode 100644 index 000000000..c6ccb430b --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeMessageReceive/DataExchangeMessageReceive.cs @@ -0,0 +1,29 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class DataExchangeMessageReceive + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public string? MessageFileName { get; set; } + + public string? MessageContent { get; set; } + + public string ReceiveStatus { get; set; } = null!; + + public DateTime ReceiveTime { get; set; } + + public DateTime? LastUpdateTime { get; set; } + + public int? ErrorCount { get; set; } + + public string? ErrorMessage { get; set; } + + public string? Type { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeOutgoingFromWm/DataExchangeOutgoingFromWm.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeOutgoingFromWm/DataExchangeOutgoingFromWm.cs new file mode 100644 index 000000000..731b0b6d0 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/DataExchangeOutgoingFromWm/DataExchangeOutgoingFromWm.cs @@ -0,0 +1,55 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class DataExchangeOutgoingFromWm + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string DestinationSystem { get; set; } = null!; + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string DataType { get; set; } = null!; + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public string Status { get; set; } = null!; + + public string DataIdentityCode { get; set; } = null!; + + public string? DataContent { get; set; } + + public string? SourceSystem { get; set; } + + public DateTime WriteTime { get; set; } + + public DateTime? ReadTime { get; set; } + + public string ErrorCode { get; set; } = null!; + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } + + public string? TyrpNumber { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IDataExchangeInterfaceConfigRepository.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IDataExchangeInterfaceConfigRepository.cs new file mode 100644 index 000000000..144bffd98 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IDataExchangeInterfaceConfigRepository.cs @@ -0,0 +1,11 @@ +using System; +using Volo.Abp.Domain.Repositories; + +namespace Dy_Exchange.Z_Business; + +/// +/// +/// +public interface IDataExchangeInterfaceConfigRepository : IRepository +{ +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IncomingToWm/IncomingToWm.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IncomingToWm/IncomingToWm.cs new file mode 100644 index 000000000..4ef456f3f --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/IncomingToWm/IncomingToWm.cs @@ -0,0 +1,51 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class IncomingToWm + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string? DataType { get; set; } + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public int Status { get; set; } + + public string? DataIdentityCode { get; set; } + + public string? DataContent { get; set; } + + public string? SourceSystem { get; set; } + + public DateTime WriteTime { get; set; } + + public DateTime? ReadTime { get; set; } + + public int ErrorCode { get; set; } + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/OutgoingToExternal/OutgoingToExternal.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/OutgoingToExternal/OutgoingToExternal.cs new file mode 100644 index 000000000..e529d1a4d --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Domain/Z_Business/OutgoingToExternal/OutgoingToExternal.cs @@ -0,0 +1,69 @@ +using System;using Volo.Abp.Domain.Entities.Auditing;using System.Collections.Generic; +using System.Collections.Generic; + +namespace Dy_Exchange.Z_Business; + +public class OutgoingToExternal + : AuditedAggregateRoot{ + public Guid Id { get; set; } + + public long Number { get; set; } + + public string? ExtraProperties { get; set; } + + public string? ConcurrencyStamp { get; set; } + + public DateTime CreationTime { get; set; } + + public Guid? CreatorId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + public Guid? LastModifierId { get; set; } + + public Guid? TenantId { get; set; } + + public string? Remark { get; set; } + + public string? DataType { get; set; } + + public int TableType { get; set; } + + public int DataAction { get; set; } + + public DateTime EffectiveDate { get; set; } + + public int Status { get; set; } + + public string? SourceSystem { get; set; } + + public string? SourceDataId { get; set; } + + public string? SourceDataGroupCode { get; set; } + + public string? SourceDataDetailCode { get; set; } + + public string? SourceDataContent { get; set; } + + public DateTime WriteTime { get; set; } + + public string? Writer { get; set; } + + public string? DestinationDataId { get; set; } + + public string? DestinationDataContent { get; set; } + + public string? DestinationSystem { get; set; } + + public DateTime? ReadTime { get; set; } + + public string? Reader { get; set; } + + public int ErrorCode { get; set; } + + public string? ErrorMessage { get; set; } + + public int RetryTimes { get; set; } + + public string? SerialNumber { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingEfCoreQuerableExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingEfCoreQuerableExtensions.cs new file mode 100644 index 000000000..0b2bf5763 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingEfCoreQuerableExtensions.cs @@ -0,0 +1,21 @@ +using System.Linq; + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting; + +/// +/// 用户个型导出é…ç½® +/// +public static class ExportCustomUserSettingEfCoreQueryableExtensions +{ + public static IQueryable IncludeDetails(this IQueryable queryable, bool include = true) + { + if (!include) + { + return queryable; + } + + return queryable + // .Include(x => x.xxx) // TODO: AbpHelper generated + ; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingRepository.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingRepository.cs new file mode 100644 index 000000000..b1d5cda32 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/AppBaseBusiness/ExportCustomUserSetting/ExportCustomUserSettingRepository.cs @@ -0,0 +1,21 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Dy_Exchange.EntityFrameworkCore; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + + +namespace WinIn.FasterZ.Inventory.AppBaseBusiness.ExportCustomUserSetting; + +public class ExportCustomUserSettingRepository : EfCoreRepository, IExportCustomUserSettingRepository +{ + public ExportCustomUserSettingRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public override async Task> WithDetailsAsync() + { + return (await GetQueryableAsync()).IncludeDetails(); + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Dy_Exchange.EntityFrameworkCore.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Dy_Exchange.EntityFrameworkCore.csproj new file mode 100644 index 000000000..365560ffd --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Dy_Exchange.EntityFrameworkCore.csproj @@ -0,0 +1,31 @@ + + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContext.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContext.cs new file mode 100644 index 000000000..8f9550708 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContext.cs @@ -0,0 +1,102 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.AuditLogging.EntityFrameworkCore; +using Volo.Abp.BackgroundJobs.EntityFrameworkCore; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; +using Volo.Abp.Identity; +using Volo.Abp.Identity.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.TenantManagement; +using Volo.Abp.TenantManagement.EntityFrameworkCore; +using Dy_Exchange.Z_Business; +using Volo.Abp.EntityFrameworkCore.Modeling; + +namespace Dy_Exchange.EntityFrameworkCore; + +[ReplaceDbContext(typeof(IIdentityDbContext))] +[ReplaceDbContext(typeof(ITenantManagementDbContext))] +[ConnectionStringName("Dy_Exchange")] +public class Dy_ExchangeDbContext : + AbpDbContext, + IIdentityDbContext, + ITenantManagementDbContext +{ + /* Add DbSet properties for your Aggregate Roots / Entities here. */ + + #region Entities from the modules + + /* Notice: We only implemented IIdentityDbContext and ITenantManagementDbContext + * and replaced them for this DbContext. This allows you to perform JOIN + * queries for the entities of these modules over the repositories easily. You + * typically don't need that for other modules. But, if you need, you can + * implement the DbContext interface of the needed module and use ReplaceDbContext + * attribute just like IIdentityDbContext and ITenantManagementDbContext. + * + * More info: Replacing a DbContext of a module ensures that the related module + * uses this DbContext on runtime. Otherwise, it will use its own DbContext class. + */ + + //Identity + public DbSet Users { get; set; } + public DbSet Roles { get; set; } + public DbSet ClaimTypes { get; set; } + public DbSet OrganizationUnits { get; set; } + public DbSet SecurityLogs { get; set; } + public DbSet LinkUsers { get; set; } + public DbSet UserDelegations { get; set; } + + // Tenant Management + public DbSet Tenants { get; set; } + public DbSet TenantConnectionStrings { get; set; } + + #endregion + /// + /// + /// + public DbSet DataExchangeInterfaceConfigs { get; set; } + + public Dy_ExchangeDbContext(DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + /* Include modules to your migration db context */ + + builder.ConfigurePermissionManagement(); + builder.ConfigureSettingManagement(); + builder.ConfigureBackgroundJobs(); + builder.ConfigureAuditLogging(); + builder.ConfigureIdentity(); + builder.ConfigureOpenIddict(); + builder.ConfigureFeatureManagement(); + builder.ConfigureTenantManagement(); + + /* Configure your own tables/entities inside here */ + + //builder.Entity(b => + //{ + // b.ToTable(Dy_ExchangeConsts.DbTablePrefix + "YourEntities", Dy_ExchangeConsts.DbSchema); + // b.ConfigureByConvention(); //auto configure for the base class props + // //... + //}); + + + builder.Entity(b => + { + b.ToTable(Dy_ExchangeConsts.DbTablePrefix + "DataExchange_InterfaceConfig", Dy_ExchangeConsts.DbSchema, table => table.HasComment("")); + b.ConfigureByConvention(); + + + /* Configure more properties here */ + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContextFactory.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContextFactory.cs new file mode 100644 index 000000000..aa70fcc0c --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeDbContextFactory.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace Dy_Exchange.EntityFrameworkCore; + +/* This class is needed for EF Core console commands + * (like Add-Migration and Update-Database commands) */ +public class Dy_ExchangeDbContextFactory : IDesignTimeDbContextFactory +{ + public Dy_ExchangeDbContext CreateDbContext(string[] args) + { + Dy_ExchangeEfCoreEntityExtensionMappings.Configure(); + + var configuration = BuildConfiguration(); + + var builder = new DbContextOptionsBuilder() + .UseSqlServer(configuration.GetConnectionString("Default")); + + return new Dy_ExchangeDbContext(builder.Options); + } + + private static IConfigurationRoot BuildConfiguration() + { + var builder = new ConfigurationBuilder() + .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../Dy_Exchange.DbMigrator/")) + .AddJsonFile("appsettings.json", optional: false); + + return builder.Build(); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEfCoreEntityExtensionMappings.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEfCoreEntityExtensionMappings.cs new file mode 100644 index 000000000..3c1d257dd --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEfCoreEntityExtensionMappings.cs @@ -0,0 +1,44 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace Dy_Exchange.EntityFrameworkCore; + +public static class Dy_ExchangeEfCoreEntityExtensionMappings +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + Dy_ExchangeGlobalFeatureConfigurator.Configure(); + Dy_ExchangeModuleExtensionConfigurator.Configure(); + + OneTimeRunner.Run(() => + { + /* You can configure extra properties for the + * entities defined in the modules used by your application. + * + * This class can be used to map these extra properties to table fields in the database. + * + * USE THIS CLASS ONLY TO CONFIGURE EF CORE RELATED MAPPING. + * USE Dy_ExchangeModuleExtensionConfigurator CLASS (in the Domain.Shared project) + * FOR A HIGH LEVEL API TO DEFINE EXTRA PROPERTIES TO ENTITIES OF THE USED MODULES + * + * Example: Map a property to a table field: + + ObjectExtensionManager.Instance + .MapEfCoreProperty( + "MyProperty", + (entityBuilder, propertyBuilder) => + { + propertyBuilder.HasMaxLength(128); + } + ); + + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities + */ + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreModule.cs new file mode 100644 index 000000000..fc5136325 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreModule.cs @@ -0,0 +1,56 @@ +using Dy_Exchange.Z_Business; +using System; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Uow; +using Volo.Abp.AuditLogging.EntityFrameworkCore; +using Volo.Abp.BackgroundJobs.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.SqlServer; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; +using Volo.Abp.Identity.EntityFrameworkCore; +using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict.EntityFrameworkCore; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.TenantManagement.EntityFrameworkCore; + +namespace Dy_Exchange.EntityFrameworkCore; + +[DependsOn( + typeof(Dy_ExchangeDomainModule), + typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), + typeof(AbpPermissionManagementEntityFrameworkCoreModule), + typeof(AbpSettingManagementEntityFrameworkCoreModule), + typeof(AbpEntityFrameworkCoreSqlServerModule), + typeof(AbpBackgroundJobsEntityFrameworkCoreModule), + typeof(AbpAuditLoggingEntityFrameworkCoreModule), + typeof(AbpTenantManagementEntityFrameworkCoreModule), + typeof(AbpFeatureManagementEntityFrameworkCoreModule) + )] +public class Dy_ExchangeEntityFrameworkCoreModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + Dy_ExchangeEfCoreEntityExtensionMappings.Configure(); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAbpDbContext(options => + { + /* Remove "includeAllEntities: true" to create + * default repositories only for aggregate roots */ + options.AddDefaultRepositories(includeAllEntities: true); + options.AddRepository(); + }); + + Configure(options => + { + /* The main point to change your DBMS. + * See also Dy_ExchangeMigrationsDbContextFactory for EF Core tooling. */ + options.UseSqlServer(); + }); + + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreDy_ExchangeDbSchemaMigrator.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreDy_ExchangeDbSchemaMigrator.cs new file mode 100644 index 000000000..7da5735f4 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreDy_ExchangeDbSchemaMigrator.cs @@ -0,0 +1,34 @@ +using System; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using Dy_Exchange.Data; +using Volo.Abp.DependencyInjection; + +namespace Dy_Exchange.EntityFrameworkCore; + +public class EntityFrameworkCoreDy_ExchangeDbSchemaMigrator + : IDy_ExchangeDbSchemaMigrator, ITransientDependency +{ + private readonly IServiceProvider _serviceProvider; + + public EntityFrameworkCoreDy_ExchangeDbSchemaMigrator( + IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public async Task MigrateAsync() + { + /* We intentionally resolving the Dy_ExchangeDbContext + * from IServiceProvider (instead of directly injecting it) + * to properly get the connection string of the current tenant in the + * current scope. + */ + + await _serviceProvider + .GetRequiredService() + .Database + .MigrateAsync(); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.Designer.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.Designer.cs new file mode 100644 index 000000000..295311402 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.Designer.cs @@ -0,0 +1,1870 @@ +// +using System; +using Dy_Exchange.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace DyExchange.Migrations +{ + [DbContext(typeof(Dy_ExchangeDbContext))] + [Migration("20240711062225_Initial")] + partial class Initial + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ClientUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("nvarchar(max)"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.cs new file mode 100644 index 000000000..c3b444b7d --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/20240711062225_Initial.cs @@ -0,0 +1,1084 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace DyExchange.Migrations +{ + /// + public partial class Initial : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpAuditLogs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + UserId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ImpersonatorUserId = table.Column(type: "uniqueidentifier", nullable: true), + ImpersonatorUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ImpersonatorTenantId = table.Column(type: "uniqueidentifier", nullable: true), + ImpersonatorTenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ExecutionTime = table.Column(type: "datetime2", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + HttpMethod = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), + Url = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + Exceptions = table.Column(type: "nvarchar(max)", nullable: true), + Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + HttpStatusCode = table.Column(type: "int", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpBackgroundJobs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + JobName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + JobArgs = table.Column(type: "nvarchar(max)", maxLength: 1048576, nullable: false), + TryCount = table.Column(type: "smallint", nullable: false, defaultValue: (short)0), + CreationTime = table.Column(type: "datetime2", nullable: false), + NextTryTime = table.Column(type: "datetime2", nullable: false), + LastTryTime = table.Column(type: "datetime2", nullable: true), + IsAbandoned = table.Column(type: "bit", nullable: false, defaultValue: false), + Priority = table.Column(type: "tinyint", nullable: false, defaultValue: (byte)15), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpBackgroundJobs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpClaimTypes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Required = table.Column(type: "bit", nullable: false), + IsStatic = table.Column(type: "bit", nullable: false), + Regex = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ValueType = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatureGroups", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureGroups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatures", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + IsVisibleToClients = table.Column(type: "bit", nullable: false), + IsAvailableToHost = table.Column(type: "bit", nullable: false), + AllowedProviders = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ValueType = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatures", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatureValues", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Value = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpLinkUsers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + SourceTenantId = table.Column(type: "uniqueidentifier", nullable: true), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetTenantId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpLinkUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnits", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ParentId = table.Column(type: "uniqueidentifier", nullable: true), + Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), + DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnits", x => x.Id); + table.ForeignKey( + name: "FK_AbpOrganizationUnits_AbpOrganizationUnits_ParentId", + column: x => x.ParentId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGrants", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGroups", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGroups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsEnabled = table.Column(type: "bit", nullable: false), + MultiTenancySide = table.Column(type: "tinyint", nullable: false), + Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + StateCheckers = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpRoles", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsDefault = table.Column(type: "bit", nullable: false), + IsStatic = table.Column(type: "bit", nullable: false), + IsPublic = table.Column(type: "bit", nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSecurityLogs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + Identity = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + Action = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + UserId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSettings", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Value = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpTenants", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpUserDelegations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + StartTime = table.Column(type: "datetime2", nullable: false), + EndTime = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserDelegations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpUsers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + Surname = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + EmailConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), + PasswordHash = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + SecurityStamp = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsExternal = table.Column(type: "bit", nullable: false, defaultValue: false), + PhoneNumber = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), + PhoneNumberConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), + IsActive = table.Column(type: "bit", nullable: false), + TwoFactorEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), + LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), + LockoutEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), + AccessFailedCount = table.Column(type: "int", nullable: false, defaultValue: 0), + ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictApplications", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ClientUri = table.Column(type: "nvarchar(max)", nullable: true), + LogoUri = table.Column(type: "nvarchar(max)", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictScopes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpAuditLogActions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), + ServiceName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + MethodName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Parameters = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + ExecutionTime = table.Column(type: "datetime2", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); + table.ForeignKey( + name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityChanges", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ChangeTime = table.Column(type: "datetime2", nullable: false), + ChangeType = table.Column(type: "tinyint", nullable: false), + EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnitRoles", + columns: table => new + { + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnitRoles", x => new { x.OrganizationUnitId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpOrganizationUnits_OrganizationUnitId", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpRoleClaims", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpRoleClaims_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpTenantConnectionStrings", + columns: table => new + { + TenantId = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + Value = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenantConnectionStrings", x => new { x.TenantId, x.Name }); + table.ForeignKey( + name: "FK_AbpTenantConnectionStrings_AbpTenants_TenantId", + column: x => x.TenantId, + principalTable: "AbpTenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserClaims", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + UserId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpUserClaims_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserLogins", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ProviderKey = table.Column(type: "nvarchar(196)", maxLength: 196, nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserLogins", x => new { x.UserId, x.LoginProvider }); + table.ForeignKey( + name: "FK_AbpUserLogins_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserOrganizationUnits", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserOrganizationUnits", x => new { x.OrganizationUnitId, x.UserId }); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpOrganizationUnits_OrganizationUnitId", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserRoles", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserTokens", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AbpUserTokens_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictAuthorizations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityPropertyChanges", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + EntityChangeId = table.Column(type: "uniqueidentifier", nullable: false), + NewValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + OriginalValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + PropertyName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + PropertyTypeFullName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", + column: x => x.EntityChangeId, + principalTable: "AbpEntityChanges", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_AuditLogId", + table: "AbpAuditLogActions", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_ExecutionTime", + table: "AbpAuditLogActions", + columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "UserId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpBackgroundJobs_IsAbandoned_NextTryTime", + table: "AbpBackgroundJobs", + columns: new[] { "IsAbandoned", "NextTryTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_AuditLogId", + table: "AbpEntityChanges", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", + table: "AbpEntityChanges", + columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityPropertyChanges_EntityChangeId", + table: "AbpEntityPropertyChanges", + column: "EntityChangeId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureGroups_Name", + table: "AbpFeatureGroups", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatures_GroupName", + table: "AbpFeatures", + column: "GroupName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatures_Name", + table: "AbpFeatures", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", + table: "AbpFeatureValues", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpLinkUsers_SourceUserId_SourceTenantId_TargetUserId_TargetTenantId", + table: "AbpLinkUsers", + columns: new[] { "SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId" }, + unique: true, + filter: "[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", + table: "AbpOrganizationUnitRoles", + columns: new[] { "RoleId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_Code", + table: "AbpOrganizationUnits", + column: "Code"); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_ParentId", + table: "AbpOrganizationUnits", + column: "ParentId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGrants_TenantId_Name_ProviderName_ProviderKey", + table: "AbpPermissionGrants", + columns: new[] { "TenantId", "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[TenantId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGroups_Name", + table: "AbpPermissionGroups", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_GroupName", + table: "AbpPermissions", + column: "GroupName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_Name", + table: "AbpPermissions", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoleClaims_RoleId", + table: "AbpRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoles_NormalizedName", + table: "AbpRoles", + column: "NormalizedName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Action", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Action" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_ApplicationName", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "ApplicationName" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Identity", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Identity" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_UserId", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSettings_Name_ProviderName_ProviderKey", + table: "AbpSettings", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpTenants_Name", + table: "AbpTenants", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserClaims_UserId", + table: "AbpUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserLogins_LoginProvider_ProviderKey", + table: "AbpUserLogins", + columns: new[] { "LoginProvider", "ProviderKey" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserOrganizationUnits_UserId_OrganizationUnitId", + table: "AbpUserOrganizationUnits", + columns: new[] { "UserId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserRoles_RoleId_UserId", + table: "AbpUserRoles", + columns: new[] { "RoleId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_Email", + table: "AbpUsers", + column: "Email"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedEmail", + table: "AbpUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedUserName", + table: "AbpUsers", + column: "NormalizedUserName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_UserName", + table: "AbpUsers", + column: "UserName"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpAuditLogActions"); + + migrationBuilder.DropTable( + name: "AbpBackgroundJobs"); + + migrationBuilder.DropTable( + name: "AbpClaimTypes"); + + migrationBuilder.DropTable( + name: "AbpEntityPropertyChanges"); + + migrationBuilder.DropTable( + name: "AbpFeatureGroups"); + + migrationBuilder.DropTable( + name: "AbpFeatures"); + + migrationBuilder.DropTable( + name: "AbpFeatureValues"); + + migrationBuilder.DropTable( + name: "AbpLinkUsers"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnitRoles"); + + migrationBuilder.DropTable( + name: "AbpPermissionGrants"); + + migrationBuilder.DropTable( + name: "AbpPermissionGroups"); + + migrationBuilder.DropTable( + name: "AbpPermissions"); + + migrationBuilder.DropTable( + name: "AbpRoleClaims"); + + migrationBuilder.DropTable( + name: "AbpSecurityLogs"); + + migrationBuilder.DropTable( + name: "AbpSettings"); + + migrationBuilder.DropTable( + name: "AbpTenantConnectionStrings"); + + migrationBuilder.DropTable( + name: "AbpUserClaims"); + + migrationBuilder.DropTable( + name: "AbpUserDelegations"); + + migrationBuilder.DropTable( + name: "AbpUserLogins"); + + migrationBuilder.DropTable( + name: "AbpUserOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpUserRoles"); + + migrationBuilder.DropTable( + name: "AbpUserTokens"); + + migrationBuilder.DropTable( + name: "OpenIddictScopes"); + + migrationBuilder.DropTable( + name: "OpenIddictTokens"); + + migrationBuilder.DropTable( + name: "AbpEntityChanges"); + + migrationBuilder.DropTable( + name: "AbpTenants"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpRoles"); + + migrationBuilder.DropTable( + name: "AbpUsers"); + + migrationBuilder.DropTable( + name: "OpenIddictAuthorizations"); + + migrationBuilder.DropTable( + name: "AbpAuditLogs"); + + migrationBuilder.DropTable( + name: "OpenIddictApplications"); + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/Dy_ExchangeDbContextModelSnapshot.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/Dy_ExchangeDbContextModelSnapshot.cs new file mode 100644 index 000000000..b70bed3c2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Migrations/Dy_ExchangeDbContextModelSnapshot.cs @@ -0,0 +1,1867 @@ +// +using System; +using Dy_Exchange.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace DyExchange.Migrations +{ + [DbContext(typeof(Dy_ExchangeDbContext))] + partial class DyExchangeDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ClientUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("nvarchar(max)"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Properties/AssemblyInfo.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..5f7b86827 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("Dy_Exchange.EntityFrameworkCore.Tests")] diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigEfCoreQuerableExtensions.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigEfCoreQuerableExtensions.cs new file mode 100644 index 000000000..c642cf8a4 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigEfCoreQuerableExtensions.cs @@ -0,0 +1,22 @@ +using System.Linq; +using Microsoft.EntityFrameworkCore; + +namespace Dy_Exchange.Z_Business; + +/// +/// +/// +public static class DataExchangeInterfaceConfigEfCoreQueryableExtensions +{ + public static IQueryable IncludeDetails(this IQueryable queryable, bool include = true) + { + if (!include) + { + return queryable; + } + + return queryable + // .Include(x => x.xxx) // TODO: AbpHelper generated + ; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigRepository.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigRepository.cs new file mode 100644 index 000000000..256998ec9 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.EntityFrameworkCore/Z_Business/DataExchangeInterfaceConfigRepository.cs @@ -0,0 +1,20 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Dy_Exchange.EntityFrameworkCore; +using Volo.Abp.Domain.Repositories.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +namespace Dy_Exchange.Z_Business; + +public class DataExchangeInterfaceConfigRepository : EfCoreRepository, IDataExchangeInterfaceConfigRepository +{ + public DataExchangeInterfaceConfigRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } + + public override async Task> WithDetailsAsync() + { + return (await GetQueryableAsync()).IncludeDetails(); + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_Exchange.HttpApi.Client.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_Exchange.HttpApi.Client.csproj new file mode 100644 index 000000000..41259e260 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_Exchange.HttpApi.Client.csproj @@ -0,0 +1,29 @@ + + + + + + netstandard2.0;netstandard2.1;net7.0 + enable + Dy_Exchange + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_ExchangeHttpApiClientModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_ExchangeHttpApiClientModule.cs new file mode 100644 index 000000000..dda2699a5 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Client/Dy_ExchangeHttpApiClientModule.cs @@ -0,0 +1,38 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.TenantManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.VirtualFileSystem; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeApplicationContractsModule), + typeof(AbpAccountHttpApiClientModule), + typeof(AbpIdentityHttpApiClientModule), + typeof(AbpPermissionManagementHttpApiClientModule), + typeof(AbpTenantManagementHttpApiClientModule), + typeof(AbpFeatureManagementHttpApiClientModule), + typeof(AbpSettingManagementHttpApiClientModule) +)] +public class Dy_ExchangeHttpApiClientModule : AbpModule +{ + public const string RemoteServiceName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies( + typeof(Dy_ExchangeApplicationContractsModule).Assembly, + RemoteServiceName + ); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Controllers/HomeController.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Controllers/HomeController.cs new file mode 100644 index 000000000..bbac019f9 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Controllers/HomeController.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; + +namespace Dy_Exchange.Controllers; + +public class HomeController : AbpController +{ + public ActionResult Index() + { + return Redirect("~/swagger"); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_Exchange.HttpApi.Host.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_Exchange.HttpApi.Host.csproj new file mode 100644 index 000000000..40e3f7cd2 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_Exchange.HttpApi.Host.csproj @@ -0,0 +1,40 @@ + + + + + + net7.0 + enable + Dy_Exchange + true + Dy_Exchange-4681b4fd-151f-4221-84a4-929d86723e4c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_ExchangeHttpApiHostModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_ExchangeHttpApiHostModule.cs new file mode 100644 index 000000000..03256c870 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Dy_ExchangeHttpApiHostModule.cs @@ -0,0 +1,210 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Medallion.Threading; +using Medallion.Threading.Redis; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Dy_Exchange.EntityFrameworkCore; +using Dy_Exchange.MultiTenancy; +using StackExchange.Redis; +using Microsoft.OpenApi.Models; +using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; +using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.Autofac; +using Volo.Abp.Caching; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.DistributedLocking; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.Swashbuckle; +using Volo.Abp.VirtualFileSystem; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeHttpApiModule), + typeof(AbpAutofacModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpDistributedLockingModule), + typeof(AbpAspNetCoreMvcUiMultiTenancyModule), + typeof(Dy_ExchangeApplicationModule), + typeof(Dy_ExchangeEntityFrameworkCoreModule), + typeof(AbpAspNetCoreSerilogModule), + typeof(AbpSwashbuckleModule) +)] +public class Dy_ExchangeHttpApiHostModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + var configuration = context.Services.GetConfiguration(); + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + ConfigureConventionalControllers(); + ConfigureAuthentication(context, configuration); + ConfigureCache(configuration); + ConfigureVirtualFileSystem(context); + ConfigureDataProtection(context, configuration, hostingEnvironment); + ConfigureDistributedLocking(context, configuration); + ConfigureCors(context, configuration); + ConfigureSwaggerServices(context, configuration); + } + + private void ConfigureCache(IConfiguration configuration) + { + Configure(options => { options.KeyPrefix = "Dy_Exchange:"; }); + } + + private void ConfigureVirtualFileSystem(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical( + Path.Combine(hostingEnvironment.ContentRootPath, + $"..{Path.DirectorySeparatorChar}Dy_Exchange.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical( + Path.Combine(hostingEnvironment.ContentRootPath, + $"..{Path.DirectorySeparatorChar}Dy_Exchange.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical( + Path.Combine(hostingEnvironment.ContentRootPath, + $"..{Path.DirectorySeparatorChar}Dy_Exchange.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical( + Path.Combine(hostingEnvironment.ContentRootPath, + $"..{Path.DirectorySeparatorChar}Dy_Exchange.Application")); + }); + } + } + + private void ConfigureConventionalControllers() + { + Configure(options => + { + options.ConventionalControllers.Create(typeof(Dy_ExchangeApplicationModule).Assembly); + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) + { + context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); + options.Audience = "Dy_Exchange"; + }); + } + + private static void ConfigureSwaggerServices(ServiceConfigurationContext context, IConfiguration configuration) + { + context.Services.AddAbpSwaggerGenWithOAuth( + configuration["AuthServer:Authority"], + new Dictionary + { + {"Dy_Exchange", "Dy_Exchange API"} + }, + options => + { + options.SwaggerDoc("v1", new OpenApiInfo { Title = "Dy_Exchange API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.CustomSchemaIds(type => type.FullName); + }); + } + + private void ConfigureDataProtection( + ServiceConfigurationContext context, + IConfiguration configuration, + IWebHostEnvironment hostingEnvironment) + { + var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("Dy_Exchange"); + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "Dy_Exchange-Protection-Keys"); + } + } + + private void ConfigureDistributedLocking( + ServiceConfigurationContext context, + IConfiguration configuration) + { + context.Services.AddSingleton(sp => + { + var connection = ConnectionMultiplexer + .Connect(configuration["Redis:Configuration"]); + return new RedisDistributedSynchronizationProvider(connection.GetDatabase()); + }); + } + + private void ConfigureCors(ServiceConfigurationContext context, IConfiguration configuration) + { + context.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => + { + builder + .WithOrigins(configuration["App:CorsOrigins"]? + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() ?? Array.Empty()) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseAbpRequestLocalization(); + app.UseCorrelationId(); + app.UseStaticFiles(); + app.UseRouting(); + app.UseCors(); + app.UseAuthentication(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseAuthorization(); + + app.UseSwagger(); + app.UseAbpSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "Dy_Exchange API"); + + var configuration = context.GetConfiguration(); + options.OAuthClientId(configuration["AuthServer:SwaggerClientId"]); + options.OAuthScopes("Dy_Exchange"); + }); + + app.UseAuditing(); + app.UseAbpSerilogEnrichers(); + app.UseUnitOfWork(); + app.UseConfiguredEndpoints(); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Program.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Program.cs new file mode 100644 index 000000000..f67d7bc32 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Events; + +namespace Dy_Exchange; + +public class Program +{ + public async static Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() +#if DEBUG + .MinimumLevel.Debug() +#else + .MinimumLevel.Information() +#endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateLogger(); + + try + { + Log.Information("Starting Dy_Exchange.HttpApi.Host."); + var builder = WebApplication.CreateBuilder(args); + builder.Host.AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog(); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); + return 0; + } + catch (Exception ex) + { + if (ex is HostAbortedException) + { + throw; + } + + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Properties/launchSettings.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Properties/launchSettings.json new file mode 100644 index 000000000..a18f9ee6d --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44363", + "sslPort": 44363 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Dy_Exchange.HttpApi.Host": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:44363", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.Development.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.Development.json new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.Development.json @@ -0,0 +1,2 @@ +{ +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.json new file mode 100644 index 000000000..00c757636 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.json @@ -0,0 +1,26 @@ +{ + "App": { + "CorsOrigins": "https://*.Dy_Exchange.com", + "Audit": { + "IsEnabled": false // ç¦ç”¨å®¡è®¡åŠŸèƒ½ + // 其他审计相关设置项 + } + }, + "ConnectionStrings": { + "Default": "Server=.;Database=Dy_FasterZ_Exchange;uid=sa;pwd=sasa;timeout=6000;Encrypt=False;", + "Dy_Exchange": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_DataExchange_CC;uid=ccwin-in;pwd=Microsoft@2022;timeout=60000;Encrypt=False;" + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "AuthServer": { + "Authority": "http://192.168.1.75:60080", + "RequireHttpsMetadata": "false", + "SwaggerClientId": "Dy_Exchange_Swagger" + }, + "StringEncryption": { + "DefaultPassPhrase": "ybgU8NieQZNjguXe" + }, + "AlwaysAllowAuthorization": "true", + "urls": "http://192.168.1.75:60081" +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.secrets.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.secrets.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/web.config b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/web.config new file mode 100644 index 000000000..654c88c61 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi.Host/web.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Controllers/Dy_ExchangeController.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Controllers/Dy_ExchangeController.cs new file mode 100644 index 000000000..44b1be86c --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Controllers/Dy_ExchangeController.cs @@ -0,0 +1,14 @@ +using Dy_Exchange.Localization; +using Volo.Abp.AspNetCore.Mvc; + +namespace Dy_Exchange.Controllers; + +/* Inherit your controllers from this class. + */ +public abstract class Dy_ExchangeController : AbpControllerBase +{ + protected Dy_ExchangeController() + { + LocalizationResource = typeof(Dy_ExchangeResource); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_Exchange.HttpApi.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_Exchange.HttpApi.csproj new file mode 100644 index 000000000..777022fcc --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_Exchange.HttpApi.csproj @@ -0,0 +1,24 @@ + + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_ExchangeHttpApiModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_ExchangeHttpApiModule.cs new file mode 100644 index 000000000..4f0cc243a --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Dy_ExchangeHttpApiModule.cs @@ -0,0 +1,41 @@ +using Localization.Resources.AbpUi; +using Dy_Exchange.Localization; +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.HttpApi; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeApplicationContractsModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpIdentityHttpApiModule), + typeof(AbpPermissionManagementHttpApiModule), + typeof(AbpTenantManagementHttpApiModule), + typeof(AbpFeatureManagementHttpApiModule), + typeof(AbpSettingManagementHttpApiModule) + )] +public class Dy_ExchangeHttpApiModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + ConfigureLocalization(); + } + + private void ConfigureLocalization() + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Models/Test/TestModel.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Models/Test/TestModel.cs new file mode 100644 index 000000000..571f72bc3 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.HttpApi/Models/Test/TestModel.cs @@ -0,0 +1,10 @@ +using System; + +namespace Dy_Exchange.Models.Test; + +public class TestModel +{ + public string Name { get; set; } + + public DateTime BirthDate { get; set; } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/Default.cshtml b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/Default.cshtml new file mode 100644 index 000000000..e403a44af --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/Default.cshtml @@ -0,0 +1,4 @@ +@using Microsoft.AspNetCore.Mvc.Localization +@using Dy_Exchange.Localization +@inject IHtmlLocalizer L +@L["Login"] diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/LoginLinkViewComponent.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/LoginLinkViewComponent.cs new file mode 100644 index 000000000..05bf8738a --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/Toolbar/LoginLink/LoginLinkViewComponent.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; + +namespace Dy_Exchange.Web.Components.Toolbar.LoginLink; + +public class LoginLinkViewComponent : AbpViewComponent +{ + public virtual IViewComponentResult Invoke() + { + return View("~/Components/Toolbar/LoginLink/Default.cshtml"); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/_ViewImports.cshtml b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Components/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Controllers/AccountController.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Controllers/AccountController.cs new file mode 100644 index 000000000..ac232435c --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Controllers/AccountController.cs @@ -0,0 +1,8 @@ +using Volo.Abp.AspNetCore.Mvc.Authentication; + +namespace Dy_Exchange.Web.Controllers; + +public class AccountController : ChallengeAccountController +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_Exchange.Web.csproj b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_Exchange.Web.csproj new file mode 100644 index 000000000..b92b29a07 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_Exchange.Web.csproj @@ -0,0 +1,62 @@ + + + + + + net7.0 + enable + Dy_Exchange.Web + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + true + true + false + true + Dy_Exchange-4681b4fd-151f-4221-84a4-929d86723e4c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeBrandingProvider.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeBrandingProvider.cs new file mode 100644 index 000000000..c8da048a7 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeBrandingProvider.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Ui.Branding; +using Volo.Abp.DependencyInjection; + +namespace Dy_Exchange.Web; + +[Dependency(ReplaceServices = true)] +public class Dy_ExchangeBrandingProvider : DefaultBrandingProvider +{ + public override string AppName => "Dy_Exchange"; +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebAutoMapperProfile.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebAutoMapperProfile.cs new file mode 100644 index 000000000..3ef9dba10 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebAutoMapperProfile.cs @@ -0,0 +1,11 @@ +using AutoMapper; + +namespace Dy_Exchange.Web; + +public class Dy_ExchangeWebAutoMapperProfile : Profile +{ + public Dy_ExchangeWebAutoMapperProfile() + { + //Define your AutoMapper configuration here for the Web project. + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebModule.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebModule.cs new file mode 100644 index 000000000..0a7c2cd0f --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Dy_ExchangeWebModule.cs @@ -0,0 +1,277 @@ +using System; +using System.IO; +using Medallion.Threading; +using Medallion.Threading.Redis; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.DataProtection; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.IdentityModel.Protocols.OpenIdConnect; +using Dy_Exchange.Localization; +using Dy_Exchange.MultiTenancy; +using Dy_Exchange.Web.Menus; +using StackExchange.Redis; +using Microsoft.OpenApi.Models; +using Volo.Abp; +using Volo.Abp.AspNetCore.Authentication.OpenIdConnect; +using Volo.Abp.AspNetCore.Mvc.Client; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; +using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.Autofac; +using Volo.Abp.AutoMapper; +using Volo.Abp.Caching; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.DistributedLocking; +using Volo.Abp.Http.Client.IdentityModel.Web; +using Volo.Abp.Http.Client.Web; +using Volo.Abp.Identity.Web; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement.Web; +using Volo.Abp.SettingManagement.Web; +using Volo.Abp.Swashbuckle; +using Volo.Abp.TenantManagement.Web; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.UI; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; + +namespace Dy_Exchange.Web; + +[DependsOn( + typeof(Dy_ExchangeHttpApiClientModule), + typeof(Dy_ExchangeHttpApiModule), + typeof(AbpAspNetCoreAuthenticationOpenIdConnectModule), + typeof(AbpAspNetCoreMvcClientModule), + typeof(AbpHttpClientWebModule), + typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), + typeof(AbpAutofacModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpDistributedLockingModule), + typeof(AbpSettingManagementWebModule), + typeof(AbpHttpClientIdentityModelWebModule), + typeof(AbpIdentityWebModule), + typeof(AbpTenantManagementWebModule), + typeof(AbpAspNetCoreSerilogModule), + typeof(AbpSwashbuckleModule) + )] +public class Dy_ExchangeWebModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource( + typeof(Dy_ExchangeResource), + typeof(Dy_ExchangeDomainSharedModule).Assembly, + typeof(Dy_ExchangeApplicationContractsModule).Assembly, + typeof(Dy_ExchangeWebModule).Assembly + ); + }); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + ConfigureBundles(); + ConfigureCache(); + ConfigureDataProtection(context, configuration, hostingEnvironment); + ConfigureDistributedLocking(context, configuration); + ConfigureUrls(configuration); + ConfigureAuthentication(context, configuration); + ConfigureAutoMapper(); + ConfigureVirtualFileSystem(hostingEnvironment); + ConfigureNavigationServices(configuration); + ConfigureMultiTenancy(); + ConfigureSwaggerServices(context.Services); + } + + private void ConfigureBundles() + { + Configure(options => + { + options.StyleBundles.Configure( + LeptonXLiteThemeBundles.Styles.Global, + bundle => + { + bundle.AddFiles("/global-styles.css"); + } + ); + }); + } + + private void ConfigureCache() + { + Configure(options => + { + options.KeyPrefix = "Dy_Exchange:"; + }); + } + + private void ConfigureUrls(IConfiguration configuration) + { + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + }); + } + + private void ConfigureMultiTenancy() + { + Configure(options => + { + options.IsEnabled = MultiTenancyConsts.IsEnabled; + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) + { + context.Services.AddAuthentication(options => + { + options.DefaultScheme = "Cookies"; + options.DefaultChallengeScheme = "oidc"; + }) + .AddCookie("Cookies", options => + { + options.ExpireTimeSpan = TimeSpan.FromDays(365); + options.CheckTokenExpiration(); + }) + .AddAbpOpenIdConnect("oidc", options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); + options.ResponseType = OpenIdConnectResponseType.CodeIdToken; + + options.ClientId = configuration["AuthServer:ClientId"]; + options.ClientSecret = configuration["AuthServer:ClientSecret"]; + + options.UsePkce = true; + options.SaveTokens = true; + options.GetClaimsFromUserInfoEndpoint = true; + + options.Scope.Add("roles"); + options.Scope.Add("email"); + options.Scope.Add("phone"); + options.Scope.Add("Dy_Exchange"); + }); + } + + private void ConfigureAutoMapper() + { + Configure(options => + { + options.AddMaps(); + }); + } + + private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment) + { + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Dy_Exchange.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}Dy_Exchange.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + }); + } + } + + private void ConfigureNavigationServices(IConfiguration configuration) + { + Configure(options => + { + options.MenuContributors.Add(new Dy_ExchangeMenuContributor(configuration)); + }); + + Configure(options => + { + options.Contributors.Add(new Dy_ExchangeToolbarContributor()); + }); + } + + private void ConfigureSwaggerServices(IServiceCollection services) + { + services.AddAbpSwaggerGen( + options => + { + options.SwaggerDoc("v1", new OpenApiInfo { Title = "Dy_Exchange API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.CustomSchemaIds(type => type.FullName); + } + ); + } + + private void ConfigureDataProtection( + ServiceConfigurationContext context, + IConfiguration configuration, + IWebHostEnvironment hostingEnvironment) + { + var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("Dy_Exchange"); + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "Dy_Exchange-Protection-Keys"); + } + } + + private void ConfigureDistributedLocking( + ServiceConfigurationContext context, + IConfiguration configuration) + { + context.Services.AddSingleton(sp => + { + var connection = ConnectionMultiplexer + .Connect(configuration["Redis:Configuration"]); + return new RedisDistributedSynchronizationProvider(connection.GetDatabase()); + }); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseAbpRequestLocalization(); + + if (!env.IsDevelopment()) + { + app.UseErrorPage(); + } + + app.UseCorrelationId(); + app.UseStaticFiles(); + app.UseRouting(); + app.UseAuthentication(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseAuthorization(); + app.UseSwagger(); + app.UseAbpSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "Dy_Exchange API"); + }); + app.UseAbpSerilogEnrichers(); + app.UseConfiguredEndpoints(); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenuContributor.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenuContributor.cs new file mode 100644 index 000000000..b5cca2c42 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenuContributor.cs @@ -0,0 +1,81 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Dy_Exchange.Localization; +using Dy_Exchange.MultiTenancy; +using Volo.Abp.Account.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Identity.Web.Navigation; +using Volo.Abp.SettingManagement.Web.Navigation; +using Volo.Abp.TenantManagement.Web.Navigation; +using Volo.Abp.UI.Navigation; +using Volo.Abp.Users; + +namespace Dy_Exchange.Web.Menus; + +public class Dy_ExchangeMenuContributor : IMenuContributor +{ + private readonly IConfiguration _configuration; + + public Dy_ExchangeMenuContributor(IConfiguration configuration) + { + _configuration = configuration; + } + + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.Main) + { + await ConfigureMainMenuAsync(context); + } + else if (context.Menu.Name == StandardMenus.User) + { + await ConfigureUserMenuAsync(context); + } + } + + private Task ConfigureMainMenuAsync(MenuConfigurationContext context) + { + var administration = context.Menu.GetAdministration(); + var l = context.GetLocalizer(); + + context.Menu.Items.Insert( + 0, + new ApplicationMenuItem( + Dy_ExchangeMenus.Home, + l["Menu:Home"], + "~/", + icon: "fas fa-home", + order: 0 + ) + ); + + if (MultiTenancyConsts.IsEnabled) + { + administration.SetSubItemOrder(TenantManagementMenuNames.GroupName, 1); + } + else + { + administration.TryRemoveMenuItem(TenantManagementMenuNames.GroupName); + } + + administration.SetSubItemOrder(IdentityMenuNames.GroupName, 2); + administration.SetSubItemOrder(SettingManagementMenuNames.GroupName, 3); + + return Task.CompletedTask; + } + + private Task ConfigureUserMenuAsync(MenuConfigurationContext context) + { + var l = context.GetLocalizer(); + var accountStringLocalizer = context.GetLocalizer(); + var authServerUrl = _configuration["AuthServer:Authority"] ?? ""; + + context.Menu.AddItem(new ApplicationMenuItem("Account.Manage", accountStringLocalizer["MyAccount"], + $"{authServerUrl.EnsureEndsWith('/')}Account/Manage?returnUrl={_configuration["App:SelfUrl"]}", icon: "fa fa-cog", order: 1000, null, "_blank").RequireAuthenticated()); + context.Menu.AddItem(new ApplicationMenuItem("Account.Logout", l["Logout"], url: "~/Account/Logout", icon: "fa fa-power-off", order: int.MaxValue - 1000).RequireAuthenticated()); + + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenus.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenus.cs new file mode 100644 index 000000000..66e50bb4a --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeMenus.cs @@ -0,0 +1,10 @@ +namespace Dy_Exchange.Web.Menus; + +public class Dy_ExchangeMenus +{ + private const string Prefix = "Dy_Exchange"; + public const string Home = Prefix + ".Home"; + + //Add your menu items here... + +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeToolbarContributor.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeToolbarContributor.cs new file mode 100644 index 000000000..938830c20 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Menus/Dy_ExchangeToolbarContributor.cs @@ -0,0 +1,25 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Dy_Exchange.Web.Components.Toolbar.LoginLink; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars; +using Volo.Abp.Users; + +namespace Dy_Exchange.Web.Menus; + +public class Dy_ExchangeToolbarContributor : IToolbarContributor +{ + public virtual Task ConfigureToolbarAsync(IToolbarConfigurationContext context) + { + if (context.Toolbar.Name != StandardToolbars.Main) + { + return Task.CompletedTask; + } + + if (!context.ServiceProvider.GetRequiredService().IsAuthenticated) + { + context.Toolbar.Items.Add(new ToolbarItem(typeof(LoginLinkViewComponent))); + } + + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Dy_ExchangePageModel.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Dy_ExchangePageModel.cs new file mode 100644 index 000000000..6fe36c784 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Dy_ExchangePageModel.cs @@ -0,0 +1,12 @@ +using Dy_Exchange.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; + +namespace Dy_Exchange.Web.Pages; + +public abstract class Dy_ExchangePageModel : AbpPageModel +{ + protected Dy_ExchangePageModel() + { + LocalizationResourceType = typeof(Dy_ExchangeResource); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml new file mode 100644 index 000000000..c0245d58b --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml @@ -0,0 +1,187 @@ +@page +@model Dy_Exchange.Web.Pages.IndexModel +@using Microsoft.AspNetCore.Mvc.Localization +@using Dy_Exchange.Localization +@using Volo.Abp.Users +@inject IHtmlLocalizer L +@inject ICurrentUser CurrentUser +@section styles { + +} +@section scripts { + +} +
+
+ +

Welcome to the Application

+ +

@L["LongWelcomeMessage"]

+ + @if (!CurrentUser.IsAuthenticated) + { + @L["Login"] + } + +
+
+
+
+
+ +
+
+
+ THE OFFICIAL GUIDE +

Mastering ABP Framework

+

Written by the creator of the ABP Framework, this book will help you gain a complete understanding of the framework and modern web application development techniques.

+ +
+
+
+
+
+
+

Let's improve your application!

+

Here are some links to help you get started:

+
+
+
+
+
+
+
Learn the ABP Framework
+

Explore the compherensive documentation to learn how to build a modern web application.

+ See Documents +
+
+
+
+
Samples
+

See the example projects built with the ABP Framework.

+ All samples +
+
+
+
+
ABP Community
+

Get involved with a vibrant community and become a contributor.

+ Community + Contribute +
+
+
+
+
+
+
ABP Blog
+

Take a look at our recently published articles.

+ See Blog +
+
+
+
+
Github
+

Do you love the ABP Framework? Please give a star to support it!

+

+ Star + Issue + Fork +

+ Request a feature + +
+
+
+
+
Stackoverflow
+

See answers to previously asked questions or ask a new one.

+ Questions + Ask a Question +
+
+
+
+
+ +
+

Meet the ABP Commercial

+

A Complete Web Application Platform Built on the ABP Framework

+
+ +
+
+

+ ABP Commercial is a platform based on the open source ABP framework. It provides pre-built application modules, + rapid application development tooling, professional UI themes, premium support and more. +

+ +
+
+
+
+ Startup Templates + Details +
+
+
+
+
+
+ Application Modules + Details +
+
+
+
+
+
+ Developer
Tools + Details +
+
+
+
+
+
+ UI
Themes + Details +
+
+
+
+
+
+ Premium Support + Details +
+
+
+
+
+
+ Additional Services + Details +
+
+
+
+
+
+ +
diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml.cs new file mode 100644 index 000000000..7041c98c9 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.cshtml.cs @@ -0,0 +1,17 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authentication; + +namespace Dy_Exchange.Web.Pages; + +public class IndexModel : Dy_ExchangePageModel +{ + public void OnGet() + { + + } + + public async Task OnPostLoginAsync() + { + await HttpContext.ChallengeAsync("oidc"); + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.css b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.css new file mode 100644 index 000000000..e768ff6ea --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.css @@ -0,0 +1,3 @@ +body { + +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.js b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.js new file mode 100644 index 000000000..a34376423 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/Index.js @@ -0,0 +1,3 @@ +$(function () { + abp.log.debug('Index.js initialized!'); +}); \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/_ViewImports.cshtml b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Program.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Program.cs new file mode 100644 index 000000000..cf6e15e18 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Events; + +namespace Dy_Exchange.Web; + +public class Program +{ + public async static Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() +#if DEBUG + .MinimumLevel.Debug() +#else + .MinimumLevel.Information() +#endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateLogger(); + + try + { + Log.Information("Starting web host."); + var builder = WebApplication.CreateBuilder(args); + builder.Host.AddAppSettingsSecretsJson() + .UseAutofac() + .UseSerilog(); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); + return 0; + } + catch (Exception ex) + { + if (ex is HostAbortedException) + { + throw; + } + + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/AssemblyInfo.cs b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..e1465c635 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("Dy_Exchange.Web.Tests")] diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/launchSettings.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/launchSettings.json new file mode 100644 index 000000000..3d399b49d --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "https://localhost:44376", + "sslPort": 44376 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Dy_Exchange.Web": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:44376", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Views/_ViewImports.cshtml b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Views/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/Views/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/abp.resourcemapping.js b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/abp.resourcemapping.js new file mode 100644 index 000000000..4a2ad4589 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/abp.resourcemapping.js @@ -0,0 +1,11 @@ +module.exports = { + aliases: { + + }, + clean: [ + + ], + mappings: { + + } +}; diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.Development.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.Development.json new file mode 100644 index 000000000..0db3279e4 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.Development.json @@ -0,0 +1,3 @@ +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.json new file mode 100644 index 000000000..4a0b6ca0f --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.json @@ -0,0 +1,22 @@ +{ + "App": { + "SelfUrl": "https://localhost:44376" + }, + "RemoteServices": { + "Default": { + "BaseUrl": "https://localhost:44363/" + } + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "AuthServer": { + "Authority": "https://localhost:44365", + "RequireHttpsMetadata": "true", + "ClientId": "Dy_Exchange_Web", + "ClientSecret": "1q2w3e*" + }, + "StringEncryption": { + "DefaultPassPhrase": "OntiKHsbiQj6FTce" + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.secrets.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.secrets.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package-lock.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package-lock.json new file mode 100644 index 000000000..354e2cf50 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package-lock.json @@ -0,0 +1,7663 @@ +{ + "name": "my-app", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "my-app", + "version": "1.0.0", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.3.1" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.3.tgz", + "integrity": "sha512-KJCw6OxjQBgNw4QoSoDQOe32bFF9NvHdD09zMVsoCB/GgN66dcbZnk+ldidHcwjLFDPXOuHJMx+TKmno3VgUaQ==", + "dependencies": { + "ansi-colors": "^4.1.1", + "extend-object": "^1.0.0", + "glob": "^7.1.6", + "gulp": "^4.0.2", + "merge-stream": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-2.3.3.tgz", + "integrity": "sha512-96hwhfJwnDRl6+ytAL4rSOpQCSd/41Fd5OtSsYjIMn8p96QLbO8WvhZEuzno3CFa/x916WJ87fjBN9+DkHRtWg==", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.3.tgz", + "integrity": "sha512-+G2mM/BJWqgGqZFg6GP28PaCtq+YlRmRfg7r0JQ1wkAN9pc11yKm0LRQjFnkcVBzg0A+N2hZqnFbW7wQhwXOHg==", + "dependencies": { + "@abp/aspnetcore.mvc.ui": "~7.2.3", + "@abp/bootstrap": "~7.2.3", + "@abp/bootstrap-datepicker": "~7.2.3", + "@abp/bootstrap-daterangepicker": "~7.2.3", + "@abp/datatables.net-bs5": "~7.2.3", + "@abp/font-awesome": "~7.2.3", + "@abp/jquery-form": "~7.2.3", + "@abp/jquery-validation-unobtrusive": "~7.2.3", + "@abp/lodash": "~7.2.3", + "@abp/luxon": "~7.2.3", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.3", + "@abp/moment": "~7.2.3", + "@abp/select2": "~7.2.3", + "@abp/sweetalert2": "~7.2.3", + "@abp/timeago": "~7.2.3", + "@abp/toastr": "~7.2.3" + } + }, + "node_modules/@abp/bootstrap": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-7.2.3.tgz", + "integrity": "sha512-Z00q1sAwo9PvFSpfFlbbUHPMyghLOzuEuAzz/8nA6tK7WR0KQBS/0zGC0nK9hNwbyZ4FqKwPSznRVwuwrnqyhQ==", + "dependencies": { + "@abp/core": "~7.2.3", + "bootstrap": "^5.1.3" + } + }, + "node_modules/@abp/bootstrap-datepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.3.tgz", + "integrity": "sha512-wiKVXftVrXcjwz0FpshD6P4WW3CNk/4cLH15aaqRjM+J0BigDeH9CczlpVc7jXdn+c8plHIRz0t5tqlUud7dIQ==", + "dependencies": { + "bootstrap-datepicker": "^1.9.0" + } + }, + "node_modules/@abp/bootstrap-daterangepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.3.tgz", + "integrity": "sha512-ChdnXMzHvg+HwrUtw2z6KuqRTqHVOq8qEBai+IPW6PykJSML+tZKzer3jzDIzyHq68OIqom3n3xL0XpcniKMew==", + "dependencies": { + "bootstrap-daterangepicker": "^3.1.0" + } + }, + "node_modules/@abp/core": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-7.2.3.tgz", + "integrity": "sha512-UyKBWwXbKCzKZwV2YJPgP3v2naDFsfJzV+KEHpdgLdPZyrpBhp+bQ80VNVe2HHrD/bLfhM4fu9pCXw6RYZKnvA==", + "dependencies": { + "@abp/utils": "~7.2.3" + } + }, + "node_modules/@abp/datatables.net": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-7.2.3.tgz", + "integrity": "sha512-g+LmRMg4Sk34iU/MN4RpgC/yd8NVEjhVWg/kT+nuWunsnwLHkcfK59KPGXn9ZLktL4VqQYj2WeXbDv8TEbOObg==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "datatables.net": "^1.11.4" + } + }, + "node_modules/@abp/datatables.net-bs5": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.3.tgz", + "integrity": "sha512-TmXTkIX+Vb1O/fER5JeRlWIOZLoSXG4QD3F0ZbebrjgS9k7oSu9igR/VhXBs1m1lvOqcNKv7Y4LTNRAMw+Mi0A==", + "dependencies": { + "@abp/datatables.net": "~7.2.3", + "datatables.net-bs5": "^1.11.4" + } + }, + "node_modules/@abp/font-awesome": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-7.2.3.tgz", + "integrity": "sha512-+4QRhfU08t1MYkmzTPX0B+p+SZQtOqtlDafzeDm5X6fbOlxV1hi97eRWtLtLgLjodjJWztpECWcsTUTgDhExwQ==", + "dependencies": { + "@abp/core": "~7.2.3", + "@fortawesome/fontawesome-free": "^5.15.4" + } + }, + "node_modules/@abp/jquery": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-7.2.3.tgz", + "integrity": "sha512-r/p3D2QlV57YvrGJsLfTuIJGwLSSi5AVFtkmgKyfpyXYOCNb+TVF9sEZOZnoZebX6cT0JRvtUfZ0dk6ZBebAzg==", + "dependencies": { + "@abp/core": "~7.2.3", + "jquery": "~3.6.0" + } + }, + "node_modules/@abp/jquery-form": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-7.2.3.tgz", + "integrity": "sha512-ucdGIZ0sxefakGRei9BJvDuoN16fKsYfpOT70/udw3k7uC3gFJD0AvAlEOEZPsFZhpNoqUKexNMym4lZovqBkg==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "jquery-form": "^4.3.0" + } + }, + "node_modules/@abp/jquery-validation": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-7.2.3.tgz", + "integrity": "sha512-drpE5mXErHQPk/4KChsj3zwNCA4GqNlYquTtHNv9/t5S/NuGqFAkchPV6mRYaiQypcxCndZQNSUEqnWxbuMY0g==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "jquery-validation": "^1.19.3" + } + }, + "node_modules/@abp/jquery-validation-unobtrusive": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.3.tgz", + "integrity": "sha512-Hcf1sqAFRIAYKqvN1pZGed+lazzY1nztvcmQlOOgUquiXRS3QjI3dIvxWw5nekJwUPqMpSfuC1GErQo0KpE1fw==", + "dependencies": { + "@abp/jquery-validation": "~7.2.3", + "jquery-validation-unobtrusive": "^3.2.12" + } + }, + "node_modules/@abp/lodash": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-7.2.3.tgz", + "integrity": "sha512-5KuXPPpa2mkTlUYPR83bUTJUSSGoq9/kFSf9fYC0Wk2mFFeG4mRK6mXwcyHTfYshQe2qxuncxZsJ+4j5uQN9PA==", + "dependencies": { + "@abp/core": "~7.2.3", + "lodash": "^4.17.21" + } + }, + "node_modules/@abp/luxon": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-7.2.3.tgz", + "integrity": "sha512-Y3IT1GbyuNSAzfpGnc5uzjz3Z/nDRUpYiZhoX0XeoQlJ+GyVT/+dytsZbuQBLgEWmQJhk9zxdcITXFT5vrWDcw==", + "dependencies": { + "@abp/core": "~7.2.3", + "luxon": "^2.3.0" + } + }, + "node_modules/@abp/malihu-custom-scrollbar-plugin": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.3.tgz", + "integrity": "sha512-wq9eBrw/bY3wb50v5zuL0qOcVLOT86XN2ZJQj69O/bi2+0WNdLRCqMHhY0kaafb7UIBAlKChKA/xeICwCZxn+w==", + "dependencies": { + "@abp/core": "~7.2.3", + "malihu-custom-scrollbar-plugin": "^3.1.5" + } + }, + "node_modules/@abp/moment": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-7.2.3.tgz", + "integrity": "sha512-pXsOzSom9RZHRGWuVaLIVzSkPayIcWMMmgSyo8T3gtZzZG/QJbpBWT+pug0X8pmV8So4d9E0LjacmODBKLM30A==", + "dependencies": { + "moment": "^2.9.0" + } + }, + "node_modules/@abp/select2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-7.2.3.tgz", + "integrity": "sha512-Cdzl467UftB421W+l8uikGr2NlOsHwxKDxt5yPrF03LEec1MBys5y7UPUV1TEO6l0xwAVi4mW8dXaawyIOSjUA==", + "dependencies": { + "@abp/core": "~7.2.3", + "select2": "^4.0.13" + } + }, + "node_modules/@abp/sweetalert2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-7.2.3.tgz", + "integrity": "sha512-KHZD1YRMN6Z4JxPfXuEwocubooux8nKq6sPNG6RKg+rWpp23Fp8nX/ZngJNywVXSRqzrdEvUAM+92JG7zMwKXw==", + "dependencies": { + "@abp/core": "~7.2.3", + "sweetalert2": "^11.3.6" + } + }, + "node_modules/@abp/timeago": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-7.2.3.tgz", + "integrity": "sha512-7eiibNXJWBGpQnitd/i8aWUNHOkcsuq8fAwBLJWvG8Whhh1nmBEjng0pGhheMqo0xoydefWi1K2uZDg99tKPeQ==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "timeago": "^1.6.7" + } + }, + "node_modules/@abp/toastr": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-7.2.3.tgz", + "integrity": "sha512-2zNMQE6ArRULP6xl+M66/EY83ZrXfNY+sNHUkmZH4uqfGhqR/ijKIQm1quxCLDmUcAjRr1kzu8BCc98pc9tfFw==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "toastr": "^2.1.4" + } + }, + "node_modules/@abp/utils": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-7.2.3.tgz", + "integrity": "sha512-hejxDJhSI9Kor4mS9c/JHHQrW/wLXC/XMOJMUcBVkX/5IQd9GU9EW63oalNQyVA3gz3h5obnb0Qcfdv65wc5Pg==", + "dependencies": { + "just-compare": "^1.3.0" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/anymatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/bootstrap-datepicker": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz", + "integrity": "sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg==", + "dependencies": { + "jquery": ">=3.4.0 <4.0.0" + } + }, + "node_modules/bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/datatables.net": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz", + "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==", + "dependencies": { + "jquery": "1.8 - 4" + } + }, + "node_modules/datatables.net-bs5": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.13.11.tgz", + "integrity": "sha512-NQO15TjXo4xvZ0jReC4Uf86ezbQzPQPdaN2YncrCPhzQ6fx+2WD7DUq4ur0HbAcYHo94/M+MtD5Ch29To7Rj3Q==", + "dependencies": { + "datatables.net": "1.13.11", + "jquery": "1.8 - 4" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", + "integrity": "sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli/node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "node_modules/jquery-form": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", + "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", + "dependencies": { + "jquery": ">=1.7.2" + } + }, + "node_modules/jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" + }, + "node_modules/jquery-validation": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.1.tgz", + "integrity": "sha512-rbBy36Xe5WBCO8OLdZLhPhVjb70KayuoX3WYRNwNpy9TXuUadhNTcaipr6jEIacn+V4jgXB2xUJl6hYzJxr5jw==", + "peerDependencies": { + "jquery": "^1.7 || ^2.0 || ^3.1" + } + }, + "node_modules/jquery-validation-unobtrusive": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", + "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", + "dependencies": { + "jquery": "^3.5.1", + "jquery-validation": ">=1.16" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/just-compare": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.5.1.tgz", + "integrity": "sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw==" + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ==", + "dependencies": { + "jquery-mousewheel": ">=3.0.6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/matchdep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/readdirp/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/sweetalert2": { + "version": "11.12.2", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.12.2.tgz", + "integrity": "sha512-Rwv5iRYlApkDSXeX22aLhhWMlWPzFxnNBVLZajkFKYhaVEfQkMOPQQRhBtSFxKBPCoko9U3SccWm9hI4o3Id0Q==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "dependencies": { + "jquery": ">=1.5.0 <4.0" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "dependencies": { + "jquery": ">=1.12.0" + } + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + }, + "dependencies": { + "@abp/aspnetcore.mvc.ui": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.3.tgz", + "integrity": "sha512-KJCw6OxjQBgNw4QoSoDQOe32bFF9NvHdD09zMVsoCB/GgN66dcbZnk+ldidHcwjLFDPXOuHJMx+TKmno3VgUaQ==", + "requires": { + "ansi-colors": "^4.1.1", + "extend-object": "^1.0.0", + "glob": "^7.1.6", + "gulp": "^4.0.2", + "merge-stream": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-2.3.3.tgz", + "integrity": "sha512-96hwhfJwnDRl6+ytAL4rSOpQCSd/41Fd5OtSsYjIMn8p96QLbO8WvhZEuzno3CFa/x916WJ87fjBN9+DkHRtWg==", + "requires": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1" + } + }, + "@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.3.tgz", + "integrity": "sha512-+G2mM/BJWqgGqZFg6GP28PaCtq+YlRmRfg7r0JQ1wkAN9pc11yKm0LRQjFnkcVBzg0A+N2hZqnFbW7wQhwXOHg==", + "requires": { + "@abp/aspnetcore.mvc.ui": "~7.2.3", + "@abp/bootstrap": "~7.2.3", + "@abp/bootstrap-datepicker": "~7.2.3", + "@abp/bootstrap-daterangepicker": "~7.2.3", + "@abp/datatables.net-bs5": "~7.2.3", + "@abp/font-awesome": "~7.2.3", + "@abp/jquery-form": "~7.2.3", + "@abp/jquery-validation-unobtrusive": "~7.2.3", + "@abp/lodash": "~7.2.3", + "@abp/luxon": "~7.2.3", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.3", + "@abp/moment": "~7.2.3", + "@abp/select2": "~7.2.3", + "@abp/sweetalert2": "~7.2.3", + "@abp/timeago": "~7.2.3", + "@abp/toastr": "~7.2.3" + } + }, + "@abp/bootstrap": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-7.2.3.tgz", + "integrity": "sha512-Z00q1sAwo9PvFSpfFlbbUHPMyghLOzuEuAzz/8nA6tK7WR0KQBS/0zGC0nK9hNwbyZ4FqKwPSznRVwuwrnqyhQ==", + "requires": { + "@abp/core": "~7.2.3", + "bootstrap": "^5.1.3" + } + }, + "@abp/bootstrap-datepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.3.tgz", + "integrity": "sha512-wiKVXftVrXcjwz0FpshD6P4WW3CNk/4cLH15aaqRjM+J0BigDeH9CczlpVc7jXdn+c8plHIRz0t5tqlUud7dIQ==", + "requires": { + "bootstrap-datepicker": "^1.9.0" + } + }, + "@abp/bootstrap-daterangepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.3.tgz", + "integrity": "sha512-ChdnXMzHvg+HwrUtw2z6KuqRTqHVOq8qEBai+IPW6PykJSML+tZKzer3jzDIzyHq68OIqom3n3xL0XpcniKMew==", + "requires": { + "bootstrap-daterangepicker": "^3.1.0" + } + }, + "@abp/core": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-7.2.3.tgz", + "integrity": "sha512-UyKBWwXbKCzKZwV2YJPgP3v2naDFsfJzV+KEHpdgLdPZyrpBhp+bQ80VNVe2HHrD/bLfhM4fu9pCXw6RYZKnvA==", + "requires": { + "@abp/utils": "~7.2.3" + } + }, + "@abp/datatables.net": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-7.2.3.tgz", + "integrity": "sha512-g+LmRMg4Sk34iU/MN4RpgC/yd8NVEjhVWg/kT+nuWunsnwLHkcfK59KPGXn9ZLktL4VqQYj2WeXbDv8TEbOObg==", + "requires": { + "@abp/jquery": "~7.2.3", + "datatables.net": "^1.11.4" + } + }, + "@abp/datatables.net-bs5": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.3.tgz", + "integrity": "sha512-TmXTkIX+Vb1O/fER5JeRlWIOZLoSXG4QD3F0ZbebrjgS9k7oSu9igR/VhXBs1m1lvOqcNKv7Y4LTNRAMw+Mi0A==", + "requires": { + "@abp/datatables.net": "~7.2.3", + "datatables.net-bs5": "^1.11.4" + } + }, + "@abp/font-awesome": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-7.2.3.tgz", + "integrity": "sha512-+4QRhfU08t1MYkmzTPX0B+p+SZQtOqtlDafzeDm5X6fbOlxV1hi97eRWtLtLgLjodjJWztpECWcsTUTgDhExwQ==", + "requires": { + "@abp/core": "~7.2.3", + "@fortawesome/fontawesome-free": "^5.15.4" + } + }, + "@abp/jquery": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-7.2.3.tgz", + "integrity": "sha512-r/p3D2QlV57YvrGJsLfTuIJGwLSSi5AVFtkmgKyfpyXYOCNb+TVF9sEZOZnoZebX6cT0JRvtUfZ0dk6ZBebAzg==", + "requires": { + "@abp/core": "~7.2.3", + "jquery": "~3.6.0" + } + }, + "@abp/jquery-form": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-7.2.3.tgz", + "integrity": "sha512-ucdGIZ0sxefakGRei9BJvDuoN16fKsYfpOT70/udw3k7uC3gFJD0AvAlEOEZPsFZhpNoqUKexNMym4lZovqBkg==", + "requires": { + "@abp/jquery": "~7.2.3", + "jquery-form": "^4.3.0" + } + }, + "@abp/jquery-validation": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-7.2.3.tgz", + "integrity": "sha512-drpE5mXErHQPk/4KChsj3zwNCA4GqNlYquTtHNv9/t5S/NuGqFAkchPV6mRYaiQypcxCndZQNSUEqnWxbuMY0g==", + "requires": { + "@abp/jquery": "~7.2.3", + "jquery-validation": "^1.19.3" + } + }, + "@abp/jquery-validation-unobtrusive": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.3.tgz", + "integrity": "sha512-Hcf1sqAFRIAYKqvN1pZGed+lazzY1nztvcmQlOOgUquiXRS3QjI3dIvxWw5nekJwUPqMpSfuC1GErQo0KpE1fw==", + "requires": { + "@abp/jquery-validation": "~7.2.3", + "jquery-validation-unobtrusive": "^3.2.12" + } + }, + "@abp/lodash": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-7.2.3.tgz", + "integrity": "sha512-5KuXPPpa2mkTlUYPR83bUTJUSSGoq9/kFSf9fYC0Wk2mFFeG4mRK6mXwcyHTfYshQe2qxuncxZsJ+4j5uQN9PA==", + "requires": { + "@abp/core": "~7.2.3", + "lodash": "^4.17.21" + } + }, + "@abp/luxon": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-7.2.3.tgz", + "integrity": "sha512-Y3IT1GbyuNSAzfpGnc5uzjz3Z/nDRUpYiZhoX0XeoQlJ+GyVT/+dytsZbuQBLgEWmQJhk9zxdcITXFT5vrWDcw==", + "requires": { + "@abp/core": "~7.2.3", + "luxon": "^2.3.0" + } + }, + "@abp/malihu-custom-scrollbar-plugin": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.3.tgz", + "integrity": "sha512-wq9eBrw/bY3wb50v5zuL0qOcVLOT86XN2ZJQj69O/bi2+0WNdLRCqMHhY0kaafb7UIBAlKChKA/xeICwCZxn+w==", + "requires": { + "@abp/core": "~7.2.3", + "malihu-custom-scrollbar-plugin": "^3.1.5" + } + }, + "@abp/moment": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-7.2.3.tgz", + "integrity": "sha512-pXsOzSom9RZHRGWuVaLIVzSkPayIcWMMmgSyo8T3gtZzZG/QJbpBWT+pug0X8pmV8So4d9E0LjacmODBKLM30A==", + "requires": { + "moment": "^2.9.0" + } + }, + "@abp/select2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-7.2.3.tgz", + "integrity": "sha512-Cdzl467UftB421W+l8uikGr2NlOsHwxKDxt5yPrF03LEec1MBys5y7UPUV1TEO6l0xwAVi4mW8dXaawyIOSjUA==", + "requires": { + "@abp/core": "~7.2.3", + "select2": "^4.0.13" + } + }, + "@abp/sweetalert2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-7.2.3.tgz", + "integrity": "sha512-KHZD1YRMN6Z4JxPfXuEwocubooux8nKq6sPNG6RKg+rWpp23Fp8nX/ZngJNywVXSRqzrdEvUAM+92JG7zMwKXw==", + "requires": { + "@abp/core": "~7.2.3", + "sweetalert2": "^11.3.6" + } + }, + "@abp/timeago": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-7.2.3.tgz", + "integrity": "sha512-7eiibNXJWBGpQnitd/i8aWUNHOkcsuq8fAwBLJWvG8Whhh1nmBEjng0pGhheMqo0xoydefWi1K2uZDg99tKPeQ==", + "requires": { + "@abp/jquery": "~7.2.3", + "timeago": "^1.6.7" + } + }, + "@abp/toastr": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-7.2.3.tgz", + "integrity": "sha512-2zNMQE6ArRULP6xl+M66/EY83ZrXfNY+sNHUkmZH4uqfGhqR/ijKIQm1quxCLDmUcAjRr1kzu8BCc98pc9tfFw==", + "requires": { + "@abp/jquery": "~7.2.3", + "toastr": "^2.1.4" + } + }, + "@abp/utils": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-7.2.3.tgz", + "integrity": "sha512-hejxDJhSI9Kor4mS9c/JHHQrW/wLXC/XMOJMUcBVkX/5IQd9GU9EW63oalNQyVA3gz3h5obnb0Qcfdv65wc5Pg==", + "requires": { + "just-compare": "^1.3.0" + } + }, + "@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==" + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "requires": { + "async-done": "^1.2.2" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "requires": {} + }, + "bootstrap-datepicker": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz", + "integrity": "sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg==", + "requires": { + "jquery": ">=3.4.0 <4.0.0" + } + }, + "bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "requires": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" + }, + "copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "requires": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "requires": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + } + }, + "datatables.net": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz", + "integrity": "sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g==", + "requires": { + "jquery": "1.8 - 4" + } + }, + "datatables.net-bs5": { + "version": "1.13.11", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.13.11.tgz", + "integrity": "sha512-NQO15TjXo4xvZ0jReC4Uf86ezbQzPQPdaN2YncrCPhzQ6fx+2WD7DUq4ur0HbAcYHo94/M+MtD5Ch29To7Rj3Q==", + "requires": { + "datatables.net": "1.13.11", + "jquery": "1.8 - 4" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==" + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "requires": { + "d": "^1.0.2", + "ext": "^1.7.0" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + } + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", + "integrity": "sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "requires": { + "sparkles": "^1.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "requires": { + "ansi-wrap": "^0.1.0" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "requires": { + "glogg": "^1.0.0" + } + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "requires": { + "hasown": "^2.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "jquery-form": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", + "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", + "requires": { + "jquery": ">=1.7.2" + } + }, + "jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" + }, + "jquery-validation": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.1.tgz", + "integrity": "sha512-rbBy36Xe5WBCO8OLdZLhPhVjb70KayuoX3WYRNwNpy9TXuUadhNTcaipr6jEIacn+V4jgXB2xUJl6hYzJxr5jw==", + "requires": {} + }, + "jquery-validation-unobtrusive": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", + "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", + "requires": { + "jquery": "^3.5.1", + "jquery-validation": ">=1.16" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "just-compare": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.5.1.tgz", + "integrity": "sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw==" + }, + "just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==" + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ==", + "requires": { + "jquery-mousewheel": ">=3.0.6" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "dependencies": { + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "requires": { + "fill-range": "^7.1.1" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" + }, + "nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "requires": { + "ret": "~0.1.10" + } + }, + "select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "sweetalert2": { + "version": "11.12.2", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.12.2.tgz", + "integrity": "sha512-Rwv5iRYlApkDSXeX22aLhhWMlWPzFxnNBVLZajkFKYhaVEfQkMOPQQRhBtSFxKBPCoko9U3SccWm9hI4o3Id0Q==" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==" + }, + "timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "requires": { + "jquery": ">=1.5.0 <4.0" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "requires": { + "through2": "^2.0.3" + } + }, + "toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "requires": { + "jquery": ">=1.12.0" + } + }, + "type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==" + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package.json b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package.json new file mode 100644 index 000000000..c40a4c68e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/package.json @@ -0,0 +1,8 @@ +{ + "version": "1.0.0", + "name": "my-app", + "private": true, + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.3.1" + } +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/web.config b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/web.config new file mode 100644 index 000000000..a6c33dbc1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/web.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/global-styles.css b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/global-styles.css new file mode 100644 index 000000000..74db4bd54 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/global-styles.css @@ -0,0 +1,6 @@ +/* Your Global Styles */ + +:root .lpx-brand-logo { + --lpx-logo: url('/images/logo/leptonx/logo-light.png'); + --lpx-logo-icon: url('/images/logo/leptonx/logo-light-thumbnail.png'); +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png b/InterFaceContorl/Dy_Exchange/src/Dy_Exchange.Web/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..621596bb5c1a301136d9ee2af5ffe1391a4af776 GIT binary patch literal 17592 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 + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestBase.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestBase.cs new file mode 100644 index 000000000..64cf2a1ee --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestBase.cs @@ -0,0 +1,6 @@ +namespace Dy_Exchange; + +public abstract class Dy_ExchangeApplicationTestBase : Dy_ExchangeTestBase +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestModule.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestModule.cs new file mode 100644 index 000000000..56db262b7 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Dy_ExchangeApplicationTestModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Modularity; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeApplicationModule), + typeof(Dy_ExchangeDomainTestModule) + )] +public class Dy_ExchangeApplicationTestModule : AbpModule +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Samples/SampleAppServiceTests.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Samples/SampleAppServiceTests.cs new file mode 100644 index 000000000..2eb202cc1 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Application.Tests/Samples/SampleAppServiceTests.cs @@ -0,0 +1,32 @@ +using Shouldly; +using System.Threading.Tasks; +using Volo.Abp.Identity; +using Xunit; + +namespace Dy_Exchange.Samples; + +/* This is just an example test class. + * Normally, you don't test code of the modules you are using + * (like IIdentityUserAppService here). + * Only test your own application services. + */ +public class SampleAppServiceTests : Dy_ExchangeApplicationTestBase +{ + private readonly IIdentityUserAppService _userAppService; + + public SampleAppServiceTests() + { + _userAppService = GetRequiredService(); + } + + [Fact] + public async Task Initial_Data_Should_Contain_Admin_User() + { + //Act + var result = await _userAppService.GetListAsync(new GetIdentityUsersInput()); + + //Assert + result.TotalCount.ShouldBeGreaterThan(0); + result.Items.ShouldContain(u => u.UserName == "admin"); + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_Exchange.Domain.Tests.csproj b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_Exchange.Domain.Tests.csproj new file mode 100644 index 000000000..238bac0bc --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_Exchange.Domain.Tests.csproj @@ -0,0 +1,19 @@ + + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestBase.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestBase.cs new file mode 100644 index 000000000..104793fbd --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestBase.cs @@ -0,0 +1,6 @@ +namespace Dy_Exchange; + +public abstract class Dy_ExchangeDomainTestBase : Dy_ExchangeTestBase +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestModule.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestModule.cs new file mode 100644 index 000000000..b200c59fb --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Dy_ExchangeDomainTestModule.cs @@ -0,0 +1,12 @@ +using Dy_Exchange.EntityFrameworkCore; +using Volo.Abp.Modularity; + +namespace Dy_Exchange; + +[DependsOn( + typeof(Dy_ExchangeEntityFrameworkCoreTestModule) + )] +public class Dy_ExchangeDomainTestModule : AbpModule +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Samples/SampleDomainTests.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Samples/SampleDomainTests.cs new file mode 100644 index 000000000..dafceeb30 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.Domain.Tests/Samples/SampleDomainTests.cs @@ -0,0 +1,44 @@ +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Identity; +using Xunit; + +namespace Dy_Exchange.Samples; + +/* This is just an example test class. + * Normally, you don't test code of the modules you are using + * (like IdentityUserManager here). + * Only test your own domain services. + */ +public class SampleDomainTests : Dy_ExchangeDomainTestBase +{ + private readonly IIdentityUserRepository _identityUserRepository; + private readonly IdentityUserManager _identityUserManager; + + public SampleDomainTests() + { + _identityUserRepository = GetRequiredService(); + _identityUserManager = GetRequiredService(); + } + + [Fact] + public async Task Should_Set_Email_Of_A_User() + { + IdentityUser adminUser; + + /* Need to manually start Unit Of Work because + * FirstOrDefaultAsync should be executed while db connection / context is available. + */ + await WithUnitOfWorkAsync(async () => + { + adminUser = await _identityUserRepository + .FindByNormalizedUserNameAsync("ADMIN"); + + await _identityUserManager.SetEmailAsync(adminUser, "newemail@abp.io"); + await _identityUserRepository.UpdateAsync(adminUser); + }); + + adminUser = await _identityUserRepository.FindByNormalizedUserNameAsync("ADMIN"); + adminUser.Email.ShouldBe("newemail@abp.io"); + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/Dy_Exchange.EntityFrameworkCore.Tests.csproj b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/Dy_Exchange.EntityFrameworkCore.Tests.csproj new file mode 100644 index 000000000..ce29ff870 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/Dy_Exchange.EntityFrameworkCore.Tests.csproj @@ -0,0 +1,21 @@ + + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestBase.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestBase.cs new file mode 100644 index 000000000..72d3c1ffb --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestBase.cs @@ -0,0 +1,8 @@ +using Volo.Abp; + +namespace Dy_Exchange.EntityFrameworkCore; + +public abstract class Dy_ExchangeEntityFrameworkCoreTestBase : Dy_ExchangeTestBase +{ + +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestModule.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestModule.cs new file mode 100644 index 000000000..d7bdcf11e --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Dy_ExchangeEntityFrameworkCoreTestModule.cs @@ -0,0 +1,76 @@ +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Sqlite; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace Dy_Exchange.EntityFrameworkCore; + +[DependsOn( + typeof(Dy_ExchangeEntityFrameworkCoreModule), + typeof(Dy_ExchangeTestBaseModule), + typeof(AbpEntityFrameworkCoreSqliteModule) + )] +public class Dy_ExchangeEntityFrameworkCoreTestModule : AbpModule +{ + private SqliteConnection? _sqliteConnection; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.SaveStaticFeaturesToDatabase = false; + options.IsDynamicFeatureStoreEnabled = false; + }); + Configure(options => + { + options.SaveStaticPermissionsToDatabase = false; + options.IsDynamicPermissionStoreEnabled = false; + }); + context.Services.AddAlwaysDisableUnitOfWorkTransaction(); + + ConfigureInMemorySqlite(context.Services); + } + + private void ConfigureInMemorySqlite(IServiceCollection services) + { + _sqliteConnection = CreateDatabaseAndGetConnection(); + + services.Configure(options => + { + options.Configure(context => + { + context.DbContextOptions.UseSqlite(_sqliteConnection); + }); + }); + } + + public override void OnApplicationShutdown(ApplicationShutdownContext context) + { + _sqliteConnection?.Dispose(); + } + + private static SqliteConnection CreateDatabaseAndGetConnection() + { + var connection = new SqliteConnection("Data Source=:memory:"); + connection.Open(); + + var options = new DbContextOptionsBuilder() + .UseSqlite(connection) + .Options; + + using (var context = new Dy_ExchangeDbContext(options)) + { + context.GetService().CreateTables(); + } + + return connection; + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs new file mode 100644 index 000000000..d0d0f16e6 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.EntityFrameworkCore.Tests/EntityFrameworkCore/Samples/SampleRepositoryTests.cs @@ -0,0 +1,43 @@ +using Microsoft.EntityFrameworkCore; +using Shouldly; +using System; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Identity; +using Xunit; + +namespace Dy_Exchange.EntityFrameworkCore.Samples; + +/* This is just an example test class. + * Normally, you don't test ABP framework code + * (like default AppUser repository IRepository here). + * Only test your custom repository methods. + */ +public class SampleRepositoryTests : Dy_ExchangeEntityFrameworkCoreTestBase +{ + private readonly IRepository _appUserRepository; + + public SampleRepositoryTests() + { + _appUserRepository = GetRequiredService>(); + } + + [Fact] + public async Task Should_Query_AppUser() + { + /* Need to manually start Unit Of Work because + * FirstOrDefaultAsync should be executed while db connection / context is available. + */ + await WithUnitOfWorkAsync(async () => + { + //Act + var adminUser = await (await _appUserRepository.GetQueryableAsync()) + .Where(u => u.UserName == "admin") + .FirstOrDefaultAsync(); + + //Assert + adminUser.ShouldNotBeNull(); + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs new file mode 100644 index 000000000..a48ead3da --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs @@ -0,0 +1,25 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Account; +using Volo.Abp.DependencyInjection; + +namespace Dy_Exchange.HttpApi.Client.ConsoleTestApp; + +public class ClientDemoService : ITransientDependency +{ + private readonly IProfileAppService _profileAppService; + + public ClientDemoService(IProfileAppService profileAppService) + { + _profileAppService = profileAppService; + } + + public async Task RunAsync() + { + var output = await _profileAppService.GetAsync(); + Console.WriteLine($"UserName : {output.UserName}"); + Console.WriteLine($"Email : {output.Email}"); + Console.WriteLine($"Name : {output.Name}"); + Console.WriteLine($"Surname : {output.Surname}"); + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs new file mode 100644 index 000000000..f904abc0d --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/ConsoleTestAppHostedService.cs @@ -0,0 +1,40 @@ +using Microsoft.Extensions.Hosting; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; + +namespace Dy_Exchange.HttpApi.Client.ConsoleTestApp; + +public class ConsoleTestAppHostedService : IHostedService +{ + private readonly IConfiguration _configuration; + + public ConsoleTestAppHostedService(IConfiguration configuration) + { + _configuration = configuration; + } + + public async Task StartAsync(CancellationToken cancellationToken) + { + using (var application = await AbpApplicationFactory.CreateAsync(options => + { + options.Services.ReplaceConfiguration(_configuration); + options.UseAutofac(); + })) + { + await application.InitializeAsync(); + + var demo = application.ServiceProvider.GetRequiredService(); + await demo.RunAsync(); + + await application.ShutdownAsync(); + } + } + + public Task StopAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_Exchange.HttpApi.Client.ConsoleTestApp.csproj b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_Exchange.HttpApi.Client.ConsoleTestApp.csproj new file mode 100644 index 000000000..832f99d65 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_Exchange.HttpApi.Client.ConsoleTestApp.csproj @@ -0,0 +1,33 @@ + + + + Exe + net7.0 + enable + + + + + + PreserveNewest + Always + + + + PreserveNewest + Always + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_ExchangeConsoleApiClientModule.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_ExchangeConsoleApiClientModule.cs new file mode 100644 index 000000000..0cac30b9a --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Dy_ExchangeConsoleApiClientModule.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Polly; +using Volo.Abp.Autofac; +using Volo.Abp.Http.Client; +using Volo.Abp.Http.Client.IdentityModel; +using Volo.Abp.Modularity; + +namespace Dy_Exchange.HttpApi.Client.ConsoleTestApp; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(Dy_ExchangeHttpApiClientModule), + typeof(AbpHttpClientIdentityModelModule) + )] +public class Dy_ExchangeConsoleApiClientModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + PreConfigure(options => + { + options.ProxyClientBuildActions.Add((remoteServiceName, clientBuilder) => + { + clientBuilder.AddTransientHttpErrorPolicy( + policyBuilder => policyBuilder.WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(Math.Pow(2, i))) + ); + }); + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Program.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Program.cs new file mode 100644 index 000000000..f86c2dc1f --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/Program.cs @@ -0,0 +1,22 @@ +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + +namespace Dy_Exchange.HttpApi.Client.ConsoleTestApp; + +class Program +{ + static async Task Main(string[] args) + { + await CreateHostBuilder(args).RunConsoleAsync(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .AddAppSettingsSecretsJson() + .ConfigureServices((hostContext, services) => + { + services.AddHostedService(); + }); +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.json b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.json new file mode 100644 index 000000000..cf9436100 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.json @@ -0,0 +1,17 @@ +{ + "RemoteServices": { + "Default": { + "BaseUrl": "https://localhost:44363" + } + }, + "IdentityClients": { + "Default": { + "GrantType": "password", + "ClientId": "Dy_Exchange_App", + "UserName": "admin", + "UserPassword": "1q2w3E*", + "Authority": "https://localhost:44365", + "Scope": "Dy_Exchange" + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.HttpApi.Client.ConsoleTestApp/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_Exchange.TestBase.csproj b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_Exchange.TestBase.csproj new file mode 100644 index 000000000..28ae76946 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_Exchange.TestBase.csproj @@ -0,0 +1,31 @@ + + + + + + net7.0 + enable + Dy_Exchange + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + + + + + + diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBase.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBase.cs new file mode 100644 index 000000000..f68cfe151 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBase.cs @@ -0,0 +1,60 @@ +using System; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Modularity; +using Volo.Abp.Uow; +using Volo.Abp.Testing; + +namespace Dy_Exchange; + +/* All test classes are derived from this class, directly or indirectly. + */ +public abstract class Dy_ExchangeTestBase : AbpIntegratedTest + where TStartupModule : IAbpModule +{ + protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options) + { + options.UseAutofac(); + } + + protected virtual Task WithUnitOfWorkAsync(Func func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + await action(); + + await uow.CompleteAsync(); + } + } + } + + protected virtual Task WithUnitOfWorkAsync(Func> func) + { + return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func); + } + + protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func) + { + using (var scope = ServiceProvider.CreateScope()) + { + var uowManager = scope.ServiceProvider.GetRequiredService(); + + using (var uow = uowManager.Begin(options)) + { + var result = await func(); + await uow.CompleteAsync(); + return result; + } + } + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBaseModule.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBaseModule.cs new file mode 100644 index 000000000..b60d4db34 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestBaseModule.cs @@ -0,0 +1,52 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp; +using Volo.Abp.Authorization; +using Volo.Abp.Autofac; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Data; +using Volo.Abp.Modularity; +using Volo.Abp.Threading; + +namespace Dy_Exchange; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AbpTestBaseModule), + typeof(AbpAuthorizationModule), + typeof(Dy_ExchangeDomainModule) + )] +public class Dy_ExchangeTestBaseModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + + context.Services.AddAlwaysAllowAuthorization(); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + SeedTestData(context); + } + + private static void SeedTestData(ApplicationInitializationContext context) + { + AsyncHelper.RunSync(async () => + { + using (var scope = context.ServiceProvider.CreateScope()) + { + await scope.ServiceProvider + .GetRequiredService() + .SeedAsync(); + } + }); + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestDataSeedContributor.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestDataSeedContributor.cs new file mode 100644 index 000000000..ae0695027 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Dy_ExchangeTestDataSeedContributor.cs @@ -0,0 +1,15 @@ +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; + +namespace Dy_Exchange; + +public class Dy_ExchangeTestDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + public Task SeedAsync(DataSeedContext context) + { + /* Seed additional test data... */ + + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Security/FakeCurrentPrincipalAccessor.cs b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Security/FakeCurrentPrincipalAccessor.cs new file mode 100644 index 000000000..3e48ad1e3 --- /dev/null +++ b/InterFaceContorl/Dy_Exchange/test/Dy_Exchange.TestBase/Security/FakeCurrentPrincipalAccessor.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Security.Claims; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; + +namespace Dy_Exchange.Security; + +[Dependency(ReplaceServices = true)] +public class FakeCurrentPrincipalAccessor : ThreadCurrentPrincipalAccessor +{ + protected override ClaimsPrincipal GetClaimsPrincipal() + { + return GetPrincipal(); + } + + private ClaimsPrincipal GetPrincipal() + { + return new ClaimsPrincipal(new ClaimsIdentity(new List + { + new Claim(AbpClaimTypes.UserId, "2e701e62-0953-4dd3-910b-dc6cc93ccb0d"), + new Claim(AbpClaimTypes.UserName, "admin"), + new Claim(AbpClaimTypes.Email, "admin@abp.io") + })); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitattributes b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitattributes new file mode 100644 index 000000000..c941e5266 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitattributes @@ -0,0 +1 @@ +**/wwwroot/libs/** linguist-vendored diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitignore b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitignore new file mode 100644 index 000000000..f64cf189c --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.gitignore @@ -0,0 +1,265 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# AuthSiteCenter +src/WinIn.FasterZ.AuthSiteCenter.Web/Logs/* +src/WinIn.FasterZ.AuthSiteCenter.Web.Host/Logs/* +src/WinIn.FasterZ.AuthSiteCenter.AuthServer/Logs/* +src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Host/Logs/* +src/WinIn.FasterZ.AuthSiteCenter.HttpApi.HostWithIds/Logs/* +src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/Logs/* +src/WinIn.FasterZ.AuthSiteCenter.Blazor.Server/Logs/* +src/WinIn.FasterZ.AuthSiteCenter.Blazor.Server.Tiered/Logs/* + +# Use abp install-libs to restore. +**/wwwroot/libs/* diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.prettierrc b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.prettierrc new file mode 100644 index 000000000..56af76bd9 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "useTabs": false, + "tabWidth": 4 +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/NuGet.Config b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/NuGet.Config new file mode 100644 index 000000000..bdc451971 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/NuGet.Config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln new file mode 100644 index 000000000..0f294779f --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln @@ -0,0 +1,97 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33815.320 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.Domain", "src\WinIn.FasterZ.AuthSiteCenter.Domain\WinIn.FasterZ.AuthSiteCenter.Domain.csproj", "{554AD327-6DBA-4F8F-96F8-81CE7A0C863F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.Application", "src\WinIn.FasterZ.AuthSiteCenter.Application\WinIn.FasterZ.AuthSiteCenter.Application.csproj", "{1A94A50E-06DC-43C1-80B5-B662820EC3EB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore", "src\WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore\WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore.csproj", "{C956DD76-69C8-4A9C-83EA-D17DF83340FD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{CA9AC87F-097E-4F15-8393-4BC07735A5B0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.Domain.Shared", "src\WinIn.FasterZ.AuthSiteCenter.Domain.Shared\WinIn.FasterZ.AuthSiteCenter.Domain.Shared.csproj", "{42F719ED-8413-4895-B5B4-5AB56079BC66}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.Application.Contracts", "src\WinIn.FasterZ.AuthSiteCenter.Application.Contracts\WinIn.FasterZ.AuthSiteCenter.Application.Contracts.csproj", "{520659C8-C734-4298-A3DA-B539DB9DFC0B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.HttpApi", "src\WinIn.FasterZ.AuthSiteCenter.HttpApi\WinIn.FasterZ.AuthSiteCenter.HttpApi.csproj", "{4164BDF7-F527-4E85-9CE6-E3C2D7426A27}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.HttpApi.Client", "src\WinIn.FasterZ.AuthSiteCenter.HttpApi.Client\WinIn.FasterZ.AuthSiteCenter.HttpApi.Client.csproj", "{3B5A0094-670D-4BB1-BFDD-61B88A8773DC}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.DbMigrator", "src\WinIn.FasterZ.AuthSiteCenter.DbMigrator\WinIn.FasterZ.AuthSiteCenter.DbMigrator.csproj", "{AA94D832-1CCC-4715-95A9-A483F23A1A5D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{E2A25F6E-9C96-49FD-AFB3-FE151228668E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{E8A043DC-0FC5-4D47-B3FC-2E434C74FFC4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinIn.FasterZ.AuthSiteCenter.Web", "src\WinIn.FasterZ.AuthSiteCenter.Web\WinIn.FasterZ.AuthSiteCenter.Web.csproj", "{E167EE4C-2401-42D5-B48F-9B45443DC9AA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dy_Exchange.Application.Contracts", "..\Dy_Exchange\src\Dy_Exchange.Application.Contracts\Dy_Exchange.Application.Contracts.csproj", "{CC61FF5F-431F-4A49-AC5B-BF74626C338A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F}.Release|Any CPU.Build.0 = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A94A50E-06DC-43C1-80B5-B662820EC3EB}.Release|Any CPU.Build.0 = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C956DD76-69C8-4A9C-83EA-D17DF83340FD}.Release|Any CPU.Build.0 = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.ActiveCfg = Release|Any CPU + {42F719ED-8413-4895-B5B4-5AB56079BC66}.Release|Any CPU.Build.0 = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {520659C8-C734-4298-A3DA-B539DB9DFC0B}.Release|Any CPU.Build.0 = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27}.Release|Any CPU.Build.0 = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC}.Release|Any CPU.Build.0 = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA94D832-1CCC-4715-95A9-A483F23A1A5D}.Release|Any CPU.Build.0 = Release|Any CPU + {E167EE4C-2401-42D5-B48F-9B45443DC9AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E167EE4C-2401-42D5-B48F-9B45443DC9AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E167EE4C-2401-42D5-B48F-9B45443DC9AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E167EE4C-2401-42D5-B48F-9B45443DC9AA}.Release|Any CPU.Build.0 = Release|Any CPU + {CC61FF5F-431F-4A49-AC5B-BF74626C338A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC61FF5F-431F-4A49-AC5B-BF74626C338A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC61FF5F-431F-4A49-AC5B-BF74626C338A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC61FF5F-431F-4A49-AC5B-BF74626C338A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {554AD327-6DBA-4F8F-96F8-81CE7A0C863F} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {1A94A50E-06DC-43C1-80B5-B662820EC3EB} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {C956DD76-69C8-4A9C-83EA-D17DF83340FD} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {42F719ED-8413-4895-B5B4-5AB56079BC66} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {520659C8-C734-4298-A3DA-B539DB9DFC0B} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {4164BDF7-F527-4E85-9CE6-E3C2D7426A27} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {3B5A0094-670D-4BB1-BFDD-61B88A8773DC} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {AA94D832-1CCC-4715-95A9-A483F23A1A5D} = {CA9AC87F-097E-4F15-8393-4BC07735A5B0} + {E167EE4C-2401-42D5-B48F-9B45443DC9AA} = {E8A043DC-0FC5-4D47-B3FC-2E434C74FFC4} + {CC61FF5F-431F-4A49-AC5B-BF74626C338A} = {E2A25F6E-9C96-49FD-AFB3-FE151228668E} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F} + EndGlobalSection +EndGlobal diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln.DotSettings b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln.DotSettings new file mode 100644 index 000000000..cb0b2c919 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/WinIn.FasterZ.AuthSiteCenter.sln.DotSettings @@ -0,0 +1,23 @@ + + True + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + WARNING + Required + Required + Required + Required + False + True + False + False + True + False + False + SQL + \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/common.props b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/common.props new file mode 100644 index 000000000..7e89c3a06 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/common.props @@ -0,0 +1,19 @@ + + + latest + 1.0.0 + $(NoWarn);CS1591 + app + + + + + $(NoWarn);0436 + + + + + + + + \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterApplicationContractsModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterApplicationContractsModule.cs new file mode 100644 index 000000000..35cb5fdc1 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterApplicationContractsModule.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace WinIn.FasterZ.AuthSiteCenter; + +[DependsOn( + typeof(AuthSiteCenterDomainSharedModule), + typeof(AbpAccountApplicationContractsModule), + typeof(AbpFeatureManagementApplicationContractsModule), + typeof(AbpIdentityApplicationContractsModule), + typeof(AbpPermissionManagementApplicationContractsModule), + typeof(AbpSettingManagementApplicationContractsModule), + typeof(AbpTenantManagementApplicationContractsModule), + typeof(AbpObjectExtendingModule) +)] +public class AuthSiteCenterApplicationContractsModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + AuthSiteCenterDtoExtensions.Configure(); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterDtoExtensions.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterDtoExtensions.cs new file mode 100644 index 000000000..fbb4d61ce --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/AuthSiteCenterDtoExtensions.cs @@ -0,0 +1,28 @@ +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace WinIn.FasterZ.AuthSiteCenter; + +public static class AuthSiteCenterDtoExtensions +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + /* You can add extension properties to DTOs + * defined in the depended modules. + * + * Example: + * + * ObjectExtensionManager.Instance + * .AddOrUpdateProperty("Title"); + * + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Object-Extensions + */ + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissionDefinitionProvider.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissionDefinitionProvider.cs new file mode 100644 index 000000000..9b3c90132 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissionDefinitionProvider.cs @@ -0,0 +1,20 @@ +using WinIn.FasterZ.AuthSiteCenter.Localization; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Localization; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +public class AuthSiteCenterPermissionDefinitionProvider : PermissionDefinitionProvider +{ + public override void Define(IPermissionDefinitionContext context) + { + var myGroup = context.AddGroup(AuthSiteCenterPermissions.GroupName); + //Define your own permissions here. Example: + //myGroup.AddPermission(AuthSiteCenterPermissions.MyPermission1, L("Permission:MyPermission1")); + } + + private static LocalizableString L(string name) + { + return LocalizableString.Create(name); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissions.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissions.cs new file mode 100644 index 000000000..7f278879e --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/Permissions/AuthSiteCenterPermissions.cs @@ -0,0 +1,9 @@ +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +public static class AuthSiteCenterPermissions +{ + public const string GroupName = "AuthSiteCenter"; + + //Add your own permission names. Example: + //public const string MyPermission1 = GroupName + ".MyPermission1"; +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/WinIn.FasterZ.AuthSiteCenter.Application.Contracts.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/WinIn.FasterZ.AuthSiteCenter.Application.Contracts.csproj new file mode 100644 index 000000000..46277ff0d --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application.Contracts/WinIn.FasterZ.AuthSiteCenter.Application.Contracts.csproj @@ -0,0 +1,25 @@ + + + + + + netstandard2.0;netstandard2.1;net7.0 + enable + WinIn.FasterZ.AuthSiteCenter + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterAppService.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterAppService.cs new file mode 100644 index 000000000..439c03678 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterAppService.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WinIn.FasterZ.AuthSiteCenter.Localization; +using Volo.Abp.Application.Services; + +namespace WinIn.FasterZ.AuthSiteCenter; + +/* Inherit your application services from this class. + */ +public abstract class AuthSiteCenterAppService : ApplicationService +{ + protected AuthSiteCenterAppService() + { + LocalizationResource = typeof(AuthSiteCenterResource); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationAutoMapperProfile.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationAutoMapperProfile.cs new file mode 100644 index 000000000..038cd9d6b --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationAutoMapperProfile.cs @@ -0,0 +1,13 @@ +using AutoMapper; + +namespace WinIn.FasterZ.AuthSiteCenter; + +public class AuthSiteCenterApplicationAutoMapperProfile : Profile +{ + public AuthSiteCenterApplicationAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationModule.cs new file mode 100644 index 000000000..e289bbb0b --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/AuthSiteCenterApplicationModule.cs @@ -0,0 +1,31 @@ +using Volo.Abp.Account; +using Volo.Abp.AutoMapper; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace WinIn.FasterZ.AuthSiteCenter; + +[DependsOn( + typeof(AuthSiteCenterDomainModule), + typeof(AbpAccountApplicationModule), + typeof(AuthSiteCenterApplicationContractsModule), + typeof(AbpIdentityApplicationModule), + typeof(AbpPermissionManagementApplicationModule), + typeof(AbpTenantManagementApplicationModule), + typeof(AbpFeatureManagementApplicationModule), + typeof(AbpSettingManagementApplicationModule) + )] +public class AuthSiteCenterApplicationModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.AddMaps(); + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/AuthenticationFeatures.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/AuthenticationFeatures.cs new file mode 100644 index 000000000..c0c705c20 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/AuthenticationFeatures.cs @@ -0,0 +1,41 @@ +using System.Security.Claims; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Http.Features.Authentication; +using IAuthenticationHandler = Microsoft.AspNetCore.Http.Features.Authentication.IAuthenticationHandler; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +///

+/// Keeps the User and AuthenticationResult consistent with each other +/// +internal sealed class AuthenticationFeatures : + IAuthenticateResultFeature, + IHttpAuthenticationFeature +{ + private ClaimsPrincipal _user; + private AuthenticateResult _result; + + public AuthenticationFeatures(AuthenticateResult result) => AuthenticateResult = result; + + public AuthenticateResult AuthenticateResult + { + get => _result; + set + { + _result = value; + _user = _result?.Principal; + } + } + + public ClaimsPrincipal User + { + get => _user; + set + { + _user = value; + _result = null; + } + } + + public IAuthenticationHandler Handler { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/IAuthenticateResultFeature.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/IAuthenticateResultFeature.cs new file mode 100644 index 000000000..30f6b3235 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/IAuthenticateResultFeature.cs @@ -0,0 +1,15 @@ +using Microsoft.AspNetCore.Authentication; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +/// +/// Used to capture the from the authorization middleware. +/// +public interface IAuthenticateResultFeature +{ + /// + /// The from the authorization middleware. + /// Set to null if the property is set after the authorization middleware. + /// + AuthenticateResult? AuthenticateResult { get; set; } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionChecker.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionChecker.cs new file mode 100644 index 000000000..48e329d17 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionChecker.cs @@ -0,0 +1,168 @@ +using System.Collections.Generic; +using System.Linq; +using System.Security.Claims; +using System.Security.Principal; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.DependencyInjection; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Security.Claims; +using Volo.Abp.SimpleStateChecking; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +public class PermissionChecker : IPermissionChecker, ITransientDependency +{ + protected IPermissionDefinitionManager PermissionDefinitionManager { get; } + protected ICurrentPrincipalAccessor PrincipalAccessor { get; } + protected ICurrentTenant CurrentTenant { get; } + protected IPermissionValueProviderManager PermissionValueProviderManager { get; } + protected ISimpleStateCheckerManager StateCheckerManager { get; } + + public PermissionChecker( + ICurrentPrincipalAccessor principalAccessor, + IPermissionDefinitionManager permissionDefinitionManager, + ICurrentTenant currentTenant, + IPermissionValueProviderManager permissionValueProviderManager, + ISimpleStateCheckerManager stateCheckerManager) + { + PrincipalAccessor = principalAccessor; + PermissionDefinitionManager = permissionDefinitionManager; + CurrentTenant = currentTenant; + PermissionValueProviderManager = permissionValueProviderManager; + StateCheckerManager = stateCheckerManager; + } + + public virtual async Task IsGrantedAsync(string name) + { + return await IsGrantedAsync(PrincipalAccessor.Principal, name); + } + + public virtual async Task IsGrantedAsync( + ClaimsPrincipal? claimsPrincipal, + string name) + { + Check.NotNull(name, nameof(name)); + + var permission = await PermissionDefinitionManager.GetOrNullAsync(name); + if (permission == null) + { + return false; + } + + if (!permission.IsEnabled) + { + return false; + } + + if (!await StateCheckerManager.IsEnabledAsync(permission)) + { + return false; + } + + var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() + ?? CurrentTenant.GetMultiTenancySide(); + + if (!permission.MultiTenancySide.HasFlag(multiTenancySide)) + { + return false; + } + + var isGranted = false; + var context = new PermissionValueCheckContext(permission, claimsPrincipal); + foreach (var provider in PermissionValueProviderManager.ValueProviders) + { + if (context.Permission.Providers.Any() && + !context.Permission.Providers.Contains(provider.Name)) + { + continue; + } + + var result = await provider.CheckAsync(context); + + if (result == PermissionGrantResult.Granted) + { + isGranted = true; + } + else if (result == PermissionGrantResult.Prohibited) + { + return false; + } + } + + return isGranted; + } + + public async Task IsGrantedAsync(string[] names) + { + return await IsGrantedAsync(PrincipalAccessor.Principal, names); + } + + public async Task IsGrantedAsync(ClaimsPrincipal? claimsPrincipal, string[] names) + { + Check.NotNull(names, nameof(names)); + + var result = new MultiplePermissionGrantResult(); + if (!names.Any()) + { + return result; + } + + var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() ?? + CurrentTenant.GetMultiTenancySide(); + + var permissionDefinitions = new List(); + foreach (var name in names) + { + var permission = await PermissionDefinitionManager.GetOrNullAsync(name); + if (permission == null) + { + result.Result.Add(name, PermissionGrantResult.Prohibited); + continue; + } + + result.Result.Add(name, PermissionGrantResult.Undefined); + + if (permission.IsEnabled && + await StateCheckerManager.IsEnabledAsync(permission) && + permission.MultiTenancySide.HasFlag(multiTenancySide)) + { + permissionDefinitions.Add(permission); + } + } + + foreach (var provider in PermissionValueProviderManager.ValueProviders) + { + var permissions = permissionDefinitions + .Where(x => !x.Providers.Any() || x.Providers.Contains(provider.Name)) + .ToList(); + + if (permissions.IsNullOrEmpty()) + { + break; + } + + var context = new PermissionValuesCheckContext( + permissions, + claimsPrincipal); + + var multipleResult = await provider.CheckAsync(context); + foreach (var grantResult in multipleResult.Result.Where(grantResult => + result.Result.ContainsKey(grantResult.Key) && + result.Result[grantResult.Key] == PermissionGrantResult.Undefined && + grantResult.Value != PermissionGrantResult.Undefined)) + { + result.Result[grantResult.Key] = grantResult.Value; + permissionDefinitions.RemoveAll(x => x.Name == grantResult.Key); + } + + if (result.AllGranted || result.AllProhibited) + { + break; + } + } + + return result; + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionGrantCacheItem.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionGrantCacheItem.cs new file mode 100644 index 000000000..2f7c61a56 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionGrantCacheItem.cs @@ -0,0 +1,34 @@ +using System; +using System.Linq; +using Volo.Abp.Text.Formatting; + +namespace WinIn.FasterZ.InterfaceDash.Permissions; + +[Serializable] +public class PermissionGrantCacheItem +{ + private const string CacheKeyFormat = "pn:{0},pk:{1},n:{2}"; + + public bool IsGranted { get; set; } + + public PermissionGrantCacheItem() + { + + } + + public PermissionGrantCacheItem(bool isGranted) + { + IsGranted = isGranted; + } + + public static string CalculateCacheKey(string name, string providerName, string providerKey) + { + return string.Format(CacheKeyFormat, providerName, providerKey, name); + } + + public static string GetPermissionNameFormCacheKeyOrNull(string cacheKey) + { + var result = FormattedStringValueExtracter.Extract(cacheKey, CacheKeyFormat, true); + return result.IsMatch ? result.Matches.Last().Value : null; + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStore.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStore.cs new file mode 100644 index 000000000..76ad757b6 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStore.cs @@ -0,0 +1,148 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.PermissionManagement; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions +{ + public class PermissionStore : IPermissionStore, ITransientDependency + { + public ILogger Logger { get; set; } + + protected IPermissionGrantRepository PermissionGrantRepository { get; } + + protected IPermissionDefinitionManager PermissionDefinitionManager { get; } + + protected IDistributedCache Cache { get; } + + public PermissionStore(IPermissionGrantRepository permissionGrantRepository, IDistributedCache cache, IPermissionDefinitionManager permissionDefinitionManager) + { + PermissionGrantRepository = permissionGrantRepository; + Cache = cache; + PermissionDefinitionManager = permissionDefinitionManager; + Logger = NullLogger.Instance; + } + + public virtual async Task IsGrantedAsync(string name, string providerName, string providerKey) + { + return (await GetCacheItemAsync(name, providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)).IsGranted; + } + + protected virtual async Task GetCacheItemAsync(string name, string providerName, string providerKey) + { + string cacheKey = CalculateCacheKey(name, providerName, providerKey); + Logger.LogDebug("PermissionStore.GetCacheItemAsync: " + cacheKey); + PermissionGrantCacheItem cacheItem2 = await Cache.GetAsync(cacheKey).ConfigureAwait(continueOnCapturedContext: false); + if (cacheItem2 != null) + { + Logger.LogDebug("Found in the cache: " + cacheKey); + return cacheItem2; + } + Logger.LogDebug("Not found in the cache: " + cacheKey); + cacheItem2 = new PermissionGrantCacheItem(isGranted: false); + await SetCacheItemsAsync(providerName, providerKey, name, cacheItem2).ConfigureAwait(continueOnCapturedContext: false); + return cacheItem2; + } + + protected virtual async Task SetCacheItemsAsync(string providerName, string providerKey, string currentName, PermissionGrantCacheItem currentCacheItem) + { + IReadOnlyList permissions = await PermissionDefinitionManager.GetPermissionsAsync().ConfigureAwait(continueOnCapturedContext: false); + Logger.LogDebug("Getting all granted permissions from the repository for this provider name,key: " + providerName + "," + providerKey); + HashSet hashSet = new HashSet((await PermissionGrantRepository.GetListAsync(providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)).Select((p) => p.Name)); + Logger.LogDebug($"Setting the cache items. Count: {permissions.Count}"); + List> list = new List>(); + foreach (PermissionDefinition item in permissions) + { + bool isGranted = hashSet.Contains(item.Name); + list.Add(new KeyValuePair(CalculateCacheKey(item.Name, providerName, providerKey), new PermissionGrantCacheItem(isGranted))); + if (item.Name == currentName) + { + currentCacheItem.IsGranted = isGranted; + } + } + await Cache.SetManyAsync(list).ConfigureAwait(continueOnCapturedContext: false); + Logger.LogDebug($"Finished setting the cache items. Count: {permissions.Count}"); + } + + public virtual async Task IsGrantedAsync(string[] names, string providerName, string providerKey) + { + Check.NotNullOrEmpty(names, "names"); + MultiplePermissionGrantResult result = new MultiplePermissionGrantResult(); + if (names.Length == 1) + { + string text = names.First(); + Dictionary result2 = result.Result; + string key = text; + result2.Add(key, await IsGrantedAsync(names.First(), providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false) ? PermissionGrantResult.Granted : PermissionGrantResult.Undefined); + return result; + } + foreach (KeyValuePair item in await GetCacheItemsAsync(names, providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)) + { + result.Result.Add(GetPermissionNameFormCacheKeyOrNull(item.Key), item.Value != null && item.Value.IsGranted ? PermissionGrantResult.Granted : PermissionGrantResult.Undefined); + } + return result; + } + + protected virtual async Task>> GetCacheItemsAsync(string[] names, string providerName, string providerKey) + { + List cacheKeys = names.Select((x) => CalculateCacheKey(x, providerName, providerKey)).ToList(); + Logger.LogDebug("PermissionStore.GetCacheItemAsync: " + string.Join(",", cacheKeys)); + List> cacheItems = (await Cache.GetManyAsync(cacheKeys).ConfigureAwait(continueOnCapturedContext: false)).ToList(); + if (cacheItems.All((x) => x.Value != null)) + { + Logger.LogDebug("Found in the cache: " + string.Join(",", cacheKeys)); + return cacheItems; + } + List list = (from x in cacheItems + where x.Value == null + select x.Key).ToList(); + Logger.LogDebug("Not found in the cache: " + string.Join(",", list)); + List> source = await SetCacheItemsAsync(providerName, providerKey, list).ConfigureAwait(continueOnCapturedContext: false); + List> list2 = new List>(); + foreach (string key in cacheKeys) + { + KeyValuePair keyValuePair = source.FirstOrDefault((x) => x.Key == key); + if (keyValuePair.Value == null) + { + keyValuePair = cacheItems.FirstOrDefault((x) => x.Key == key); + } + list2.Add(new KeyValuePair(key, keyValuePair.Value)); + } + return list2; + } + + protected virtual async Task>> SetCacheItemsAsync(string providerName, string providerKey, List notCacheKeys) + { + List permissions = (await PermissionDefinitionManager.GetPermissionsAsync().ConfigureAwait(continueOnCapturedContext: false)).Where((x) => notCacheKeys.Any((k) => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList(); + Logger.LogDebug("Getting not cache granted permissions from the repository for this provider name,key: " + providerName + "," + providerKey); + HashSet hashSet = new HashSet((await PermissionGrantRepository.GetListAsync(notCacheKeys.Select(new Func(GetPermissionNameFormCacheKeyOrNull)).ToArray(), providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)).Select((p) => p.Name)); + Logger.LogDebug($"Setting the cache items. Count: {permissions.Count}"); + List> cacheItems = new List>(); + foreach (PermissionDefinition item in permissions) + { + bool isGranted = hashSet.Contains(item.Name); + cacheItems.Add(new KeyValuePair(CalculateCacheKey(item.Name, providerName, providerKey), new PermissionGrantCacheItem(isGranted))); + } + await Cache.SetManyAsync(cacheItems).ConfigureAwait(continueOnCapturedContext: false); + Logger.LogDebug($"Finished setting the cache items. Count: {permissions.Count}"); + return cacheItems; + } + + protected virtual string CalculateCacheKey(string name, string providerName, string providerKey) + { + return PermissionGrantCacheItem.CalculateCacheKey(name, providerName, providerKey); + } + + protected virtual string GetPermissionNameFormCacheKeyOrNull(string key) + { + return PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key); + } + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStoreAppService.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStoreAppService.cs new file mode 100644 index 000000000..5673d22fc --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/PermissionStoreAppService.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp; +using Volo.Abp.Application.Services; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Caching; +using Volo.Abp.DependencyInjection; +using Volo.Abp.PermissionManagement; +using PermissionGrantCacheItem = WinIn.FasterZ.InterfaceDash.Permissions.PermissionGrantCacheItem; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions +{ + public class PermissionStoreAppService : ApplicationService, IPermissionStore, ITransientDependency + { + public ILogger Logger { get; set; } + + protected IPermissionGrantRepository PermissionGrantRepository { get; } + + protected IPermissionDefinitionManager PermissionDefinitionManager { get; } + + protected IDistributedCache Cache { get; } + + public PermissionStoreAppService(IPermissionGrantRepository permissionGrantRepository, IDistributedCache cache, IPermissionDefinitionManager permissionDefinitionManager) + { + PermissionGrantRepository = permissionGrantRepository; + Cache = cache; + PermissionDefinitionManager = permissionDefinitionManager; + Logger = NullLogger.Instance; + } + + [HttpPost] + [Route("api/permissions/get-isGranted")] + public virtual async Task IsGrantedAsync(string name, string providerName, string providerKey) + { + return (await GetCacheItemAsync(name, providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)).IsGranted; + } + + protected virtual async Task GetCacheItemAsync(string name, string providerName, string providerKey) + { + string cacheKey = CalculateCacheKey(name, providerName, providerKey); + Logger.LogDebug("PermissionStore.GetCacheItemAsync: " + cacheKey); + PermissionGrantCacheItem cacheItem2 = await Cache.GetAsync(cacheKey).ConfigureAwait(continueOnCapturedContext: false); + if (cacheItem2 != null) + { + Logger.LogDebug("Found in the cache: " + cacheKey); + return cacheItem2; + } + Logger.LogDebug("Not found in the cache: " + cacheKey); + cacheItem2 = new PermissionGrantCacheItem(isGranted: false); + await SetCacheItemsAsync(providerName, providerKey, name, cacheItem2).ConfigureAwait(continueOnCapturedContext: false); + return cacheItem2; + } + + protected virtual async Task SetCacheItemsAsync(string providerName, string providerKey, string currentName, PermissionGrantCacheItem currentCacheItem) + { + IReadOnlyList permissions = PermissionDefinitionManager.GetPermissionsAsync().Result.ToList(); + Logger.LogDebug("Getting all granted permissions from the repository for this provider name,key: " + providerName + "," + providerKey); + HashSet hashSet = new HashSet((await PermissionGrantRepository.GetListAsync(providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)).Select((PermissionGrant p) => p.Name)); + Logger.LogDebug($"Setting the cache items. Count: {permissions.Count}"); + List> list = new List>(); + foreach (PermissionDefinition item in permissions) + { + bool isGranted = hashSet.Contains(item.Name); + list.Add(new KeyValuePair(CalculateCacheKey(item.Name, providerName, providerKey), new PermissionGrantCacheItem(isGranted))); + if (item.Name == currentName) + { + currentCacheItem.IsGranted = isGranted; + } + } + await Cache.SetManyAsync(list).ConfigureAwait(continueOnCapturedContext: false); + Logger.LogDebug($"Finished setting the cache items. Count: {permissions.Count}"); + } + + public virtual async Task IsGrantedAsync(string[] names, string providerName, string providerKey) + { + Check.NotNullOrEmpty(names, "names"); + MultiplePermissionGrantResult result = new MultiplePermissionGrantResult(); + if (names.Length == 1) + { + string text = names.First(); + Dictionary result2 = result.Result; + string key = text; + result2.Add(key, (await IsGrantedAsync(names.First(), providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)) ? PermissionGrantResult.Granted : PermissionGrantResult.Undefined); + return result; + } + foreach (KeyValuePair item in await GetCacheItemsAsync(names, providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)) + { + result.Result.Add(GetPermissionNameFormCacheKeyOrNull(item.Key), (item.Value != null && item.Value.IsGranted) ? PermissionGrantResult.Granted : PermissionGrantResult.Undefined); + } + return result; + } + + protected virtual async Task>> GetCacheItemsAsync(string[] names, string providerName, string providerKey) + { + List cacheKeys = names.Select((string x) => CalculateCacheKey(x, providerName, providerKey)).ToList(); + Logger.LogDebug("PermissionStore.GetCacheItemAsync: " + string.Join(",", cacheKeys)); + List> cacheItems = (await Cache.GetManyAsync(cacheKeys).ConfigureAwait(continueOnCapturedContext: false)).ToList(); + if (cacheItems.All((KeyValuePair x) => x.Value != null)) + { + Logger.LogDebug("Found in the cache: " + string.Join(",", cacheKeys)); + return cacheItems; + } + List list = (from x in cacheItems + where x.Value == null + select x.Key).ToList(); + Logger.LogDebug("Not found in the cache: " + string.Join(",", list)); + List> source = await SetCacheItemsAsync(providerName, providerKey, list).ConfigureAwait(continueOnCapturedContext: false); + List> list2 = new List>(); + foreach (string key in cacheKeys) + { + KeyValuePair keyValuePair = source.FirstOrDefault((KeyValuePair x) => x.Key == key); + if (keyValuePair.Value == null) + { + keyValuePair = cacheItems.FirstOrDefault((KeyValuePair x) => x.Key == key); + } + list2.Add(new KeyValuePair(key, keyValuePair.Value)); + } + return list2; + } + + protected virtual async Task>> SetCacheItemsAsync(string providerName, string providerKey, List notCacheKeys) + { + List permissions = PermissionDefinitionManager.GetPermissionsAsync().Result.ToList(); + Logger.LogDebug("Getting not cache granted permissions from the repository for this provider name,key: " + providerName + "," + providerKey); + HashSet hashSet = new HashSet((await PermissionGrantRepository.GetListAsync(notCacheKeys.Select(new Func(GetPermissionNameFormCacheKeyOrNull)).ToArray(), providerName, providerKey).ConfigureAwait(continueOnCapturedContext: false)).Select((PermissionGrant p) => p.Name)); + Logger.LogDebug($"Setting the cache items. Count: {permissions.Count}"); + List> cacheItems = new List>(); + foreach (PermissionDefinition item in permissions) + { + bool isGranted = hashSet.Contains(item.Name); + cacheItems.Add(new KeyValuePair(CalculateCacheKey(item.Name, providerName, providerKey), new PermissionGrantCacheItem(isGranted))); + } + await Cache.SetManyAsync(cacheItems).ConfigureAwait(continueOnCapturedContext: false); + Logger.LogDebug($"Finished setting the cache items. Count: {permissions.Count}"); + return cacheItems; + } + + protected virtual string CalculateCacheKey(string name, string providerName, string providerKey) + { + return PermissionGrantCacheItem.CalculateCacheKey(name, providerName, providerKey); + } + + protected virtual string GetPermissionNameFormCacheKeyOrNull(string key) + { + return PermissionGrantCacheItem.GetPermissionNameFormCacheKeyOrNull(key); + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthAppBuilderExtensions.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthAppBuilderExtensions.cs new file mode 100644 index 000000000..13db84260 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthAppBuilderExtensions.cs @@ -0,0 +1,25 @@ +using System; +using Microsoft.AspNetCore.Builder; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +public static class ZAuthAppBuilderExtensions +{ + internal const string AuthenticationMiddlewareSetKey = "__AuthenticationMiddlewareSet"; + + /// + /// Adds the to the specified , which enables authentication capabilities. + /// + /// The to add the middleware to. + /// A reference to this instance after the operation has completed. + public static IApplicationBuilder UseAuthenticationZ(this IApplicationBuilder app) + { + if (app == null) + { + throw new ArgumentNullException(nameof(app)); + } + + app.Properties[AuthenticationMiddlewareSetKey] = true; + return app.UseMiddleware(); + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthenticationMiddleware.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthenticationMiddleware.cs new file mode 100644 index 000000000..aa5a3e27b --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZAuthenticationMiddleware.cs @@ -0,0 +1,91 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features.Authentication; +using Microsoft.Extensions.DependencyInjection; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +/// +/// Middleware that performs authentication. +/// +public class ZAuthenticationMiddleware +{ + private readonly RequestDelegate _next; + + /// + /// Initializes a new instance of . + /// + /// The next item in the middleware pipeline. + /// The . + public ZAuthenticationMiddleware(RequestDelegate next, IAuthenticationSchemeProvider schemes) + { + if (next == null) + { + throw new ArgumentNullException(nameof(next)); + } + if (schemes == null) + { + throw new ArgumentNullException(nameof(schemes)); + } + + _next = next; + Schemes = schemes; + } + + /// + /// Gets or sets the . + /// + public IAuthenticationSchemeProvider Schemes { get; set; } + + /// + /// Invokes the middleware performing authentication. + /// + /// The . + public async Task Invoke(HttpContext context) + { + context.Features.Set(new AuthenticationFeature + { + OriginalPath = context.Request.Path, + OriginalPathBase = context.Request.PathBase + }); + + // Give any IAuthenticationRequestHandler schemes a chance to handle the request + var handlers = context.RequestServices.GetRequiredService(); + foreach (var scheme in await Schemes.GetRequestHandlerSchemesAsync()) + { + var handler = await handlers.GetHandlerAsync(context, scheme.Name) as IAuthenticationRequestHandler; + if (handler != null && await handler.HandleRequestAsync()) + { + return; + } + } + + var defaultAuthenticate = await Schemes.GetDefaultAuthenticateSchemeAsync(); + if (defaultAuthenticate != null) + { + var result = await context.AuthenticateAsync(defaultAuthenticate.Name); + if (result?.Principal == null) + { + result = await context.AuthenticateAsync("Identity.Application"); + } + if (result?.Principal == null) + { + result = await context.AuthenticateAsync("Bearer"); + } + if (result?.Principal != null) + { + context.User = result.Principal; + } + if (result?.Succeeded ?? false) + { + var authFeatures = new AuthenticationFeatures(result); + context.Features.Set(authFeatures); + context.Features.Set(authFeatures); + } + } + + await _next(context); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZRolePermissionValueProvider.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZRolePermissionValueProvider.cs new file mode 100644 index 000000000..aa06f6246 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Permissions/ZRolePermissionValueProvider.cs @@ -0,0 +1,89 @@ +using System.Collections.Generic; +using System.Linq; +using System.Security.Claims; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Security.Claims; + +namespace WinIn.FasterZ.AuthSiteCenter.Permissions; + +public class ZRolePermissionValueProvider : PermissionValueProvider +{ + public const string ProviderName = "R"; + + public override string Name => ProviderName; + + public ZRolePermissionValueProvider(IPermissionStore permissionStore) + : base(permissionStore) + { + + } + + public override async Task CheckAsync(PermissionValueCheckContext context) + { + var roles = context.Principal?.FindAll(ClaimTypes.Role).Select(c => c.Value).ToArray(); + if (roles == null || !roles.Any()) + { + roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); + } + if (roles == null || !roles.Any()) + { + return PermissionGrantResult.Undefined; + } + + foreach (var role in roles.Distinct()) + { + if (await PermissionStore.IsGrantedAsync(context.Permission.Name, Name, role)) + { + return PermissionGrantResult.Granted; + } + } + + return PermissionGrantResult.Undefined; + } + + public override async Task CheckAsync(PermissionValuesCheckContext context) + { + var permissionNames = context.Permissions.Select(x => x.Name).Distinct().ToList(); + Check.NotNullOrEmpty(permissionNames, nameof(permissionNames)); + + var result = new MultiplePermissionGrantResult(permissionNames.ToArray()); + + var roles = context.Principal?.FindAll(ClaimTypes.Role).Select(c => c.Value).ToArray(); + if (roles == null || !roles.Any()) + { + roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); + } + if (roles == null || !roles.Any()) + { + return result; + } + + foreach (var role in roles.Distinct()) + { + var multipleResult = await PermissionStore.IsGrantedAsync(permissionNames.ToArray(), Name, role); + + foreach (var grantResult in multipleResult.Result.Where(grantResult => + result.Result.ContainsKey(grantResult.Key) && + result.Result[grantResult.Key] == PermissionGrantResult.Undefined && + grantResult.Value != PermissionGrantResult.Undefined)) + { + result.Result[grantResult.Key] = grantResult.Value; + permissionNames.RemoveAll(x => x == grantResult.Key); + } + + if (result.AllGranted || result.AllProhibited) + { + break; + } + + if (permissionNames.IsNullOrEmpty()) + { + break; + } + } + + return result; + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Properties/AssemblyInfo.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..d9ed0edae --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("WinIn.FasterZ.AuthSiteCenter.Application.Tests")] diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/WinIn.FasterZ.AuthSiteCenter.Application.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/WinIn.FasterZ.AuthSiteCenter.Application.csproj new file mode 100644 index 000000000..76b4c1fc5 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Application/WinIn.FasterZ.AuthSiteCenter.Application.csproj @@ -0,0 +1,37 @@ + + + + + + net7.0 + enable + WinIn.FasterZ.AuthSiteCenter + + + + + + + + + + + + + + + + + + + + + + C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\7.0.10\Microsoft.AspNetCore.Authentication.dll + + + C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\7.0.10\Microsoft.AspNetCore.Authentication.Cookies.dll + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/AuthSiteCenterDbMigratorModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/AuthSiteCenterDbMigratorModule.cs new file mode 100644 index 000000000..510fb585f --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/AuthSiteCenterDbMigratorModule.cs @@ -0,0 +1,14 @@ +using WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; +using Volo.Abp.Autofac; +using Volo.Abp.Modularity; + +namespace WinIn.FasterZ.AuthSiteCenter.DbMigrator; + +[DependsOn( + typeof(AbpAutofacModule), + typeof(AuthSiteCenterEntityFrameworkCoreModule), + typeof(AuthSiteCenterApplicationContractsModule) + )] +public class AuthSiteCenterDbMigratorModule : AbpModule +{ +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/DbMigratorHostedService.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/DbMigratorHostedService.cs new file mode 100644 index 000000000..fe2e7d567 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/DbMigratorHostedService.cs @@ -0,0 +1,51 @@ +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using WinIn.FasterZ.AuthSiteCenter.Data; +using Serilog; +using Volo.Abp; +using Volo.Abp.Data; + +namespace WinIn.FasterZ.AuthSiteCenter.DbMigrator; + +public class DbMigratorHostedService : IHostedService +{ + private readonly IHostApplicationLifetime _hostApplicationLifetime; + private readonly IConfiguration _configuration; + + public DbMigratorHostedService(IHostApplicationLifetime hostApplicationLifetime, IConfiguration configuration) + { + _hostApplicationLifetime = hostApplicationLifetime; + _configuration = configuration; + } + + public async Task StartAsync(CancellationToken cancellationToken) + { + using (var application = await AbpApplicationFactory.CreateAsync(options => + { + options.Services.ReplaceConfiguration(_configuration); + options.UseAutofac(); + options.Services.AddLogging(c => c.AddSerilog()); + options.AddDataMigrationEnvironment(); + })) + { + await application.InitializeAsync(); + + await application + .ServiceProvider + .GetRequiredService() + .MigrateAsync(); + + await application.ShutdownAsync(); + + _hostApplicationLifetime.StopApplication(); + } + } + + public Task StopAsync(CancellationToken cancellationToken) + { + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/Program.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/Program.cs new file mode 100644 index 000000000..41efd6a77 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/Program.cs @@ -0,0 +1,41 @@ +using System.IO; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Serilog; +using Serilog.Events; + +namespace WinIn.FasterZ.AuthSiteCenter.DbMigrator; + +class Program +{ + static async Task Main(string[] args) + { + Log.Logger = new LoggerConfiguration() + .MinimumLevel.Information() + .MinimumLevel.Override("Microsoft", LogEventLevel.Warning) + .MinimumLevel.Override("Volo.Abp", LogEventLevel.Warning) +#if DEBUG + .MinimumLevel.Override("WinIn.FasterZ.AuthSiteCenter", LogEventLevel.Debug) +#else + .MinimumLevel.Override("WinIn.FasterZ.AuthSiteCenter", LogEventLevel.Information) +#endif + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) + .WriteTo.Async(c => c.Console()) + .CreateLogger(); + + await CreateHostBuilder(args).RunConsoleAsync(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .AddAppSettingsSecretsJson() + .ConfigureLogging((context, logging) => logging.ClearProviders()) + .ConfigureServices((hostContext, services) => + { + services.AddHostedService(); + }); +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/WinIn.FasterZ.AuthSiteCenter.DbMigrator.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/WinIn.FasterZ.AuthSiteCenter.DbMigrator.csproj new file mode 100644 index 000000000..bb40fc185 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/WinIn.FasterZ.AuthSiteCenter.DbMigrator.csproj @@ -0,0 +1,45 @@ + + + + + + Exe + net7.0 + enable + + + + + + PreserveNewest + Always + + + + PreserveNewest + Always + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.json new file mode 100644 index 000000000..d7abe81d2 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.json @@ -0,0 +1,30 @@ +{ + "ConnectionStrings": { + "Default": "Server=dev.ccwin-in.com,13319;Database=WMS_DongYang_Faster_AuthSiteCenter;uid=ccwin-in;pwd=Microsoft@2022;timeout=6000;Encrypt=False;" + }, + "Redis": { + "Configuration": "127.0.0.1" + }, + "OpenIddict": { + "Applications": { + "AuthSiteCenter_Web": { + "ClientId": "AuthSiteCenter_Web", + "ClientSecret": "1q2w3e*", + "RootUrl": "http://localhost:60020" + }, + "AuthSiteCenter_App": { + "ClientId": "AuthSiteCenter_App", + "RootUrl": "http://localhost:4200" + }, + "AuthSiteCenter_BlazorServerTiered": { + "ClientId": "AuthSiteCenter_BlazorServerTiered", + "ClientSecret": "1q2w3e*", + "RootUrl": "https://localhost:44316" + }, + "AuthSiteCenter_Swagger": { + "ClientId": "AuthSiteCenter_Swagger", + "RootUrl": "https://localhost:44326" + } + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.secrets.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.secrets.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.DbMigrator/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainErrorCodes.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainErrorCodes.cs new file mode 100644 index 000000000..67ffb2213 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainErrorCodes.cs @@ -0,0 +1,6 @@ +namespace WinIn.FasterZ.AuthSiteCenter; + +public static class AuthSiteCenterDomainErrorCodes +{ + /* You can add your business exception error codes here, as constants */ +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainSharedModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainSharedModule.cs new file mode 100644 index 000000000..3e17da7bd --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterDomainSharedModule.cs @@ -0,0 +1,58 @@ +using WinIn.FasterZ.AuthSiteCenter.Localization; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Localization; +using Volo.Abp.Localization.ExceptionHandling; +using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict; +using Volo.Abp.PermissionManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; +using Volo.Abp.Validation.Localization; +using Volo.Abp.VirtualFileSystem; + +namespace WinIn.FasterZ.AuthSiteCenter; + +[DependsOn( + typeof(AbpAuditLoggingDomainSharedModule), + typeof(AbpBackgroundJobsDomainSharedModule), + typeof(AbpFeatureManagementDomainSharedModule), + typeof(AbpIdentityDomainSharedModule), + typeof(AbpOpenIddictDomainSharedModule), + typeof(AbpPermissionManagementDomainSharedModule), + typeof(AbpSettingManagementDomainSharedModule), + typeof(AbpTenantManagementDomainSharedModule) + )] +public class AuthSiteCenterDomainSharedModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + AuthSiteCenterGlobalFeatureConfigurator.Configure(); + AuthSiteCenterModuleExtensionConfigurator.Configure(); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + + Configure(options => + { + options.Resources + .Add("en") + .AddBaseTypes(typeof(AbpValidationResource)) + .AddVirtualJson("/Localization/AuthSiteCenter"); + + options.DefaultResourceType = typeof(AuthSiteCenterResource); + }); + + Configure(options => + { + options.MapCodeNamespace("AuthSiteCenter", typeof(AuthSiteCenterResource)); + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterGlobalFeatureConfigurator.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterGlobalFeatureConfigurator.cs new file mode 100644 index 000000000..6fab429d6 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterGlobalFeatureConfigurator.cs @@ -0,0 +1,22 @@ +using Volo.Abp.Threading; + +namespace WinIn.FasterZ.AuthSiteCenter; + +public static class AuthSiteCenterGlobalFeatureConfigurator +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + /* You can configure (enable/disable) global features of the used modules here. + * + * YOU CAN SAFELY DELETE THIS CLASS AND REMOVE ITS USAGES IF YOU DON'T NEED TO IT! + * + * Please refer to the documentation to lear more about the Global Features System: + * https://docs.abp.io/en/abp/latest/Global-Features + */ + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterModuleExtensionConfigurator.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterModuleExtensionConfigurator.cs new file mode 100644 index 000000000..c03e8df1f --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/AuthSiteCenterModuleExtensionConfigurator.cs @@ -0,0 +1,73 @@ +using System.ComponentModel.DataAnnotations; +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace WinIn.FasterZ.AuthSiteCenter; + +public static class AuthSiteCenterModuleExtensionConfigurator +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + OneTimeRunner.Run(() => + { + ConfigureExistingProperties(); + ConfigureExtraProperties(); + }); + } + + private static void ConfigureExistingProperties() + { + /* You can change max lengths for properties of the + * entities defined in the modules used by your application. + * + * Example: Change user and role name max lengths + + IdentityUserConsts.MaxNameLength = 99; + IdentityRoleConsts.MaxNameLength = 99; + + * Notice: It is not suggested to change property lengths + * unless you really need it. Go with the standard values wherever possible. + * + * If you are using EF Core, you will need to run the add-migration command after your changes. + */ + } + + private static void ConfigureExtraProperties() + { + /* You can configure extra properties for the + * entities defined in the modules used by your application. + * + * This class can be used to define these extra properties + * with a high level, easy to use API. + * + * Example: Add a new property to the user entity of the identity module + + ObjectExtensionManager.Instance.Modules() + .ConfigureIdentity(identity => + { + identity.ConfigureUser(user => + { + user.AddOrUpdateProperty( //property type: string + "SocialSecurityNumber", //property name + property => + { + //validation rules + property.Attributes.Add(new RequiredAttribute()); + property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4}); + + property.Configuration[IdentityModuleExtensionConsts.ConfigurationNames.AllowUserToEdit] = true; + + //...other configurations for this property + } + ); + }); + }); + + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Module-Entity-Extensions + */ + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ar.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ar.json new file mode 100644 index 000000000..96bbf80b4 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ar.json @@ -0,0 +1,8 @@ +{ + "culture": "ar", + "texts": { + "Menu:Home": "الرئيسية", + "Menu:Home": "Ø§Ù„ØµÙØ­Ø© الرئيسية", + "LongWelcomeMessage": "مرحبا بكم ÙÙŠ التطبيق. هذا مشروع بدء تشغيل يعتمد على إطار عمل ABP. لمزيد من المعلومات ØŒ يرجى زيارة abp.io." + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/cs.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/cs.json new file mode 100644 index 000000000..5a0bbf613 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/cs.json @@ -0,0 +1,8 @@ +{ + "culture": "cs", + "texts": { + "Menu:Home": "Úvod", + "Welcome": "Vítejte", + "LongWelcomeMessage": "Vítejte v aplikaci. Toto je startovací projekt založený na ABP frameworku. Pro více informací, navÅ¡tivte abp.io." + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/de.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/de.json new file mode 100644 index 000000000..831493be8 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/de.json @@ -0,0 +1,8 @@ +{ + "culture": "de", + "texts": { + "Menu:Home": "Home", + "Welcome": "Willkommen", + "LongWelcomeMessage": "Willkommen bei der Anwendung. Dies ist ein Startup-Projekt, das auf dem ABP-Framework basiert. Weitere Informationen finden Sie unter abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en-GB.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en-GB.json new file mode 100644 index 000000000..d2ca0793a --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en-GB.json @@ -0,0 +1,8 @@ +{ + "culture": "en-GB", + "texts": { + "Menu:Home": "Home", + "Welcome": "Welcome", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en.json new file mode 100644 index 000000000..d2a6a9831 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/en.json @@ -0,0 +1,8 @@ +{ + "culture": "en", + "texts": { + "Menu:Home": "Home", + "Welcome": "Welcome", + "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io." + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/es.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/es.json new file mode 100644 index 000000000..31b4b59e2 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/es.json @@ -0,0 +1,8 @@ +{ + "culture": "es", + "texts": { + "Menu:Home": "Inicio", + "Welcome": "Bienvenido", + "LongWelcomeMessage": "Bienvenido a la aplicación, este es un proyecto base basado en el framework ABP. Para más información, visita abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fi.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fi.json new file mode 100644 index 000000000..a318859f2 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fi.json @@ -0,0 +1,8 @@ +{ + "culture": "fi", + "texts": { + "Menu:Home": "Koti", + "Welcome": "Tervetuloa", + "LongWelcomeMessage": "Tervetuloa sovellukseen. Tämä on ABP-kehykseen perustuva käynnistysprojekti. Lisätietoja on osoitteessa abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fr.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fr.json new file mode 100644 index 000000000..e76eac0c7 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/fr.json @@ -0,0 +1,8 @@ +{ + "culture": "fr", + "texts": { + "Menu:Home": "Accueil", + "Welcome": "Bienvenue", + "LongWelcomeMessage": "Bienvenue dans l'application. Il s'agit d'un projet de démarrage basé sur le framework ABP. Pour plus d'informations, visitez abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hi.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hi.json new file mode 100644 index 000000000..a1676bfd4 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hi.json @@ -0,0 +1,8 @@ +{ + "culture": "hi", + "texts": { + "Menu:Home": "घर", + "Welcome": "सà¥à¤µà¤¾à¤—त हे", + "LongWelcomeMessage": "आवेदन करने के लिठआपका सà¥à¤µà¤¾à¤—त है। यह à¤à¤¬à¥€à¤ªà¥€ ढांचे पर आधारित à¤à¤• सà¥à¤Ÿà¤¾à¤°à¥à¤Ÿà¤…प परियोजना है। अधिक जानकारी के लिà¤, abp.io पर जाà¤à¤‚।" + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hr.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hr.json new file mode 100644 index 000000000..fa8efab32 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hr.json @@ -0,0 +1,8 @@ +{ + "culture": "hr", + "texts": { + "Menu:Home": "PoÄetna", + "Welcome": "DobrodoÅ¡li", + "LongWelcomeMessage": "DobrodoÅ¡li u aplikaciju. Ovo je startup projekt temeljen na ABP framework-u. Za viÅ¡e informacija posjetite abp.io." + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hu.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hu.json new file mode 100644 index 000000000..c7b6a33a0 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/hu.json @@ -0,0 +1,8 @@ +{ + "culture": "hu", + "texts": { + "Menu:Home": "KezdÅ‘lap", + "Welcome": "Üdvözlöm", + "LongWelcomeMessage": "Üdvözöljük az alkalmazásban. Ez egy ABP keretrendszeren alapuló startup projekt. További információkért látogasson el az abp.io oldalra." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/is.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/is.json new file mode 100644 index 000000000..190df9037 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/is.json @@ -0,0 +1,8 @@ +{ + "culture": "is", + "texts": { + "Menu:Home": "Heim", + "Welcome": "Velkomin", + "LongWelcomeMessage": "Verið velkomin í forritið. Þetta er startup verkefni sem byggir á ABP. Nánari upplýsingar er að finna á abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/it.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/it.json new file mode 100644 index 000000000..82ce42b03 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/it.json @@ -0,0 +1,8 @@ +{ + "culture": "it", + "texts": { + "Menu:Home": "Home", + "Welcome": "Benvenuto", + "LongWelcomeMessage": "Benvenuto nell'applicazione. Questo è un progetto di avvio basato sul framework ABP. Per ulteriori informazioni, visita abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/nl.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/nl.json new file mode 100644 index 000000000..9ba8da474 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/nl.json @@ -0,0 +1,8 @@ +{ + "culture": "nl", + "texts": { + "Menu:Home": "Home", + "Welcome": "Welkom", + "LongWelcomeMessage": "Welkom bij de applicatie. Dit is een startup-project gebaseerd op het ABP-framework. Bezoek abp.io voor meer informatie." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pl-PL.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pl-PL.json new file mode 100644 index 000000000..33412f307 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pl-PL.json @@ -0,0 +1,8 @@ +{ + "culture": "pl-PL", + "texts": { + "Menu:Home": "Home", + "Welcome": "Witaj", + "LongWelcomeMessage": "Witaj w aplikacji. To jest inicjalny projekt bazujÄ…cy na ABP framework. Po wiÄ™cej informacji odwiedź stronÄ™ abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pt-BR.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pt-BR.json new file mode 100644 index 000000000..8c818a07a --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/pt-BR.json @@ -0,0 +1,8 @@ +{ + "culture": "pt-BR", + "texts": { + "Menu:Home": "Principal", + "Welcome": "Seja bem-vindo!", + "LongWelcomeMessage": "Bem-vindo a esta aplicação. Este é um projeto inicial baseado no ABP framework. Para mais informações, visite abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ro-RO.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ro-RO.json new file mode 100644 index 000000000..1fe560196 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ro-RO.json @@ -0,0 +1,8 @@ +{ + "culture": "ro-RO", + "texts": { + "Menu:Home": "Acasă", + "Welcome": "Bun venit", + "LongWelcomeMessage": "Bun venit la aplicaÅ£ie. Acesta este un proiect de pornire bazat pe framework-ul ABP. Pentru mai multe informaÅ£ii, vizitaÅ£i, visit abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ru.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ru.json new file mode 100644 index 000000000..8464e4434 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/ru.json @@ -0,0 +1,8 @@ +{ + "culture": "ru", + "texts": { + "Menu:Home": "ГлавнаÑ", + "Welcome": "Добро пожаловать", + "LongWelcomeMessage": "Добро пожаловать в приложение. Этот запущенный проект оÑнован на фреймворке ABP. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации поÑетите Ñайт abp.io." + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sk.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sk.json new file mode 100644 index 000000000..4f35aaf1c --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sk.json @@ -0,0 +1,8 @@ +{ + "culture": "sk", + "texts": { + "Menu:Home": "Domov", + "Welcome": "Vitajte", + "LongWelcomeMessage": "Vitajte v aplikácii. Toto je Å¡tartovací projekt založený na ABP frameworku. Viac informácií nájdete na stránke abp.io." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sl.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sl.json new file mode 100644 index 000000000..a066ef26b --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/sl.json @@ -0,0 +1,8 @@ +{ + "culture": "sl", + "texts": { + "Menu:Home": "Domov", + "Welcome": "DobrodoÅ¡li", + "LongWelcomeMessage": "DobrodoÅ¡li v aplikaciji. To je zaÄetni projekt na osnovi okolja ABP. Za veÄ informacij obiÅ¡Äite abp.io." + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/tr.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/tr.json new file mode 100644 index 000000000..2cc911e48 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/tr.json @@ -0,0 +1,8 @@ +{ + "culture": "tr", + "texts": { + "Menu:Home": "Ana sayfa", + "Welcome": "HoÅŸgeldiniz", + "LongWelcomeMessage": "Uygulamaya hoÅŸgeldiniz. Bu, ABP framework'ü üzerine bina edilmiÅŸ bir baÅŸlangıç projesidir. Daha fazla bilgi için abp.io adresini ziyaret edebilirsiniz." + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/vi.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/vi.json new file mode 100644 index 000000000..c115a3572 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/vi.json @@ -0,0 +1,8 @@ +{ + "culture": "vi", + "texts": { + "Menu:Home": "Trang chá»§", + "Welcome": "Chào mừng bạn", + "LongWelcomeMessage": "Chào mừng bạn đến ứng dụng. Äây là má»™t dá»± án khởi nghiệp dá»±a trên khung ABP. Äể biết thêm thông tin, hãy truy cập abp.io." + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hans.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hans.json new file mode 100644 index 000000000..23790bde5 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hans.json @@ -0,0 +1,8 @@ +{ + "culture": "zh-Hans", + "texts": { + "Menu:Home": "首页", + "Welcome": "欢迎", + "LongWelcomeMessage": "欢迎æ¥åˆ°è¯¥åº”用程åº. 这是一个基于ABP框架的å¯åŠ¨é¡¹ç›®. 有关更多信æ¯, 请访问 abp.io." + } + } \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hant.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hant.json new file mode 100644 index 000000000..31e0ab5a4 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenter/zh-Hant.json @@ -0,0 +1,8 @@ +{ + "culture": "zh-Hant", + "texts": { + "Menu:Home": "首é ", + "Welcome": "歡迎", + "LongWelcomeMessage": "歡迎來到此應用程å¼. 這是一個基於ABP框架的起始專案. 有關更多訊æ¯, è«‹ç€è¦½ abp.io." + } + } \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenterResource.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenterResource.cs new file mode 100644 index 000000000..10c5cec4f --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/Localization/AuthSiteCenterResource.cs @@ -0,0 +1,9 @@ +using Volo.Abp.Localization; + +namespace WinIn.FasterZ.AuthSiteCenter.Localization; + +[LocalizationResourceName("AuthSiteCenter")] +public class AuthSiteCenterResource +{ + +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs new file mode 100644 index 000000000..d18d866d3 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/MultiTenancy/MultiTenancyConsts.cs @@ -0,0 +1,10 @@ +namespace WinIn.FasterZ.AuthSiteCenter.MultiTenancy; + +public static class MultiTenancyConsts +{ + /* Enable/disable multi-tenancy easily in a single point. + * If you will never need to multi-tenancy, you can remove + * related modules and code parts, including this file. + */ + public const bool IsEnabled = true; +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/WinIn.FasterZ.AuthSiteCenter.Domain.Shared.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/WinIn.FasterZ.AuthSiteCenter.Domain.Shared.csproj new file mode 100644 index 000000000..03a20993e --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain.Shared/WinIn.FasterZ.AuthSiteCenter.Domain.Shared.csproj @@ -0,0 +1,32 @@ + + + + + + netstandard2.0;netstandard2.1;net7.0 + enable + WinIn.FasterZ.AuthSiteCenter + true + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterConsts.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterConsts.cs new file mode 100644 index 000000000..a21ea964b --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterConsts.cs @@ -0,0 +1,8 @@ +namespace WinIn.FasterZ.AuthSiteCenter; + +public static class AuthSiteCenterConsts +{ + public const string DbTablePrefix = "App"; + + public const string DbSchema = null; +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterDomainModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterDomainModule.cs new file mode 100644 index 000000000..29a8c742c --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/AuthSiteCenterDomainModule.cs @@ -0,0 +1,68 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using WinIn.FasterZ.AuthSiteCenter.MultiTenancy; +using Volo.Abp.AuditLogging; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Emailing; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.OpenIddict; +using Volo.Abp.PermissionManagement.Identity; +using Volo.Abp.PermissionManagement.OpenIddict; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace WinIn.FasterZ.AuthSiteCenter; + +[DependsOn( + typeof(AuthSiteCenterDomainSharedModule), + typeof(AbpAuditLoggingDomainModule), + typeof(AbpBackgroundJobsDomainModule), + typeof(AbpFeatureManagementDomainModule), + typeof(AbpIdentityDomainModule), + typeof(AbpOpenIddictDomainModule), + typeof(AbpPermissionManagementDomainOpenIddictModule), + typeof(AbpPermissionManagementDomainIdentityModule), + typeof(AbpSettingManagementDomainModule), + typeof(AbpTenantManagementDomainModule), + typeof(AbpEmailingModule) +)] +public class AuthSiteCenterDomainModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Languages.Add(new LanguageInfo("ar", "ar", "العربية", "ae")); + options.Languages.Add(new LanguageInfo("cs", "cs", "ÄŒeÅ¡tina")); + options.Languages.Add(new LanguageInfo("en", "en", "English", "gb")); + options.Languages.Add(new LanguageInfo("en-GB", "en-GB", "English (UK)")); + options.Languages.Add(new LanguageInfo("hu", "hu", "Magyar")); + options.Languages.Add(new LanguageInfo("hr", "hr", "Croatian")); + options.Languages.Add(new LanguageInfo("fi", "fi", "Finnish", "fi")); + options.Languages.Add(new LanguageInfo("fr", "fr", "Français", "fr")); + options.Languages.Add(new LanguageInfo("hi", "hi", "Hindi", "in")); + options.Languages.Add(new LanguageInfo("it", "it", "Italiano", "it")); + options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português")); + options.Languages.Add(new LanguageInfo("ru", "ru", "РуÑÑкий", "ru")); + options.Languages.Add(new LanguageInfo("sk", "sk", "Slovak", "sk")); + options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe", "tr")); + options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); + options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "ç¹é«”中文")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de")); + options.Languages.Add(new LanguageInfo("es", "es", "Español")); + }); + + Configure(options => + { + options.IsEnabled = MultiTenancyConsts.IsEnabled; + }); + +#if DEBUG + context.Services.Replace(ServiceDescriptor.Singleton()); +#endif + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/AuthSiteCenterDbMigrationService.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/AuthSiteCenterDbMigrationService.cs new file mode 100644 index 000000000..d0f7da8ab --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/AuthSiteCenterDbMigrationService.cs @@ -0,0 +1,218 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.TenantManagement; + +namespace WinIn.FasterZ.AuthSiteCenter.Data; + +public class AuthSiteCenterDbMigrationService : ITransientDependency +{ + public ILogger Logger { get; set; } + + private readonly IDataSeeder _dataSeeder; + private readonly IEnumerable _dbSchemaMigrators; + private readonly ITenantRepository _tenantRepository; + private readonly ICurrentTenant _currentTenant; + + public AuthSiteCenterDbMigrationService( + IDataSeeder dataSeeder, + IEnumerable dbSchemaMigrators, + ITenantRepository tenantRepository, + ICurrentTenant currentTenant) + { + _dataSeeder = dataSeeder; + _dbSchemaMigrators = dbSchemaMigrators; + _tenantRepository = tenantRepository; + _currentTenant = currentTenant; + + Logger = NullLogger.Instance; + } + + public async Task MigrateAsync() + { + var initialMigrationAdded = AddInitialMigrationIfNotExist(); + + if (initialMigrationAdded) + { + return; + } + + Logger.LogInformation("Started database migrations..."); + + await MigrateDatabaseSchemaAsync(); + await SeedDataAsync(); + + Logger.LogInformation($"Successfully completed host database migrations."); + + var tenants = await _tenantRepository.GetListAsync(includeDetails: true); + + var migratedDatabaseSchemas = new HashSet(); + foreach (var tenant in tenants) + { + using (_currentTenant.Change(tenant.Id)) + { + if (tenant.ConnectionStrings.Any()) + { + var tenantConnectionStrings = tenant.ConnectionStrings + .Select(x => x.Value) + .ToList(); + + if (!migratedDatabaseSchemas.IsSupersetOf(tenantConnectionStrings)) + { + await MigrateDatabaseSchemaAsync(tenant); + + migratedDatabaseSchemas.AddIfNotContains(tenantConnectionStrings); + } + } + + await SeedDataAsync(tenant); + } + + Logger.LogInformation($"Successfully completed {tenant.Name} tenant database migrations."); + } + + Logger.LogInformation("Successfully completed all database migrations."); + Logger.LogInformation("You can safely end this process..."); + } + + private async Task MigrateDatabaseSchemaAsync(Tenant? tenant = null) + { + Logger.LogInformation( + $"Migrating schema for {(tenant == null ? "host" : tenant.Name + " tenant")} database..."); + + foreach (var migrator in _dbSchemaMigrators) + { + await migrator.MigrateAsync(); + } + } + + private async Task SeedDataAsync(Tenant? tenant = null) + { + Logger.LogInformation($"Executing {(tenant == null ? "host" : tenant.Name + " tenant")} database seed..."); + + await _dataSeeder.SeedAsync(new DataSeedContext(tenant?.Id) + .WithProperty(IdentityDataSeedContributor.AdminEmailPropertyName, IdentityDataSeedContributor.AdminEmailDefaultValue) + .WithProperty(IdentityDataSeedContributor.AdminPasswordPropertyName, IdentityDataSeedContributor.AdminPasswordDefaultValue) + ); + } + + private bool AddInitialMigrationIfNotExist() + { + try + { + if (!DbMigrationsProjectExists()) + { + return false; + } + } + catch (Exception) + { + return false; + } + + try + { + if (!MigrationsFolderExists()) + { + AddInitialMigration(); + return true; + } + else + { + return false; + } + } + catch (Exception e) + { + Logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message); + return false; + } + } + + private bool DbMigrationsProjectExists() + { + var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath(); + + return dbMigrationsProjectFolder != null; + } + + private bool MigrationsFolderExists() + { + var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath(); + return dbMigrationsProjectFolder != null && Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations")); + } + + private void AddInitialMigration() + { + Logger.LogInformation("Creating initial migration..."); + + string argumentPrefix; + string fileName; + + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) + { + argumentPrefix = "-c"; + fileName = "/bin/bash"; + } + else + { + argumentPrefix = "/C"; + fileName = "cmd.exe"; + } + + var procStartInfo = new ProcessStartInfo(fileName, + $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetEntityFrameworkCoreProjectFolderPath()}\"\"" + ); + + try + { + Process.Start(procStartInfo); + } + catch (Exception) + { + throw new Exception("Couldn't run ABP CLI..."); + } + } + + private string? GetEntityFrameworkCoreProjectFolderPath() + { + var slnDirectoryPath = GetSolutionDirectoryPath(); + + if (slnDirectoryPath == null) + { + throw new Exception("Solution folder not found!"); + } + + var srcDirectoryPath = Path.Combine(slnDirectoryPath, "src"); + + return Directory.GetDirectories(srcDirectoryPath) + .FirstOrDefault(d => d.EndsWith(".EntityFrameworkCore")); + } + + private string? GetSolutionDirectoryPath() + { + var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory()); + + while (currentDirectory != null && Directory.GetParent(currentDirectory.FullName) != null) + { + currentDirectory = Directory.GetParent(currentDirectory.FullName); + + if (currentDirectory != null && Directory.GetFiles(currentDirectory.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null) + { + return currentDirectory.FullName; + } + } + + return null; + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/IAuthSiteCenterDbSchemaMigrator.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/IAuthSiteCenterDbSchemaMigrator.cs new file mode 100644 index 000000000..e2acb3cf4 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/IAuthSiteCenterDbSchemaMigrator.cs @@ -0,0 +1,8 @@ +using System.Threading.Tasks; + +namespace WinIn.FasterZ.AuthSiteCenter.Data; + +public interface IAuthSiteCenterDbSchemaMigrator +{ + Task MigrateAsync(); +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/NullAuthSiteCenterDbSchemaMigrator.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/NullAuthSiteCenterDbSchemaMigrator.cs new file mode 100644 index 000000000..794fbae5c --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Data/NullAuthSiteCenterDbSchemaMigrator.cs @@ -0,0 +1,15 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace WinIn.FasterZ.AuthSiteCenter.Data; + +/* This is used if database provider does't define + * IAuthSiteCenterDbSchemaMigrator implementation. + */ +public class NullAuthSiteCenterDbSchemaMigrator : IAuthSiteCenterDbSchemaMigrator, ITransientDependency +{ + public Task MigrateAsync() + { + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/OpenIddict/OpenIddictDataSeedContributor.cs new file mode 100644 index 000000000..07536b639 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -0,0 +1,415 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using JetBrains.Annotations; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Localization; +using OpenIddict.Abstractions; +using Volo.Abp; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.OpenIddict.Applications; +using Volo.Abp.OpenIddict.Scopes; +using Volo.Abp.PermissionManagement; +using Volo.Abp.Uow; + +namespace WinIn.FasterZ.AuthSiteCenter.OpenIddict; + +/* Creates initial data that is needed to property run the application + * and make client-to-server communication possible. + */ +public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDependency +{ + private readonly IConfiguration _configuration; + private readonly IOpenIddictApplicationRepository _openIddictApplicationRepository; + private readonly IAbpApplicationManager _applicationManager; + private readonly IOpenIddictScopeRepository _openIddictScopeRepository; + private readonly IOpenIddictScopeManager _scopeManager; + private readonly IPermissionDataSeeder _permissionDataSeeder; + private readonly IStringLocalizer L; + + public OpenIddictDataSeedContributor( + IConfiguration configuration, + IOpenIddictApplicationRepository openIddictApplicationRepository, + IAbpApplicationManager applicationManager, + IOpenIddictScopeRepository openIddictScopeRepository, + IOpenIddictScopeManager scopeManager, + IPermissionDataSeeder permissionDataSeeder, + IStringLocalizer l ) + { + _configuration = configuration; + _openIddictApplicationRepository = openIddictApplicationRepository; + _applicationManager = applicationManager; + _openIddictScopeRepository = openIddictScopeRepository; + _scopeManager = scopeManager; + _permissionDataSeeder = permissionDataSeeder; + L = l; + } + + [UnitOfWork] + public virtual async Task SeedAsync(DataSeedContext context) + { + await CreateScopesAsync(); + await CreateApplicationsAsync(); + } + + private async Task CreateScopesAsync() + { + if (await _openIddictScopeRepository.FindByNameAsync("AuthSiteCenter") == null) + { + await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor { + Name = "AuthSiteCenter", DisplayName = "AuthSiteCenter API", Resources = { "AuthSiteCenter" } + }); + } + } + + private async Task CreateApplicationsAsync() + { + var commonScopes = new List { + OpenIddictConstants.Permissions.Scopes.Address, + OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, + OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles, + "AuthSiteCenter" + }; + + var configurationSection = _configuration.GetSection("OpenIddict:Applications"); + + //Web Client + var webClientId = configurationSection["AuthSiteCenter_Web:ClientId"]; + if (!webClientId.IsNullOrWhiteSpace()) + { + var webClientRootUrl = configurationSection["AuthSiteCenter_Web:RootUrl"].EnsureEndsWith('/'); + + /* AuthSiteCenter_Web client is only needed if you created a tiered + * solution. Otherwise, you can delete this client. */ + await CreateApplicationAsync( + name: webClientId!, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Web Application", + secret: configurationSection["AuthSiteCenter_Web:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{webClientRootUrl}signin-oidc", + clientUri: webClientRootUrl, + postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc" + ); + } + + //Console Test / Angular Client + var consoleAndAngularClientId = configurationSection["AuthSiteCenter_App:ClientId"]; + if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) + { + var consoleAndAngularClientRootUrl = configurationSection["AuthSiteCenter_App:RootUrl"]?.TrimEnd('/'); + await CreateApplicationAsync( + name: consoleAndAngularClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Console Test / Angular Application", + secret: null, + grantTypes: new List { + OpenIddictConstants.GrantTypes.AuthorizationCode, + OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.RefreshToken + }, + scopes: commonScopes, + redirectUri: consoleAndAngularClientRootUrl, + clientUri: consoleAndAngularClientRootUrl, + postLogoutRedirectUri: consoleAndAngularClientRootUrl + ); + } + + // Blazor Client + var blazorClientId = configurationSection["AuthSiteCenter_Blazor:ClientId"]; + if (!blazorClientId.IsNullOrWhiteSpace()) + { + var blazorRootUrl = configurationSection["AuthSiteCenter_Blazor:RootUrl"]?.TrimEnd('/'); + + await CreateApplicationAsync( + name: blazorClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Application", + secret: null, + grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, }, + scopes: commonScopes, + redirectUri: $"{blazorRootUrl}/authentication/login-callback", + clientUri: blazorRootUrl, + postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback" + ); + } + + // Blazor Server Tiered Client + var blazorServerTieredClientId = configurationSection["AuthSiteCenter_BlazorServerTiered:ClientId"]; + if (!blazorServerTieredClientId.IsNullOrWhiteSpace()) + { + var blazorServerTieredRootUrl = + configurationSection["AuthSiteCenter_BlazorServerTiered:RootUrl"].EnsureEndsWith('/'); + + await CreateApplicationAsync( + name: blazorServerTieredClientId!, + type: OpenIddictConstants.ClientTypes.Confidential, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Blazor Server Application", + secret: configurationSection["AuthSiteCenter_BlazorServerTiered:ClientSecret"] ?? "1q2w3e*", + grantTypes: new List //Hybrid flow + { + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit + }, + scopes: commonScopes, + redirectUri: $"{blazorServerTieredRootUrl}signin-oidc", + clientUri: blazorServerTieredRootUrl, + postLogoutRedirectUri: $"{blazorServerTieredRootUrl}signout-callback-oidc" + ); + } + + // Swagger Client + var swaggerClientId = configurationSection["AuthSiteCenter_Swagger:ClientId"]; + if (!swaggerClientId.IsNullOrWhiteSpace()) + { + var swaggerRootUrl = configurationSection["AuthSiteCenter_Swagger:RootUrl"]?.TrimEnd('/'); + + await CreateApplicationAsync( + name: swaggerClientId!, + type: OpenIddictConstants.ClientTypes.Public, + consentType: OpenIddictConstants.ConsentTypes.Implicit, + displayName: "Swagger Application", + secret: null, + grantTypes: new List { OpenIddictConstants.GrantTypes.AuthorizationCode, }, + scopes: commonScopes, + redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html", + clientUri: swaggerRootUrl + ); + } + } + + private async Task CreateApplicationAsync( + [NotNull] string name, + [NotNull] string type, + [NotNull] string consentType, + string displayName, + string? secret, + List grantTypes, + List scopes, + string? clientUri = null, + string? redirectUri = null, + string? postLogoutRedirectUri = null, + List? permissions = null) + { + if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public, + StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]); + } + + if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential, + StringComparison.OrdinalIgnoreCase)) + { + throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]); + } + + var client = await _openIddictApplicationRepository.FindByClientIdAsync(name); + + var application = new AbpApplicationDescriptor { + ClientId = name, + Type = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName, + ClientUri = clientUri, + }; + + Check.NotNullOrEmpty(grantTypes, nameof(grantTypes)); + Check.NotNullOrEmpty(scopes, nameof(scopes)); + + if (new[] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All( + grantTypes.Contains)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken); + + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken); + } + } + + if (!redirectUri.IsNullOrWhiteSpace() || !postLogoutRedirectUri.IsNullOrWhiteSpace()) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout); + } + + var buildInGrantTypes = new[] { + OpenIddictConstants.GrantTypes.Implicit, OpenIddictConstants.GrantTypes.Password, + OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.ClientCredentials, + OpenIddictConstants.GrantTypes.DeviceCode, OpenIddictConstants.GrantTypes.RefreshToken + }; + + foreach (var grantType in grantTypes) + { + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization); + } + + if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode || + grantType == OpenIddictConstants.GrantTypes.ClientCredentials || + grantType == OpenIddictConstants.GrantTypes.Password || + grantType == OpenIddictConstants.GrantTypes.RefreshToken || + grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Revocation); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Introspection); + } + + if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit); + } + + if (grantType == OpenIddictConstants.GrantTypes.Password) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password); + } + + if (grantType == OpenIddictConstants.GrantTypes.RefreshToken) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken); + } + + if (grantType == OpenIddictConstants.GrantTypes.DeviceCode) + { + application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.DeviceCode); + application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Device); + } + + if (grantType == OpenIddictConstants.GrantTypes.Implicit) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken); + if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken); + application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token); + } + } + + if (!buildInGrantTypes.Contains(grantType)) + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.GrantType + grantType); + } + } + + var buildInScopes = new[] { + OpenIddictConstants.Permissions.Scopes.Address, OpenIddictConstants.Permissions.Scopes.Email, + OpenIddictConstants.Permissions.Scopes.Phone, OpenIddictConstants.Permissions.Scopes.Profile, + OpenIddictConstants.Permissions.Scopes.Roles + }; + + foreach (var scope in scopes) + { + if (buildInScopes.Contains(scope)) + { + application.Permissions.Add(scope); + } + else + { + application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope); + } + } + + if (redirectUri != null) + { + if (!redirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidRedirectUri", redirectUri]); + } + + if (application.RedirectUris.All(x => x != uri)) + { + application.RedirectUris.Add(uri); + } + } + } + + if (postLogoutRedirectUri != null) + { + if (!postLogoutRedirectUri.IsNullOrEmpty()) + { + if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || + !uri.IsWellFormedOriginalString()) + { + throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]); + } + + if (application.PostLogoutRedirectUris.All(x => x != uri)) + { + application.PostLogoutRedirectUris.Add(uri); + } + } + } + + if (permissions != null) + { + await _permissionDataSeeder.SeedAsync( + ClientPermissionValueProvider.ProviderName, + name, + permissions, + null + ); + } + + if (client == null) + { + await _applicationManager.CreateAsync(application); + return; + } + + if (!HasSameRedirectUris(client, application)) + { + client.RedirectUris = JsonSerializer.Serialize(application.RedirectUris.Select(q => q.ToString().TrimEnd('/'))); + client.PostLogoutRedirectUris = JsonSerializer.Serialize(application.PostLogoutRedirectUris.Select(q => q.ToString().TrimEnd('/'))); + + await _applicationManager.UpdateAsync(client.ToModel()); + } + + if (!HasSameScopes(client, application)) + { + client.Permissions = JsonSerializer.Serialize(application.Permissions.Select(q => q.ToString())); + await _applicationManager.UpdateAsync(client.ToModel()); + } + } + + private bool HasSameRedirectUris(OpenIddictApplication existingClient, AbpApplicationDescriptor application) + { + return existingClient.RedirectUris == JsonSerializer.Serialize(application.RedirectUris.Select(q => q.ToString().TrimEnd('/'))); + } + + private bool HasSameScopes(OpenIddictApplication existingClient, AbpApplicationDescriptor application) + { + return existingClient.Permissions == JsonSerializer.Serialize(application.Permissions.Select(q => q.ToString().TrimEnd('/'))); + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Properties/AssemblyInfo.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..5eed880da --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Properties/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("WinIn.FasterZ.AuthSiteCenter.Domain.Tests")] +[assembly:InternalsVisibleToAttribute("WinIn.FasterZ.AuthSiteCenter.TestBase")] diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettingDefinitionProvider.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettingDefinitionProvider.cs new file mode 100644 index 000000000..cb197369a --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettingDefinitionProvider.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Settings; + +namespace WinIn.FasterZ.AuthSiteCenter.Settings; + +public class AuthSiteCenterSettingDefinitionProvider : SettingDefinitionProvider +{ + public override void Define(ISettingDefinitionContext context) + { + //Define your own settings here. Example: + //context.Add(new SettingDefinition(AuthSiteCenterSettings.MySetting1)); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettings.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettings.cs new file mode 100644 index 000000000..00ef8ebad --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/Settings/AuthSiteCenterSettings.cs @@ -0,0 +1,9 @@ +namespace WinIn.FasterZ.AuthSiteCenter.Settings; + +public static class AuthSiteCenterSettings +{ + private const string Prefix = "AuthSiteCenter"; + + //Add your own setting names here. Example: + //public const string MySetting1 = Prefix + ".MySetting1"; +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/WinIn.FasterZ.AuthSiteCenter.Domain.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/WinIn.FasterZ.AuthSiteCenter.Domain.csproj new file mode 100644 index 000000000..23a14695c --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Domain/WinIn.FasterZ.AuthSiteCenter.Domain.csproj @@ -0,0 +1,28 @@ + + + + + + net7.0 + enable + WinIn.FasterZ.AuthSiteCenter + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContext.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContext.cs new file mode 100644 index 000000000..eca7674b1 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContext.cs @@ -0,0 +1,86 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.AuditLogging.EntityFrameworkCore; +using Volo.Abp.BackgroundJobs.EntityFrameworkCore; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; +using Volo.Abp.Identity; +using Volo.Abp.Identity.EntityFrameworkCore; +using Volo.Abp.OpenIddict.EntityFrameworkCore; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.TenantManagement; +using Volo.Abp.TenantManagement.EntityFrameworkCore; + +namespace WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; + +[ReplaceDbContext(typeof(IIdentityDbContext))] +[ReplaceDbContext(typeof(ITenantManagementDbContext))] +[ConnectionStringName("Default")] +public class AuthSiteCenterDbContext : + AbpDbContext, + IIdentityDbContext, + ITenantManagementDbContext +{ + /* Add DbSet properties for your Aggregate Roots / Entities here. */ + + #region Entities from the modules + + /* Notice: We only implemented IIdentityDbContext and ITenantManagementDbContext + * and replaced them for this DbContext. This allows you to perform JOIN + * queries for the entities of these modules over the repositories easily. You + * typically don't need that for other modules. But, if you need, you can + * implement the DbContext interface of the needed module and use ReplaceDbContext + * attribute just like IIdentityDbContext and ITenantManagementDbContext. + * + * More info: Replacing a DbContext of a module ensures that the related module + * uses this DbContext on runtime. Otherwise, it will use its own DbContext class. + */ + + //Identity + public DbSet Users { get; set; } + public DbSet Roles { get; set; } + public DbSet ClaimTypes { get; set; } + public DbSet OrganizationUnits { get; set; } + public DbSet SecurityLogs { get; set; } + public DbSet LinkUsers { get; set; } + public DbSet UserDelegations { get; set; } + + // Tenant Management + public DbSet Tenants { get; set; } + public DbSet TenantConnectionStrings { get; set; } + + #endregion + + public AuthSiteCenterDbContext(DbContextOptions options) + : base(options) + { + + } + + protected override void OnModelCreating(ModelBuilder builder) + { + base.OnModelCreating(builder); + + /* Include modules to your migration db context */ + + builder.ConfigurePermissionManagement(); + builder.ConfigureSettingManagement(); + builder.ConfigureBackgroundJobs(); + builder.ConfigureAuditLogging(); + builder.ConfigureIdentity(); + builder.ConfigureOpenIddict(); + builder.ConfigureFeatureManagement(); + builder.ConfigureTenantManagement(); + + /* Configure your own tables/entities inside here */ + + //builder.Entity(b => + //{ + // b.ToTable(AuthSiteCenterConsts.DbTablePrefix + "YourEntities", AuthSiteCenterConsts.DbSchema); + // b.ConfigureByConvention(); //auto configure for the base class props + // //... + //}); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContextFactory.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContextFactory.cs new file mode 100644 index 000000000..39b48c2ea --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterDbContextFactory.cs @@ -0,0 +1,33 @@ +using System; +using System.IO; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; + +/* This class is needed for EF Core console commands + * (like Add-Migration and Update-Database commands) */ +public class AuthSiteCenterDbContextFactory : IDesignTimeDbContextFactory +{ + public AuthSiteCenterDbContext CreateDbContext(string[] args) + { + AuthSiteCenterEfCoreEntityExtensionMappings.Configure(); + + var configuration = BuildConfiguration(); + + var builder = new DbContextOptionsBuilder() + .UseSqlServer(configuration.GetConnectionString("Default")); + + return new AuthSiteCenterDbContext(builder.Options); + } + + private static IConfigurationRoot BuildConfiguration() + { + var builder = new ConfigurationBuilder() + .SetBasePath(Path.Combine(Directory.GetCurrentDirectory(), "../WinIn.FasterZ.AuthSiteCenter.DbMigrator/")) + .AddJsonFile("appsettings.json", optional: false); + + return builder.Build(); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEfCoreEntityExtensionMappings.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEfCoreEntityExtensionMappings.cs new file mode 100644 index 000000000..b2acbcf3a --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEfCoreEntityExtensionMappings.cs @@ -0,0 +1,44 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.Identity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.Threading; + +namespace WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; + +public static class AuthSiteCenterEfCoreEntityExtensionMappings +{ + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public static void Configure() + { + AuthSiteCenterGlobalFeatureConfigurator.Configure(); + AuthSiteCenterModuleExtensionConfigurator.Configure(); + + OneTimeRunner.Run(() => + { + /* You can configure extra properties for the + * entities defined in the modules used by your application. + * + * This class can be used to map these extra properties to table fields in the database. + * + * USE THIS CLASS ONLY TO CONFIGURE EF CORE RELATED MAPPING. + * USE AuthSiteCenterModuleExtensionConfigurator CLASS (in the Domain.Shared project) + * FOR A HIGH LEVEL API TO DEFINE EXTRA PROPERTIES TO ENTITIES OF THE USED MODULES + * + * Example: Map a property to a table field: + + ObjectExtensionManager.Instance + .MapEfCoreProperty( + "MyProperty", + (entityBuilder, propertyBuilder) => + { + propertyBuilder.HasMaxLength(128); + } + ); + + * See the documentation for more: + * https://docs.abp.io/en/abp/latest/Customizing-Application-Modules-Extending-Entities + */ + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEntityFrameworkCoreModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEntityFrameworkCoreModule.cs new file mode 100644 index 000000000..3fed75696 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/AuthSiteCenterEntityFrameworkCoreModule.cs @@ -0,0 +1,54 @@ +using System; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Uow; +using Volo.Abp.AuditLogging.EntityFrameworkCore; +using Volo.Abp.BackgroundJobs.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.SqlServer; +using Volo.Abp.FeatureManagement.EntityFrameworkCore; +using Volo.Abp.Identity.EntityFrameworkCore; +using Volo.Abp.Modularity; +using Volo.Abp.OpenIddict.EntityFrameworkCore; +using Volo.Abp.PermissionManagement.EntityFrameworkCore; +using Volo.Abp.SettingManagement.EntityFrameworkCore; +using Volo.Abp.TenantManagement.EntityFrameworkCore; + +namespace WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; + +[DependsOn( + typeof(AuthSiteCenterDomainModule), + typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpOpenIddictEntityFrameworkCoreModule), + typeof(AbpPermissionManagementEntityFrameworkCoreModule), + typeof(AbpSettingManagementEntityFrameworkCoreModule), + typeof(AbpEntityFrameworkCoreSqlServerModule), + typeof(AbpBackgroundJobsEntityFrameworkCoreModule), + typeof(AbpAuditLoggingEntityFrameworkCoreModule), + typeof(AbpTenantManagementEntityFrameworkCoreModule), + typeof(AbpFeatureManagementEntityFrameworkCoreModule) + )] +public class AuthSiteCenterEntityFrameworkCoreModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + AuthSiteCenterEfCoreEntityExtensionMappings.Configure(); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddAbpDbContext(options => + { + /* Remove "includeAllEntities: true" to create + * default repositories only for aggregate roots */ + options.AddDefaultRepositories(includeAllEntities: true); + }); + + Configure(options => + { + /* The main point to change your DBMS. + * See also AuthSiteCenterMigrationsDbContextFactory for EF Core tooling. */ + options.UseSqlServer(); + }); + + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreAuthSiteCenterDbSchemaMigrator.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreAuthSiteCenterDbSchemaMigrator.cs new file mode 100644 index 000000000..32ff944d0 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/EntityFrameworkCore/EntityFrameworkCoreAuthSiteCenterDbSchemaMigrator.cs @@ -0,0 +1,34 @@ +using System; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.DependencyInjection; +using WinIn.FasterZ.AuthSiteCenter.Data; +using Volo.Abp.DependencyInjection; + +namespace WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; + +public class EntityFrameworkCoreAuthSiteCenterDbSchemaMigrator + : IAuthSiteCenterDbSchemaMigrator, ITransientDependency +{ + private readonly IServiceProvider _serviceProvider; + + public EntityFrameworkCoreAuthSiteCenterDbSchemaMigrator( + IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + public async Task MigrateAsync() + { + /* We intentionally resolving the AuthSiteCenterDbContext + * from IServiceProvider (instead of directly injecting it) + * to properly get the connection string of the current tenant in the + * current scope. + */ + + await _serviceProvider + .GetRequiredService() + .Database + .MigrateAsync(); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.Designer.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.Designer.cs new file mode 100644 index 000000000..31c6b3e4d --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.Designer.cs @@ -0,0 +1,1870 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; +using WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; + +#nullable disable + +namespace WinIn.FasterZ.AuthSiteCenter.Migrations +{ + [DbContext(typeof(AuthSiteCenterDbContext))] + [Migration("20230908213846_Initial")] + partial class Initial + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ClientUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("nvarchar(max)"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.cs new file mode 100644 index 000000000..eda3d505f --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/20230908213846_Initial.cs @@ -0,0 +1,1084 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace WinIn.FasterZ.AuthSiteCenter.Migrations +{ + /// + public partial class Initial : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "AbpAuditLogs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + UserId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ImpersonatorUserId = table.Column(type: "uniqueidentifier", nullable: true), + ImpersonatorUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ImpersonatorTenantId = table.Column(type: "uniqueidentifier", nullable: true), + ImpersonatorTenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ExecutionTime = table.Column(type: "datetime2", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + HttpMethod = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), + Url = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + Exceptions = table.Column(type: "nvarchar(max)", nullable: true), + Comments = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + HttpStatusCode = table.Column(type: "int", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpBackgroundJobs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + JobName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + JobArgs = table.Column(type: "nvarchar(max)", maxLength: 1048576, nullable: false), + TryCount = table.Column(type: "smallint", nullable: false, defaultValue: (short)0), + CreationTime = table.Column(type: "datetime2", nullable: false), + NextTryTime = table.Column(type: "datetime2", nullable: false), + LastTryTime = table.Column(type: "datetime2", nullable: true), + IsAbandoned = table.Column(type: "bit", nullable: false, defaultValue: false), + Priority = table.Column(type: "tinyint", nullable: false, defaultValue: (byte)15), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpBackgroundJobs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpClaimTypes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Required = table.Column(type: "bit", nullable: false), + IsStatic = table.Column(type: "bit", nullable: false), + Regex = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + RegexDescription = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ValueType = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatureGroups", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureGroups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatures", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Description = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + DefaultValue = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + IsVisibleToClients = table.Column(type: "bit", nullable: false), + IsAvailableToHost = table.Column(type: "bit", nullable: false), + AllowedProviders = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ValueType = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatures", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpFeatureValues", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Value = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpLinkUsers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + SourceTenantId = table.Column(type: "uniqueidentifier", nullable: true), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetTenantId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpLinkUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnits", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ParentId = table.Column(type: "uniqueidentifier", nullable: true), + Code = table.Column(type: "nvarchar(95)", maxLength: 95, nullable: false), + DisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnits", x => x.Id); + table.ForeignKey( + name: "FK_AbpOrganizationUnits_AbpOrganizationUnits_ParentId", + column: x => x.ParentId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGrants", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissionGroups", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissionGroups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpPermissions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + GroupName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ParentName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + DisplayName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsEnabled = table.Column(type: "bit", nullable: false), + MultiTenancySide = table.Column(type: "tinyint", nullable: false), + Providers = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + StateCheckers = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpPermissions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpRoles", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Name = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsDefault = table.Column(type: "bit", nullable: false), + IsStatic = table.Column(type: "bit", nullable: false), + IsPublic = table.Column(type: "bit", nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSecurityLogs", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ApplicationName = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + Identity = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + Action = table.Column(type: "nvarchar(96)", maxLength: 96, nullable: true), + UserId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + TenantName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + CorrelationId = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ClientIpAddress = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + BrowserInfo = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpSettings", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + Value = table.Column(type: "nvarchar(2048)", maxLength: 2048, nullable: false), + ProviderName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + ProviderKey = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpSettings", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpTenants", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenants", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpUserDelegations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + SourceUserId = table.Column(type: "uniqueidentifier", nullable: false), + TargetUserId = table.Column(type: "uniqueidentifier", nullable: false), + StartTime = table.Column(type: "datetime2", nullable: false), + EndTime = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserDelegations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpUsers", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + UserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedUserName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + Surname = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: true), + Email = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + NormalizedEmail = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + EmailConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), + PasswordHash = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + SecurityStamp = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + IsExternal = table.Column(type: "bit", nullable: false, defaultValue: false), + PhoneNumber = table.Column(type: "nvarchar(16)", maxLength: 16, nullable: true), + PhoneNumberConfirmed = table.Column(type: "bit", nullable: false, defaultValue: false), + IsActive = table.Column(type: "bit", nullable: false), + TwoFactorEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), + LockoutEnd = table.Column(type: "datetimeoffset", nullable: true), + LockoutEnabled = table.Column(type: "bit", nullable: false, defaultValue: false), + AccessFailedCount = table.Column(type: "int", nullable: false, defaultValue: 0), + ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false), + EntityVersion = table.Column(type: "int", nullable: false), + LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUsers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictApplications", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Permissions = table.Column(type: "nvarchar(max)", nullable: true), + PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), + Requirements = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ClientUri = table.Column(type: "nvarchar(max)", nullable: true), + LogoUri = table.Column(type: "nvarchar(max)", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictApplications", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictScopes", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Descriptions = table.Column(type: "nvarchar(max)", nullable: true), + DisplayName = table.Column(type: "nvarchar(max)", nullable: true), + DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(200)", maxLength: 200, nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Resources = table.Column(type: "nvarchar(max)", nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictScopes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "AbpAuditLogActions", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), + ServiceName = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: true), + MethodName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true), + Parameters = table.Column(type: "nvarchar(2000)", maxLength: 2000, nullable: true), + ExecutionTime = table.Column(type: "datetime2", nullable: false), + ExecutionDuration = table.Column(type: "int", nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); + table.ForeignKey( + name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityChanges", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + AuditLogId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ChangeTime = table.Column(type: "datetime2", nullable: false), + ChangeType = table.Column(type: "tinyint", nullable: false), + EntityTenantId = table.Column(type: "uniqueidentifier", nullable: true), + EntityId = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + EntityTypeFullName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", + column: x => x.AuditLogId, + principalTable: "AbpAuditLogs", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpOrganizationUnitRoles", + columns: table => new + { + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpOrganizationUnitRoles", x => new { x.OrganizationUnitId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpOrganizationUnits_OrganizationUnitId", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpOrganizationUnitRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpRoleClaims", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpRoleClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpRoleClaims_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpTenantConnectionStrings", + columns: table => new + { + TenantId = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + Value = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpTenantConnectionStrings", x => new { x.TenantId, x.Name }); + table.ForeignKey( + name: "FK_AbpTenantConnectionStrings_AbpTenants_TenantId", + column: x => x.TenantId, + principalTable: "AbpTenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserClaims", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + UserId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ClaimType = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false), + ClaimValue = table.Column(type: "nvarchar(1024)", maxLength: 1024, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserClaims", x => x.Id); + table.ForeignKey( + name: "FK_AbpUserClaims_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserLogins", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + ProviderKey = table.Column(type: "nvarchar(196)", maxLength: 196, nullable: false), + ProviderDisplayName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserLogins", x => new { x.UserId, x.LoginProvider }); + table.ForeignKey( + name: "FK_AbpUserLogins_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserOrganizationUnits", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + OrganizationUnitId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserOrganizationUnits", x => new { x.OrganizationUnitId, x.UserId }); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpOrganizationUnits_OrganizationUnitId", + column: x => x.OrganizationUnitId, + principalTable: "AbpOrganizationUnits", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserOrganizationUnits_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserRoles", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserRoles", x => new { x.UserId, x.RoleId }); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpRoles_RoleId", + column: x => x.RoleId, + principalTable: "AbpRoles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AbpUserRoles_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AbpUserTokens", + columns: table => new + { + UserId = table.Column(type: "uniqueidentifier", nullable: false), + LoginProvider = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false), + Name = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + Value = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); + table.ForeignKey( + name: "FK_AbpUserTokens_AbpUsers_UserId", + column: x => x.UserId, + principalTable: "AbpUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictAuthorizations", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + Scopes = table.Column(type: "nvarchar(max)", nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictAuthorizations", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictAuthorizations_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + }); + + migrationBuilder.CreateTable( + name: "AbpEntityPropertyChanges", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + TenantId = table.Column(type: "uniqueidentifier", nullable: true), + EntityChangeId = table.Column(type: "uniqueidentifier", nullable: false), + NewValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + OriginalValue = table.Column(type: "nvarchar(512)", maxLength: 512, nullable: true), + PropertyName = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), + PropertyTypeFullName = table.Column(type: "nvarchar(64)", maxLength: 64, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); + table.ForeignKey( + name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", + column: x => x.EntityChangeId, + principalTable: "AbpEntityChanges", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "OpenIddictTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationId = table.Column(type: "uniqueidentifier", nullable: true), + AuthorizationId = table.Column(type: "uniqueidentifier", nullable: true), + CreationDate = table.Column(type: "datetime2", nullable: true), + ExpirationDate = table.Column(type: "datetime2", nullable: true), + Payload = table.Column(type: "nvarchar(max)", nullable: true), + Properties = table.Column(type: "nvarchar(max)", nullable: true), + RedemptionDate = table.Column(type: "datetime2", nullable: true), + ReferenceId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), + Status = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Subject = table.Column(type: "nvarchar(400)", maxLength: 400, nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true), + ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true), + CreationTime = table.Column(type: "datetime2", nullable: false), + CreatorId = table.Column(type: "uniqueidentifier", nullable: true), + LastModificationTime = table.Column(type: "datetime2", nullable: true), + LastModifierId = table.Column(type: "uniqueidentifier", nullable: true), + IsDeleted = table.Column(type: "bit", nullable: false, defaultValue: false), + DeleterId = table.Column(type: "uniqueidentifier", nullable: true), + DeletionTime = table.Column(type: "datetime2", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_OpenIddictTokens", x => x.Id); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictApplications_ApplicationId", + column: x => x.ApplicationId, + principalTable: "OpenIddictApplications", + principalColumn: "Id"); + table.ForeignKey( + name: "FK_OpenIddictTokens_OpenIddictAuthorizations_AuthorizationId", + column: x => x.AuthorizationId, + principalTable: "OpenIddictAuthorizations", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_AuditLogId", + table: "AbpAuditLogActions", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_ExecutionTime", + table: "AbpAuditLogActions", + columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", + table: "AbpAuditLogs", + columns: new[] { "TenantId", "UserId", "ExecutionTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpBackgroundJobs_IsAbandoned_NextTryTime", + table: "AbpBackgroundJobs", + columns: new[] { "IsAbandoned", "NextTryTime" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_AuditLogId", + table: "AbpEntityChanges", + column: "AuditLogId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", + table: "AbpEntityChanges", + columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpEntityPropertyChanges_EntityChangeId", + table: "AbpEntityPropertyChanges", + column: "EntityChangeId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureGroups_Name", + table: "AbpFeatureGroups", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatures_GroupName", + table: "AbpFeatures", + column: "GroupName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatures_Name", + table: "AbpFeatures", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", + table: "AbpFeatureValues", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpLinkUsers_SourceUserId_SourceTenantId_TargetUserId_TargetTenantId", + table: "AbpLinkUsers", + columns: new[] { "SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId" }, + unique: true, + filter: "[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", + table: "AbpOrganizationUnitRoles", + columns: new[] { "RoleId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_Code", + table: "AbpOrganizationUnits", + column: "Code"); + + migrationBuilder.CreateIndex( + name: "IX_AbpOrganizationUnits_ParentId", + table: "AbpOrganizationUnits", + column: "ParentId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGrants_TenantId_Name_ProviderName_ProviderKey", + table: "AbpPermissionGrants", + columns: new[] { "TenantId", "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[TenantId] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissionGroups_Name", + table: "AbpPermissionGroups", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_GroupName", + table: "AbpPermissions", + column: "GroupName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpPermissions_Name", + table: "AbpPermissions", + column: "Name", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoleClaims_RoleId", + table: "AbpRoleClaims", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpRoles_NormalizedName", + table: "AbpRoles", + column: "NormalizedName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Action", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Action" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_ApplicationName", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "ApplicationName" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_Identity", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "Identity" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSecurityLogs_TenantId_UserId", + table: "AbpSecurityLogs", + columns: new[] { "TenantId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpSettings_Name_ProviderName_ProviderKey", + table: "AbpSettings", + columns: new[] { "Name", "ProviderName", "ProviderKey" }, + unique: true, + filter: "[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + migrationBuilder.CreateIndex( + name: "IX_AbpTenants_Name", + table: "AbpTenants", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserClaims_UserId", + table: "AbpUserClaims", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserLogins_LoginProvider_ProviderKey", + table: "AbpUserLogins", + columns: new[] { "LoginProvider", "ProviderKey" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserOrganizationUnits_UserId_OrganizationUnitId", + table: "AbpUserOrganizationUnits", + columns: new[] { "UserId", "OrganizationUnitId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUserRoles_RoleId_UserId", + table: "AbpUserRoles", + columns: new[] { "RoleId", "UserId" }); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_Email", + table: "AbpUsers", + column: "Email"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedEmail", + table: "AbpUsers", + column: "NormalizedEmail"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_NormalizedUserName", + table: "AbpUsers", + column: "NormalizedUserName"); + + migrationBuilder.CreateIndex( + name: "IX_AbpUsers_UserName", + table: "AbpUsers", + column: "UserName"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictApplications_ClientId", + table: "OpenIddictApplications", + column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictAuthorizations_ApplicationId_Status_Subject_Type", + table: "OpenIddictAuthorizations", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictScopes_Name", + table: "OpenIddictScopes", + column: "Name"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ApplicationId_Status_Subject_Type", + table: "OpenIddictTokens", + columns: new[] { "ApplicationId", "Status", "Subject", "Type" }); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_AuthorizationId", + table: "OpenIddictTokens", + column: "AuthorizationId"); + + migrationBuilder.CreateIndex( + name: "IX_OpenIddictTokens_ReferenceId", + table: "OpenIddictTokens", + column: "ReferenceId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AbpAuditLogActions"); + + migrationBuilder.DropTable( + name: "AbpBackgroundJobs"); + + migrationBuilder.DropTable( + name: "AbpClaimTypes"); + + migrationBuilder.DropTable( + name: "AbpEntityPropertyChanges"); + + migrationBuilder.DropTable( + name: "AbpFeatureGroups"); + + migrationBuilder.DropTable( + name: "AbpFeatures"); + + migrationBuilder.DropTable( + name: "AbpFeatureValues"); + + migrationBuilder.DropTable( + name: "AbpLinkUsers"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnitRoles"); + + migrationBuilder.DropTable( + name: "AbpPermissionGrants"); + + migrationBuilder.DropTable( + name: "AbpPermissionGroups"); + + migrationBuilder.DropTable( + name: "AbpPermissions"); + + migrationBuilder.DropTable( + name: "AbpRoleClaims"); + + migrationBuilder.DropTable( + name: "AbpSecurityLogs"); + + migrationBuilder.DropTable( + name: "AbpSettings"); + + migrationBuilder.DropTable( + name: "AbpTenantConnectionStrings"); + + migrationBuilder.DropTable( + name: "AbpUserClaims"); + + migrationBuilder.DropTable( + name: "AbpUserDelegations"); + + migrationBuilder.DropTable( + name: "AbpUserLogins"); + + migrationBuilder.DropTable( + name: "AbpUserOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpUserRoles"); + + migrationBuilder.DropTable( + name: "AbpUserTokens"); + + migrationBuilder.DropTable( + name: "OpenIddictScopes"); + + migrationBuilder.DropTable( + name: "OpenIddictTokens"); + + migrationBuilder.DropTable( + name: "AbpEntityChanges"); + + migrationBuilder.DropTable( + name: "AbpTenants"); + + migrationBuilder.DropTable( + name: "AbpOrganizationUnits"); + + migrationBuilder.DropTable( + name: "AbpRoles"); + + migrationBuilder.DropTable( + name: "AbpUsers"); + + migrationBuilder.DropTable( + name: "OpenIddictAuthorizations"); + + migrationBuilder.DropTable( + name: "AbpAuditLogs"); + + migrationBuilder.DropTable( + name: "OpenIddictApplications"); + } + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/AuthSiteCenterDbContextModelSnapshot.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/AuthSiteCenterDbContextModelSnapshot.cs new file mode 100644 index 000000000..42ef6b82c --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Migrations/AuthSiteCenterDbContextModelSnapshot.cs @@ -0,0 +1,1867 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Volo.Abp.EntityFrameworkCore; +using WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; + +#nullable disable + +namespace WinIn.FasterZ.AuthSiteCenter.Migrations +{ + [DbContext(typeof(AuthSiteCenterDbContext))] + partial class AuthSiteCenterDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "7.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)") + .HasColumnName("ApplicationName"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("BrowserInfo"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientId"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ClientIpAddress"); + + b.Property("ClientName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("ClientName"); + + b.Property("Comments") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Comments"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("CorrelationId"); + + b.Property("Exceptions") + .HasColumnType("nvarchar(max)"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("HttpMethod") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("HttpMethod"); + + b.Property("HttpStatusCode") + .HasColumnType("int") + .HasColumnName("HttpStatusCode"); + + b.Property("ImpersonatorTenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorTenantId"); + + b.Property("ImpersonatorTenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("ImpersonatorTenantName"); + + b.Property("ImpersonatorUserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("ImpersonatorUserId"); + + b.Property("ImpersonatorUserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ImpersonatorUserName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("TenantName"); + + b.Property("Url") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Url"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier") + .HasColumnName("UserId"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "ExecutionTime"); + + b.HasIndex("TenantId", "UserId", "ExecutionTime"); + + b.ToTable("AbpAuditLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ExecutionDuration") + .HasColumnType("int") + .HasColumnName("ExecutionDuration"); + + b.Property("ExecutionTime") + .HasColumnType("datetime2") + .HasColumnName("ExecutionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("MethodName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("MethodName"); + + b.Property("Parameters") + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)") + .HasColumnName("Parameters"); + + b.Property("ServiceName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("ServiceName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "ServiceName", "MethodName", "ExecutionTime"); + + b.ToTable("AbpAuditLogActions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AuditLogId") + .HasColumnType("uniqueidentifier") + .HasColumnName("AuditLogId"); + + b.Property("ChangeTime") + .HasColumnType("datetime2") + .HasColumnName("ChangeTime"); + + b.Property("ChangeType") + .HasColumnType("tinyint") + .HasColumnName("ChangeType"); + + b.Property("EntityId") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityId"); + + b.Property("EntityTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("EntityTypeFullName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("EntityTypeFullName"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AuditLogId"); + + b.HasIndex("TenantId", "EntityTypeFullName", "EntityId"); + + b.ToTable("AbpEntityChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EntityChangeId") + .HasColumnType("uniqueidentifier"); + + b.Property("NewValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("NewValue"); + + b.Property("OriginalValue") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)") + .HasColumnName("OriginalValue"); + + b.Property("PropertyName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("PropertyName"); + + b.Property("PropertyTypeFullName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("PropertyTypeFullName"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("EntityChangeId"); + + b.ToTable("AbpEntityPropertyChanges", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.BackgroundJobs.BackgroundJobRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsAbandoned") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("JobArgs") + .IsRequired() + .HasMaxLength(1048576) + .HasColumnType("nvarchar(max)"); + + b.Property("JobName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("LastTryTime") + .HasColumnType("datetime2"); + + b.Property("NextTryTime") + .HasColumnType("datetime2"); + + b.Property("Priority") + .ValueGeneratedOnAdd() + .HasColumnType("tinyint") + .HasDefaultValue((byte)15); + + b.Property("TryCount") + .ValueGeneratedOnAdd() + .HasColumnType("smallint") + .HasDefaultValue((short)0); + + b.HasKey("Id"); + + b.HasIndex("IsAbandoned", "NextTryTime"); + + b.ToTable("AbpBackgroundJobs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ClientUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("nvarchar(max)"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLogAction", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("Actions") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.AuditLog", null) + .WithMany("EntityChanges") + .HasForeignKey("AuditLogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityPropertyChange", b => + { + b.HasOne("Volo.Abp.AuditLogging.EntityChange", null) + .WithMany("PropertyChanges") + .HasForeignKey("EntityChangeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.AuditLog", b => + { + b.Navigation("Actions"); + + b.Navigation("EntityChanges"); + }); + + modelBuilder.Entity("Volo.Abp.AuditLogging.EntityChange", b => + { + b.Navigation("PropertyChanges"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Properties/AssemblyInfo.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..61670416a --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore.Tests")] diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore.csproj new file mode 100644 index 000000000..9babf7579 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore/WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore.csproj @@ -0,0 +1,31 @@ + + + + + + net7.0 + enable + WinIn.FasterZ.AuthSiteCenter + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/AuthSiteCenterHttpApiClientModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/AuthSiteCenterHttpApiClientModule.cs new file mode 100644 index 000000000..f8af28716 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/AuthSiteCenterHttpApiClientModule.cs @@ -0,0 +1,38 @@ +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement; +using Volo.Abp.TenantManagement; +using Volo.Abp.SettingManagement; +using Volo.Abp.VirtualFileSystem; + +namespace WinIn.FasterZ.AuthSiteCenter; + +[DependsOn( + typeof(AuthSiteCenterApplicationContractsModule), + typeof(AbpAccountHttpApiClientModule), + typeof(AbpIdentityHttpApiClientModule), + typeof(AbpPermissionManagementHttpApiClientModule), + typeof(AbpTenantManagementHttpApiClientModule), + typeof(AbpFeatureManagementHttpApiClientModule), + typeof(AbpSettingManagementHttpApiClientModule) +)] +public class AuthSiteCenterHttpApiClientModule : AbpModule +{ + public const string RemoteServiceName = "Default"; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + context.Services.AddHttpClientProxies( + typeof(AuthSiteCenterApplicationContractsModule).Assembly, + RemoteServiceName + ); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client.csproj new file mode 100644 index 000000000..522434288 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client/WinIn.FasterZ.AuthSiteCenter.HttpApi.Client.csproj @@ -0,0 +1,29 @@ + + + + + + netstandard2.0;netstandard2.1;net7.0 + enable + WinIn.FasterZ.AuthSiteCenter + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/AuthSiteCenterHttpApiModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/AuthSiteCenterHttpApiModule.cs new file mode 100644 index 000000000..fc67c2e38 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/AuthSiteCenterHttpApiModule.cs @@ -0,0 +1,41 @@ +using Localization.Resources.AbpUi; +using WinIn.FasterZ.AuthSiteCenter.Localization; +using Volo.Abp.Account; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.HttpApi; +using Volo.Abp.SettingManagement; +using Volo.Abp.TenantManagement; + +namespace WinIn.FasterZ.AuthSiteCenter; + +[DependsOn( + typeof(AuthSiteCenterApplicationContractsModule), + typeof(AbpAccountHttpApiModule), + typeof(AbpIdentityHttpApiModule), + typeof(AbpPermissionManagementHttpApiModule), + typeof(AbpTenantManagementHttpApiModule), + typeof(AbpFeatureManagementHttpApiModule), + typeof(AbpSettingManagementHttpApiModule) + )] +public class AuthSiteCenterHttpApiModule : AbpModule +{ + public override void ConfigureServices(ServiceConfigurationContext context) + { + ConfigureLocalization(); + } + + private void ConfigureLocalization() + { + Configure(options => + { + options.Resources + .Get() + .AddBaseTypes( + typeof(AbpUiResource) + ); + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Controllers/AuthSiteCenterController.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Controllers/AuthSiteCenterController.cs new file mode 100644 index 000000000..56392b2f0 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Controllers/AuthSiteCenterController.cs @@ -0,0 +1,14 @@ +using WinIn.FasterZ.AuthSiteCenter.Localization; +using Volo.Abp.AspNetCore.Mvc; + +namespace WinIn.FasterZ.AuthSiteCenter.Controllers; + +/* Inherit your controllers from this class. + */ +public abstract class AuthSiteCenterController : AbpControllerBase +{ + protected AuthSiteCenterController() + { + LocalizationResource = typeof(AuthSiteCenterResource); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Models/Test/TestModel.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Models/Test/TestModel.cs new file mode 100644 index 000000000..83ba174e3 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/Models/Test/TestModel.cs @@ -0,0 +1,10 @@ +using System; + +namespace WinIn.FasterZ.AuthSiteCenter.Models.Test; + +public class TestModel +{ + public string Name { get; set; } + + public DateTime BirthDate { get; set; } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/WinIn.FasterZ.AuthSiteCenter.HttpApi.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/WinIn.FasterZ.AuthSiteCenter.HttpApi.csproj new file mode 100644 index 000000000..d39a67ec0 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.HttpApi/WinIn.FasterZ.AuthSiteCenter.HttpApi.csproj @@ -0,0 +1,24 @@ + + + + + + net7.0 + enable + WinIn.FasterZ.AuthSiteCenter + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterAutoMapperProfile.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterAutoMapperProfile.cs new file mode 100644 index 000000000..864a42f48 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterAutoMapperProfile.cs @@ -0,0 +1,17 @@ +using AutoMapper; +using Volo.Abp.Identity; +using WinIn.FasterZ.AuthSiteCenter.Web.Controllers; + +namespace WinIn.FasterZ.AuthSiteCenter.Web; + +public class AuthSiteCenterAutoMapperProfile : Profile +{ + public AuthSiteCenterAutoMapperProfile() + { + /* You can configure your AutoMapper mapping configuration here. + * Alternatively, you can split your mapping configurations + * into multiple profile classes for a better organization. */ + + CreateMap(); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterBrandingProvider.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterBrandingProvider.cs new file mode 100644 index 000000000..d8ff3e5c1 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterBrandingProvider.cs @@ -0,0 +1,10 @@ +using Volo.Abp.Ui.Branding; +using Volo.Abp.DependencyInjection; + +namespace WinIn.FasterZ.AuthSiteCenter.Web; + +[Dependency(ReplaceServices = true)] +public class AuthSiteCenterBrandingProvider : DefaultBrandingProvider +{ + public override string AppName => "AuthSiteCenter"; +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebAutoMapperProfile.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebAutoMapperProfile.cs new file mode 100644 index 000000000..be2ba78ed --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebAutoMapperProfile.cs @@ -0,0 +1,11 @@ +using AutoMapper; + +namespace WinIn.FasterZ.AuthSiteCenter.Web; + +public class AuthSiteCenterWebAutoMapperProfile : Profile +{ + public AuthSiteCenterWebAutoMapperProfile() + { + //Define your AutoMapper configuration here for the Web project. + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebModule.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebModule.cs new file mode 100644 index 000000000..a7c6d1f90 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/AuthSiteCenterWebModule.cs @@ -0,0 +1,342 @@ +using System.IO; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using WinIn.FasterZ.AuthSiteCenter.EntityFrameworkCore; +using WinIn.FasterZ.AuthSiteCenter.Localization; +using WinIn.FasterZ.AuthSiteCenter.MultiTenancy; +using WinIn.FasterZ.AuthSiteCenter.Web.Menus; +using Microsoft.OpenApi.Models; +using OpenIddict.Validation.AspNetCore; +using Volo.Abp; +using Volo.Abp.Account.Web; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.Localization; +using Volo.Abp.AspNetCore.Mvc.UI; +using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.Autofac; +using Volo.Abp.AutoMapper; +using Volo.Abp.Caching.StackExchangeRedis; +using Volo.Abp.FeatureManagement; +using Volo.Abp.Identity.Web; +using Volo.Abp.Localization; +using Volo.Abp.Modularity; +using Volo.Abp.PermissionManagement.Web; +using Volo.Abp.SettingManagement.Web; +using Volo.Abp.Swashbuckle; +using Volo.Abp.TenantManagement.Web; +using Volo.Abp.UI.Navigation.Urls; +using Volo.Abp.UI; +using Volo.Abp.UI.Navigation; +using Volo.Abp.VirtualFileSystem; +using Microsoft.AspNetCore.DataProtection; +using StackExchange.Redis; +using System; +using System.Linq; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.Caching; +using Medallion.Threading; +using Medallion.Threading.Redis; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authentication.OpenIdConnect; +using Microsoft.AspNetCore.Http.Features; +using Volo.Abp.Authorization.Permissions; +using WinIn.FasterZ.AuthSiteCenter.Permissions; +using Volo.Abp.AspNetCore.Mvc.AntiForgery; +using Autofac.Core; +using WinIn.FasterZ.Inventory; +using Dy_Exchange; + +namespace WinIn.FasterZ.AuthSiteCenter.Web; + +[DependsOn( + typeof(AuthSiteCenterHttpApiModule), + typeof(AuthSiteCenterApplicationModule), + typeof(AuthSiteCenterEntityFrameworkCoreModule), + typeof(AbpAutofacModule), + typeof(AbpCachingStackExchangeRedisModule), + typeof(AbpIdentityWebModule), + typeof(AbpSettingManagementWebModule), + typeof(AbpAccountWebOpenIddictModule), + typeof(AbpAspNetCoreMvcUiLeptonXLiteThemeModule), + typeof(AbpTenantManagementWebModule), + typeof(AbpAspNetCoreSerilogModule), + + //----------ȨÏÞÌí¼Ó + //typeof(***ApplicationContractsModule), + typeof(Dy_ExchangeApplicationContractsModule), + typeof(AbpSwashbuckleModule) +)] +public class AuthSiteCenterWebModule : AbpModule +{ + public override void PreConfigureServices(ServiceConfigurationContext context) + { + context.Services.PreConfigure(options => + { + options.AddAssemblyResource( + typeof(AuthSiteCenterResource), + typeof(AuthSiteCenterDomainModule).Assembly, + typeof(AuthSiteCenterDomainSharedModule).Assembly, + typeof(AuthSiteCenterApplicationModule).Assembly, + typeof(AuthSiteCenterApplicationContractsModule).Assembly, + typeof(AuthSiteCenterWebModule).Assembly + ); + }); + + PreConfigure(builder => + { + builder.AddValidation(options => + { + options.AddAudiences("AuthSiteCenter Dy_Exchange"); + options.UseLocalServer(); + options.UseAspNetCore(); + }); + }); + + Configure(options => + { + options.AutoValidate = false; + }); + + Configure(options => + { + options.AddMaps(); + }); + + RemoveOnlyHttps(context); + } + + public override void ConfigureServices(ServiceConfigurationContext context) + { + var hostingEnvironment = context.Services.GetHostingEnvironment(); + var configuration = context.Services.GetConfiguration(); + + ConfigureAuthentication(context, configuration); + ConfigureUrls(configuration); + ConfigureBundles(); + ConfigureAutoMapper(); + ConfigureVirtualFileSystem(hostingEnvironment); + ConfigureNavigationServices(); + ConfigureAutoApiControllers(); + ConfigureSwaggerServices(context.Services); + + Configure(options => + { + options.IsJobExecutionEnabled = false; + }); + + Configure(options => + { + options.ValueCountLimit = 5000; // 5000 items max + options.ValueLengthLimit = 1024 * 1024 * 100; // 100MB max len form data + }); + + var redisKeyPrefix = configuration["Redis:KeyPrefix"]; + Configure(options => + { + //options.KeyPrefix = "AuthSiteCenter:"; + options.KeyPrefix = redisKeyPrefix+":"; + }); + + var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName(redisKeyPrefix); + if (!hostingEnvironment.IsDevelopment()) + { + var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); + dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, $"{redisKeyPrefix}-Protection-Keys"); + } + + context.Services.AddSingleton(sp => + { + var connection = ConnectionMultiplexer + .Connect(configuration["Redis:Configuration"]); + return new RedisDistributedSynchronizationProvider(connection.GetDatabase()); + }); + + context.Services.AddCors(options => + { + options.AddDefaultPolicy(builder => + { + builder + .WithOrigins( + configuration["App:CorsOrigins"]? + .Split(",", StringSplitOptions.RemoveEmptyEntries) + .Select(o => o.RemovePostFix("/")) + .ToArray() ?? Array.Empty() + ) + .WithAbpExposedHeaders() + .SetIsOriginAllowedToAllowWildcardSubdomains() + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); + }); + } + + private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) + { + context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + + //×Ô¶¨ÒåȨÏÞ¼ì²éÆ÷ + Configure(options => + { + options.ValueProviders.Clear(); + options.ValueProviders.Add(); + options.ValueProviders.Add(); + options.ValueProviders.Add(); + }); + + context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + options.Authority = configuration["AuthServer:Authority"]; + options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); + options.Audience = "AuthSiteCenter"; + }) + .AddCookie("Cookies"); + } + + private void ConfigureUrls(IConfiguration configuration) + { + Configure(options => + { + options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"]; + options.RedirectAllowedUrls.AddRange(configuration["App:RedirectAllowedUrls"]?.Split(',') ?? Array.Empty()); + }); + } + + private void ConfigureBundles() + { + Configure(options => + { + options.StyleBundles.Configure( + LeptonXLiteThemeBundles.Styles.Global, + bundle => + { + bundle.AddFiles("/global-styles.css"); + } + ); + }); + } + + private void ConfigureAutoMapper() + { + Configure(options => + { + options.AddMaps(); + }); + } + + private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment) + { + if (hostingEnvironment.IsDevelopment()) + { + Configure(options => + { + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}WinIn.FasterZ.AuthSiteCenter.Domain.Shared")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}WinIn.FasterZ.AuthSiteCenter.Domain")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}WinIn.FasterZ.AuthSiteCenter.Application.Contracts")); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, $"..{Path.DirectorySeparatorChar}WinIn.FasterZ.AuthSiteCenter.Application")); + options.FileSets.ReplaceEmbeddedByPhysical(hostingEnvironment.ContentRootPath); + }); + } + } + + private void ConfigureNavigationServices() + { + Configure(options => + { + options.MenuContributors.Add(new AuthSiteCenterMenuContributor()); + }); + } + + private void ConfigureAutoApiControllers() + { + Configure(options => + { + options.ConventionalControllers.Create(typeof(AuthSiteCenterApplicationModule).Assembly); + }); + } + + private void ConfigureSwaggerServices(IServiceCollection services) + { + services.AddAbpSwaggerGen( + options => + { + options.SwaggerDoc("v1", new OpenApiInfo { Title = "AuthSiteCenter API", Version = "v1" }); + options.DocInclusionPredicate((docName, description) => true); + options.CustomSchemaIds(type => type.FullName); + } + ); + } + + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + var app = context.GetApplicationBuilder(); + var env = context.GetEnvironment(); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseAbpRequestLocalization(); + + if (!env.IsDevelopment()) + { + app.UseErrorPage(); + } + + app.UseCorrelationId(); + app.UseStaticFiles(); + app.UseRouting(); + app.UseAuthenticationZ(); + app.UseAbpOpenIddictValidation(); + + if (MultiTenancyConsts.IsEnabled) + { + app.UseMultiTenancy(); + } + + app.UseUnitOfWork(); + app.UseAuthorization(); + + app.UseCors(); + + app.UseSwagger(); + app.UseAbpSwaggerUI(options => + { + options.SwaggerEndpoint("/swagger/v1/swagger.json", "AuthSiteCenter API"); + }); + app.UseAuditing(); + app.UseAbpSerilogEnrichers(); + app.UseConfiguredEndpoints(); + } + + /// + /// È¥µôÖ»ÔÊÐíhttpsµÄÏÞÖÆ + /// + /// + /// + private OpenIddictBuilder RemoveOnlyHttps(ServiceConfigurationContext context) + { + return context.Services.AddOpenIddict() + .AddServer(option => + { + option.SetAccessTokenLifetime(TimeSpan.FromSeconds(7200)); + option.AllowPasswordFlow(); + option.AllowRefreshTokenFlow(); + option.UseAspNetCore() + .DisableTransportSecurityRequirement(); + }); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Components/_ViewImports.cshtml b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Components/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Components/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Controllers/CustAccountController.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Controllers/CustAccountController.cs new file mode 100644 index 000000000..d76d186d7 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Controllers/CustAccountController.cs @@ -0,0 +1,154 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using Volo.Abp; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Identity; +using Newtonsoft.Json; + +namespace WinIn.FasterZ.AuthSiteCenter.Web.Controllers; + +[ApiController] +[Route("CustAccount")] +[AllowAnonymous] +public class CustAccountController : AbpController +{ + private readonly IdentityUserManager _userManager; + private readonly IHttpClientFactory _httpClientFactory; + private IConfiguration _configuration; + + public CustAccountController(IdentityUserManager userManager, IHttpClientFactory httpClientFactory, IConfiguration configuration) + { + _userManager = userManager; + _httpClientFactory = httpClientFactory; + _configuration = configuration; + } + [AllowAnonymous] + [HttpPost("login")] + public async Task LoginAsync([FromBody]LoginInput input) + { + try + { + var client = _httpClientFactory.CreateClient("login"); + client.BaseAddress = new Uri(_configuration["AuthServer:Authority"]); + var dic = new Dictionary + { + {"client_id","AuthSiteCenter_App"}, + {"scope","offline_access AuthSiteCenter Dy_Exchange profile"}, + {"grant_type","password"}, + {"username",input.Name}, + {"password",input.Password}, + }; + var dicStr = dic.Select(m => m.Key + "=" + m.Value).DefaultIfEmpty().Aggregate((m, n) => m + "&" + n); + HttpContent httpContent = new StringContent(dicStr); + httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); + var oauthRep = await client.PostAsync("connect/token", httpContent); + var oauthStr = await oauthRep.Content.ReadAsStringAsync(); + + Console.WriteLine(oauthStr); + + var oauthResult = default(Id4TokenOutput); + if (oauthRep.IsSuccessStatusCode) + { + if (!string.IsNullOrEmpty(oauthStr)) + oauthResult = JsonConvert.DeserializeObject(oauthStr); + } + else + { + if (string.IsNullOrEmpty(oauthStr)) + throw new BusinessException(oauthRep.ReasonPhrase); + } + var user = await _userManager.FindByNameAsync(input.Name); + if (user == null) + { + throw new UserFriendlyException("ç”¨æˆ·åæˆ–密ç é”™è¯¯"); + } + + if (!user.IsActive) + { + throw new UserFriendlyException("用户已é”定"); + } + return await BuildResult(user, oauthResult?.access_token); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } + + #region ç§æœ‰æ–¹æ³• + private async Task BuildResult(IdentityUser user, string token) + { + var roles = await _userManager.GetRolesAsync(user); + if (roles == null || roles.Count == 0) + { + throw new UserFriendlyException("当å‰ç”¨æˆ·æœªåˆ†é…角色"); + } + + var loginOutput = ObjectMapper.Map(user); + loginOutput.token = token; + loginOutput.roles = roles.ToList(); + return loginOutput; + } + #endregion +} + +public class LoginInput : IValidatableObject +{ + /// + /// ç”¨æˆ·åæˆ–者邮箱 + /// + public string? Name { get; set; } + + /// + /// å¯†ç  + /// + public string? Password { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + if (Name.IsNullOrWhiteSpace()) + { + yield return new ValidationResult("Name can not be null", new[] { "Name" }); + } + + if (Password.IsNullOrWhiteSpace()) + { + yield return new ValidationResult("Password can not be null", new[] { "Password" }); + } + } +} + +public class LoginOutput +{ + /// + /// ç”¨æˆ·åæˆ–者邮箱 + /// + public string token { get; set; } + + /// + /// å¯†ç  + /// + public List roles { get; set; } +} + +public class Id4TokenOutput +{ + public string access_token { get; set; } + + public int expires_in { get; set; } + + public string token_type { get; set; } + + public string refresh_token { get; set; } + + public string scope { get; set; } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenuContributor.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenuContributor.cs new file mode 100644 index 000000000..65e47efcb --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenuContributor.cs @@ -0,0 +1,51 @@ +using System.Threading.Tasks; +using WinIn.FasterZ.AuthSiteCenter.Localization; +using WinIn.FasterZ.AuthSiteCenter.MultiTenancy; +using Volo.Abp.Identity.Web.Navigation; +using Volo.Abp.SettingManagement.Web.Navigation; +using Volo.Abp.TenantManagement.Web.Navigation; +using Volo.Abp.UI.Navigation; + +namespace WinIn.FasterZ.AuthSiteCenter.Web.Menus; + +public class AuthSiteCenterMenuContributor : IMenuContributor +{ + public async Task ConfigureMenuAsync(MenuConfigurationContext context) + { + if (context.Menu.Name == StandardMenus.Main) + { + await ConfigureMainMenuAsync(context); + } + } + + private Task ConfigureMainMenuAsync(MenuConfigurationContext context) + { + var administration = context.Menu.GetAdministration(); + var l = context.GetLocalizer(); + + context.Menu.Items.Insert( + 0, + new ApplicationMenuItem( + AuthSiteCenterMenus.Home, + l["Menu:Home"], + "~/", + icon: "fas fa-home", + order: 0 + ) + ); + + if (MultiTenancyConsts.IsEnabled) + { + administration.SetSubItemOrder(TenantManagementMenuNames.GroupName, 1); + } + else + { + administration.TryRemoveMenuItem(TenantManagementMenuNames.GroupName); + } + + administration.SetSubItemOrder(IdentityMenuNames.GroupName, 2); + administration.SetSubItemOrder(SettingManagementMenuNames.GroupName, 3); + + return Task.CompletedTask; + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenus.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenus.cs new file mode 100644 index 000000000..d97e1ad79 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Menus/AuthSiteCenterMenus.cs @@ -0,0 +1,10 @@ +namespace WinIn.FasterZ.AuthSiteCenter.Web.Menus; + +public class AuthSiteCenterMenus +{ + private const string Prefix = "AuthSiteCenter"; + public const string Home = Prefix + ".Home"; + + //Add your menu items here... + +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/AuthSiteCenterPageModel.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/AuthSiteCenterPageModel.cs new file mode 100644 index 000000000..a29f916cb --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/AuthSiteCenterPageModel.cs @@ -0,0 +1,14 @@ +using WinIn.FasterZ.AuthSiteCenter.Localization; +using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; + +namespace WinIn.FasterZ.AuthSiteCenter.Web.Pages; + +/* Inherit your PageModel classes from this class. + */ +public abstract class AuthSiteCenterPageModel : AbpPageModel +{ + protected AuthSiteCenterPageModel() + { + LocalizationResourceType = typeof(AuthSiteCenterResource); + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml new file mode 100644 index 000000000..0caddd9d9 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml @@ -0,0 +1,187 @@ +@page +@using Microsoft.AspNetCore.Mvc.Localization +@using WinIn.FasterZ.AuthSiteCenter.Localization +@using Volo.Abp.Users +@model WinIn.FasterZ.AuthSiteCenter.Web.Pages.IndexModel +@inject IHtmlLocalizer L +@inject ICurrentUser CurrentUser +@section styles { + +} +@section scripts { + +} +
+
+ +

Welcome to the Application

+ +

@L["LongWelcomeMessage"]

+ + @if (!CurrentUser.IsAuthenticated) + { + @L["Login"] + } + +
+
+
+
+
+ +
+
+
+ THE OFFICIAL GUIDE +

Mastering ABP Framework

+

Written by the creator of the ABP Framework, this book will help you gain a complete understanding of the framework and modern web application development techniques.

+ +
+
+
+
+
+
+

Let's improve your application!

+

Here are some links to help you get started:

+
+
+
+
+
+
+
Learn the ABP Framework
+

Explore the compherensive documentation to learn how to build a modern web application.

+ See Documents +
+
+
+
+
Samples
+

See the example projects built with the ABP Framework.

+ All samples +
+
+
+
+
ABP Community
+

Get involved with a vibrant community and become a contributor.

+ Community + Contribute +
+
+
+
+
+
+
ABP Blog
+

Take a look at our recently published articles.

+ See Blog +
+
+
+
+
Github
+

Do you love the ABP Framework? Please give a star to support it!

+

+ Star + Issue + Fork +

+ Request a feature + +
+
+
+
+
Stackoverflow
+

See answers to previously asked questions or ask a new one.

+ Questions + Ask a Question +
+
+
+
+
+ +
+

Meet the ABP Commercial

+

A Complete Web Application Platform Built on the ABP Framework

+
+ +
+
+

+ ABP Commercial is a platform based on the open source ABP framework. It provides pre-built application modules, + rapid application development tooling, professional UI themes, premium support and more. +

+ +
+
+
+
+ Startup Templates + Details +
+
+
+
+
+
+ Application Modules + Details +
+
+
+
+
+
+ Developer
Tools + Details +
+
+
+
+
+
+ UI
Themes + Details +
+
+
+
+
+
+ Premium Support + Details +
+
+
+
+
+
+ Additional Services + Details +
+
+
+
+
+
+ +
diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml.cs new file mode 100644 index 000000000..1ee6e8eec --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.cshtml.cs @@ -0,0 +1,9 @@ +namespace WinIn.FasterZ.AuthSiteCenter.Web.Pages; + +public class IndexModel : AuthSiteCenterPageModel +{ + public void OnGet() + { + + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.css b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.css new file mode 100644 index 000000000..7f8a925bc --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.css @@ -0,0 +1,3 @@ +body { + +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.js b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.js new file mode 100644 index 000000000..32b47c56f --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/Index.js @@ -0,0 +1,3 @@ +$(function () { + abp.log.debug('Index.js initialized!'); +}); diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/_ViewImports.cshtml b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Program.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Program.cs new file mode 100644 index 000000000..6b3322065 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Serilog; +using Serilog.Events; + +namespace WinIn.FasterZ.AuthSiteCenter.Web; + +public class Program +{ + public static async Task Main(string[] args) + { + var configuration = + new ConfigurationBuilder() + .AddJsonFile("serilogsettings.json", false, true) + .Build(); + + Log.Logger = new LoggerConfiguration() + .ReadFrom.Configuration(configuration) + .CreateLogger(); + + try + { + Log.Information("Starting web host."); + var builder = WebApplication.CreateBuilder(args); + builder.Host.AddAppSettingsSecretsJson() + .ConfigureServices((hostContext, services) => { + services.AddHttpClient(); + }) + .UseAutofac() + .UseSerilog(); + await builder.AddApplicationAsync(); + var app = builder.Build(); + await app.InitializeApplicationAsync(); + await app.RunAsync(); + return 0; + } + catch (Exception ex) + { + if (ex is HostAbortedException) + { + throw; + } + + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/AssemblyInfo.cs b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..f9c8784bc --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/AssemblyInfo.cs @@ -0,0 +1,2 @@ +using System.Runtime.CompilerServices; +[assembly:InternalsVisibleToAttribute("WinIn.FasterZ.AuthSiteCenter.Web.Tests")] diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/launchSettings.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/launchSettings.json new file mode 100644 index 000000000..1aadc840d --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + //"iisSettings": { + // "windowsAuthentication": false, + // "anonymousAuthentication": true, + // "iisExpress": { + // "applicationUrl": "https://localhost:44312/", + // "sslPort": 44312 + // } + //}, + "profiles": { + //"IIS Express": { + // "commandName": "IISExpress", + // "launchBrowser": true, + // "environmentVariables": { + // "ASPNETCORE_ENVIRONMENT": "Development" + // } + //}, + "WinIn.FasterZ.AuthSiteCenter.Web": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:60100/" + } + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Views/_ViewImports.cshtml b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Views/_ViewImports.cshtml new file mode 100644 index 000000000..c1da1f5f1 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/Views/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/WinIn.FasterZ.AuthSiteCenter.Web.csproj b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/WinIn.FasterZ.AuthSiteCenter.Web.csproj new file mode 100644 index 000000000..79658c6bb --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/WinIn.FasterZ.AuthSiteCenter.Web.csproj @@ -0,0 +1,66 @@ + + + + + + net7.0 + enable + WinIn.FasterZ.AuthSiteCenter.Web + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + true + true + false + true + WinIn.FasterZ.AuthSiteCenter-4681b4fd-151f-4221-84a4-929d86723e4c + true + + + + + + + + + + + + Always + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/abp.resourcemapping.js b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/abp.resourcemapping.js new file mode 100644 index 000000000..4a2ad4589 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/abp.resourcemapping.js @@ -0,0 +1,11 @@ +module.exports = { + aliases: { + + }, + clean: [ + + ], + mappings: { + + } +}; diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.Development.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.Development.json new file mode 100644 index 000000000..2c63c0851 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.Development.json @@ -0,0 +1,2 @@ +{ +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.json new file mode 100644 index 000000000..117d56e2a --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.json @@ -0,0 +1,22 @@ +{ + "App": { + "SelfUrl": "http://192.168.1.75:60080", + "ClientUrl": "http://192.168.1.75:60080,http://192.168.1.75:60081", + "CorsOrigins": "http://192.168.1.75:60080,http://192.168.1.75:60081", + "RedirectAllowedUrls": "http://192.168.1.75:60080,http://192.168.1.75:60081" + }, + "ConnectionStrings": { + "Default": "Server=.;Database=Dy_FasterZ_Exchange;uid=sa;pwd=sasa;timeout=6000;Encrypt=False;" + }, + "StringEncryption": { + "DefaultPassPhrase": "ybgU8NieQZNjguXe" + }, + "Redis": { + "Configuration": "127.0.0.1:6379", + "KeyPrefix": "WinIn.FasterZ.AuthSiteCenter" + }, + "AuthServer": { + "Authority": "http://192.168.1.75:60080" + }, + "urls": "http://192.168.1.75:60080" +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.secrets.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.secrets.json new file mode 100644 index 000000000..7a73a41bf --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/appsettings.secrets.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package-lock.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package-lock.json new file mode 100644 index 000000000..6f5f410d2 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package-lock.json @@ -0,0 +1,7947 @@ +{ + "name": "my-app", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "my-app", + "version": "1.0.0", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.3.1" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.3.tgz", + "integrity": "sha512-KJCw6OxjQBgNw4QoSoDQOe32bFF9NvHdD09zMVsoCB/GgN66dcbZnk+ldidHcwjLFDPXOuHJMx+TKmno3VgUaQ==", + "dependencies": { + "ansi-colors": "^4.1.1", + "extend-object": "^1.0.0", + "glob": "^7.1.6", + "gulp": "^4.0.2", + "merge-stream": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-2.3.2.tgz", + "integrity": "sha512-V2jj/air+M5A0r7FAfYaCPrALGKGZrT1HtMayqFOFFEJSoxqx4r/0JQ0bEdXlsvhQ3+BiVtNuKG66dTh64nAdQ==", + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1" + } + }, + "node_modules/@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.3.tgz", + "integrity": "sha512-+G2mM/BJWqgGqZFg6GP28PaCtq+YlRmRfg7r0JQ1wkAN9pc11yKm0LRQjFnkcVBzg0A+N2hZqnFbW7wQhwXOHg==", + "dependencies": { + "@abp/aspnetcore.mvc.ui": "~7.2.3", + "@abp/bootstrap": "~7.2.3", + "@abp/bootstrap-datepicker": "~7.2.3", + "@abp/bootstrap-daterangepicker": "~7.2.3", + "@abp/datatables.net-bs5": "~7.2.3", + "@abp/font-awesome": "~7.2.3", + "@abp/jquery-form": "~7.2.3", + "@abp/jquery-validation-unobtrusive": "~7.2.3", + "@abp/lodash": "~7.2.3", + "@abp/luxon": "~7.2.3", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.3", + "@abp/moment": "~7.2.3", + "@abp/select2": "~7.2.3", + "@abp/sweetalert2": "~7.2.3", + "@abp/timeago": "~7.2.3", + "@abp/toastr": "~7.2.3" + } + }, + "node_modules/@abp/bootstrap": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-7.2.3.tgz", + "integrity": "sha512-Z00q1sAwo9PvFSpfFlbbUHPMyghLOzuEuAzz/8nA6tK7WR0KQBS/0zGC0nK9hNwbyZ4FqKwPSznRVwuwrnqyhQ==", + "dependencies": { + "@abp/core": "~7.2.3", + "bootstrap": "^5.1.3" + } + }, + "node_modules/@abp/bootstrap-datepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.3.tgz", + "integrity": "sha512-wiKVXftVrXcjwz0FpshD6P4WW3CNk/4cLH15aaqRjM+J0BigDeH9CczlpVc7jXdn+c8plHIRz0t5tqlUud7dIQ==", + "dependencies": { + "bootstrap-datepicker": "^1.9.0" + } + }, + "node_modules/@abp/bootstrap-daterangepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.3.tgz", + "integrity": "sha512-ChdnXMzHvg+HwrUtw2z6KuqRTqHVOq8qEBai+IPW6PykJSML+tZKzer3jzDIzyHq68OIqom3n3xL0XpcniKMew==", + "dependencies": { + "bootstrap-daterangepicker": "^3.1.0" + } + }, + "node_modules/@abp/core": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-7.2.3.tgz", + "integrity": "sha512-UyKBWwXbKCzKZwV2YJPgP3v2naDFsfJzV+KEHpdgLdPZyrpBhp+bQ80VNVe2HHrD/bLfhM4fu9pCXw6RYZKnvA==", + "dependencies": { + "@abp/utils": "~7.2.3" + } + }, + "node_modules/@abp/datatables.net": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-7.2.3.tgz", + "integrity": "sha512-g+LmRMg4Sk34iU/MN4RpgC/yd8NVEjhVWg/kT+nuWunsnwLHkcfK59KPGXn9ZLktL4VqQYj2WeXbDv8TEbOObg==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "datatables.net": "^1.11.4" + } + }, + "node_modules/@abp/datatables.net-bs5": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.3.tgz", + "integrity": "sha512-TmXTkIX+Vb1O/fER5JeRlWIOZLoSXG4QD3F0ZbebrjgS9k7oSu9igR/VhXBs1m1lvOqcNKv7Y4LTNRAMw+Mi0A==", + "dependencies": { + "@abp/datatables.net": "~7.2.3", + "datatables.net-bs5": "^1.11.4" + } + }, + "node_modules/@abp/font-awesome": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-7.2.3.tgz", + "integrity": "sha512-+4QRhfU08t1MYkmzTPX0B+p+SZQtOqtlDafzeDm5X6fbOlxV1hi97eRWtLtLgLjodjJWztpECWcsTUTgDhExwQ==", + "dependencies": { + "@abp/core": "~7.2.3", + "@fortawesome/fontawesome-free": "^5.15.4" + } + }, + "node_modules/@abp/jquery": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-7.2.3.tgz", + "integrity": "sha512-r/p3D2QlV57YvrGJsLfTuIJGwLSSi5AVFtkmgKyfpyXYOCNb+TVF9sEZOZnoZebX6cT0JRvtUfZ0dk6ZBebAzg==", + "dependencies": { + "@abp/core": "~7.2.3", + "jquery": "~3.6.0" + } + }, + "node_modules/@abp/jquery-form": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-7.2.3.tgz", + "integrity": "sha512-ucdGIZ0sxefakGRei9BJvDuoN16fKsYfpOT70/udw3k7uC3gFJD0AvAlEOEZPsFZhpNoqUKexNMym4lZovqBkg==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "jquery-form": "^4.3.0" + } + }, + "node_modules/@abp/jquery-validation": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-7.2.3.tgz", + "integrity": "sha512-drpE5mXErHQPk/4KChsj3zwNCA4GqNlYquTtHNv9/t5S/NuGqFAkchPV6mRYaiQypcxCndZQNSUEqnWxbuMY0g==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "jquery-validation": "^1.19.3" + } + }, + "node_modules/@abp/jquery-validation-unobtrusive": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.3.tgz", + "integrity": "sha512-Hcf1sqAFRIAYKqvN1pZGed+lazzY1nztvcmQlOOgUquiXRS3QjI3dIvxWw5nekJwUPqMpSfuC1GErQo0KpE1fw==", + "dependencies": { + "@abp/jquery-validation": "~7.2.3", + "jquery-validation-unobtrusive": "^3.2.12" + } + }, + "node_modules/@abp/lodash": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-7.2.3.tgz", + "integrity": "sha512-5KuXPPpa2mkTlUYPR83bUTJUSSGoq9/kFSf9fYC0Wk2mFFeG4mRK6mXwcyHTfYshQe2qxuncxZsJ+4j5uQN9PA==", + "dependencies": { + "@abp/core": "~7.2.3", + "lodash": "^4.17.21" + } + }, + "node_modules/@abp/luxon": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-7.2.3.tgz", + "integrity": "sha512-Y3IT1GbyuNSAzfpGnc5uzjz3Z/nDRUpYiZhoX0XeoQlJ+GyVT/+dytsZbuQBLgEWmQJhk9zxdcITXFT5vrWDcw==", + "dependencies": { + "@abp/core": "~7.2.3", + "luxon": "^2.3.0" + } + }, + "node_modules/@abp/malihu-custom-scrollbar-plugin": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.3.tgz", + "integrity": "sha512-wq9eBrw/bY3wb50v5zuL0qOcVLOT86XN2ZJQj69O/bi2+0WNdLRCqMHhY0kaafb7UIBAlKChKA/xeICwCZxn+w==", + "dependencies": { + "@abp/core": "~7.2.3", + "malihu-custom-scrollbar-plugin": "^3.1.5" + } + }, + "node_modules/@abp/moment": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-7.2.3.tgz", + "integrity": "sha512-pXsOzSom9RZHRGWuVaLIVzSkPayIcWMMmgSyo8T3gtZzZG/QJbpBWT+pug0X8pmV8So4d9E0LjacmODBKLM30A==", + "dependencies": { + "moment": "^2.9.0" + } + }, + "node_modules/@abp/select2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-7.2.3.tgz", + "integrity": "sha512-Cdzl467UftB421W+l8uikGr2NlOsHwxKDxt5yPrF03LEec1MBys5y7UPUV1TEO6l0xwAVi4mW8dXaawyIOSjUA==", + "dependencies": { + "@abp/core": "~7.2.3", + "select2": "^4.0.13" + } + }, + "node_modules/@abp/sweetalert2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-7.2.3.tgz", + "integrity": "sha512-KHZD1YRMN6Z4JxPfXuEwocubooux8nKq6sPNG6RKg+rWpp23Fp8nX/ZngJNywVXSRqzrdEvUAM+92JG7zMwKXw==", + "dependencies": { + "@abp/core": "~7.2.3", + "sweetalert2": "^11.3.6" + } + }, + "node_modules/@abp/timeago": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-7.2.3.tgz", + "integrity": "sha512-7eiibNXJWBGpQnitd/i8aWUNHOkcsuq8fAwBLJWvG8Whhh1nmBEjng0pGhheMqo0xoydefWi1K2uZDg99tKPeQ==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "timeago": "^1.6.7" + } + }, + "node_modules/@abp/toastr": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-7.2.3.tgz", + "integrity": "sha512-2zNMQE6ArRULP6xl+M66/EY83ZrXfNY+sNHUkmZH4uqfGhqR/ijKIQm1quxCLDmUcAjRr1kzu8BCc98pc9tfFw==", + "dependencies": { + "@abp/jquery": "~7.2.3", + "toastr": "^2.1.4" + } + }, + "node_modules/@abp/utils": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-7.2.3.tgz", + "integrity": "sha512-hejxDJhSI9Kor4mS9c/JHHQrW/wLXC/XMOJMUcBVkX/5IQd9GU9EW63oalNQyVA3gz3h5obnb0Qcfdv65wc5Pg==", + "dependencies": { + "just-compare": "^1.3.0" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "dependencies": { + "ansi-wrap": "0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "dependencies": { + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "dependencies": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-initial/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dependencies": { + "is-number": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-last/node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dependencies": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "dependencies": { + "async-done": "^1.2.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "dependencies": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bootstrap": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.1.tgz", + "integrity": "sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/bootstrap-datepicker": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz", + "integrity": "sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg==", + "dependencies": { + "jquery": ">=3.4.0 <4.0.0" + } + }, + "node_modules/bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "dependencies": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "dependencies": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/datatables.net": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.6.tgz", + "integrity": "sha512-rHNcnW+yEP9me82/KmRcid5eKrqPqW3+I/p1TwqCW3c/7GRYYkDyF6aJQOQ9DNS/pw+nyr4BVpjyJ3yoZXiFPg==", + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-bs5": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.13.6.tgz", + "integrity": "sha512-lXroZoXhLhDulp8gvU7y7wBherg38SbLMGXcHwbnj+XXh4Hvy+d67zSPYbrVI3YiRwYq+aCx15G5qmMj7KjYQg==", + "dependencies": { + "datatables.net": ">=1.13.4", + "jquery": ">=1.7" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dependencies": { + "kind-of": "^5.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dependencies": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "node_modules/each-props/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", + "integrity": "sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dependencies": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/findup-sync/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dependencies": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fined/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "dependencies": { + "for-in": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dependencies": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dependencies": { + "sparkles": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dependencies": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dependencies": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "bin": { + "gulp": "bin/gulp.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/gulp-cli/node_modules/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "dependencies": { + "glogg": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "node_modules/jquery-form": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", + "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", + "dependencies": { + "jquery": ">=1.7.2" + } + }, + "node_modules/jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" + }, + "node_modules/jquery-validation": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.19.5.tgz", + "integrity": "sha512-X2SmnPq1mRiDecVYL8edWx+yTBZDyC8ohWXFhXdtqFHgU9Wd4KHkvcbCoIZ0JaSaumzS8s2gXSkP8F7ivg/8ZQ==", + "peerDependencies": { + "jquery": "^1.7 || ^2.0 || ^3.1" + } + }, + "node_modules/jquery-validation-unobtrusive": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", + "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", + "dependencies": { + "jquery": "^3.5.1", + "jquery-validation": ">=1.16" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/just-compare": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.5.1.tgz", + "integrity": "sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw==" + }, + "node_modules/just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "dependencies": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dependencies": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/liftoff/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-iterator/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ==", + "dependencies": { + "jquery-mousewheel": ">=3.0.6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "dependencies": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/matchdep/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/matchdep/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matchdep/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "dependencies": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "dependencies": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "dependencies": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "dependencies": { + "sver-compat": "^1.5.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "dependencies": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/sweetalert2": { + "version": "11.7.27", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.7.27.tgz", + "integrity": "sha512-QbRXGQn1sb7HEhzA/K2xtWIwQHh/qkSbb1w6jYcTql2xy17876lTREEt1D4X6Q0x2wHtfUjKJ+Cb8IVkRoq7DQ==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "dependencies": { + "jquery": ">=1.5.0 <4.0" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "dependencies": { + "jquery": ">=1.12.0" + } + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dependencies": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemap/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + }, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "dependencies": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "node_modules/yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "dependencies": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + }, + "dependencies": { + "@abp/aspnetcore.mvc.ui": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.3.tgz", + "integrity": "sha512-KJCw6OxjQBgNw4QoSoDQOe32bFF9NvHdD09zMVsoCB/GgN66dcbZnk+ldidHcwjLFDPXOuHJMx+TKmno3VgUaQ==", + "requires": { + "ansi-colors": "^4.1.1", + "extend-object": "^1.0.0", + "glob": "^7.1.6", + "gulp": "^4.0.2", + "merge-stream": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.leptonxlite/-/aspnetcore.mvc.ui.theme.leptonxlite-2.3.2.tgz", + "integrity": "sha512-V2jj/air+M5A0r7FAfYaCPrALGKGZrT1HtMayqFOFFEJSoxqx4r/0JQ0bEdXlsvhQ3+BiVtNuKG66dTh64nAdQ==", + "requires": { + "@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1" + } + }, + "@abp/aspnetcore.mvc.ui.theme.shared": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.3.tgz", + "integrity": "sha512-+G2mM/BJWqgGqZFg6GP28PaCtq+YlRmRfg7r0JQ1wkAN9pc11yKm0LRQjFnkcVBzg0A+N2hZqnFbW7wQhwXOHg==", + "requires": { + "@abp/aspnetcore.mvc.ui": "~7.2.3", + "@abp/bootstrap": "~7.2.3", + "@abp/bootstrap-datepicker": "~7.2.3", + "@abp/bootstrap-daterangepicker": "~7.2.3", + "@abp/datatables.net-bs5": "~7.2.3", + "@abp/font-awesome": "~7.2.3", + "@abp/jquery-form": "~7.2.3", + "@abp/jquery-validation-unobtrusive": "~7.2.3", + "@abp/lodash": "~7.2.3", + "@abp/luxon": "~7.2.3", + "@abp/malihu-custom-scrollbar-plugin": "~7.2.3", + "@abp/moment": "~7.2.3", + "@abp/select2": "~7.2.3", + "@abp/sweetalert2": "~7.2.3", + "@abp/timeago": "~7.2.3", + "@abp/toastr": "~7.2.3" + } + }, + "@abp/bootstrap": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap/-/bootstrap-7.2.3.tgz", + "integrity": "sha512-Z00q1sAwo9PvFSpfFlbbUHPMyghLOzuEuAzz/8nA6tK7WR0KQBS/0zGC0nK9hNwbyZ4FqKwPSznRVwuwrnqyhQ==", + "requires": { + "@abp/core": "~7.2.3", + "bootstrap": "^5.1.3" + } + }, + "@abp/bootstrap-datepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.3.tgz", + "integrity": "sha512-wiKVXftVrXcjwz0FpshD6P4WW3CNk/4cLH15aaqRjM+J0BigDeH9CczlpVc7jXdn+c8plHIRz0t5tqlUud7dIQ==", + "requires": { + "bootstrap-datepicker": "^1.9.0" + } + }, + "@abp/bootstrap-daterangepicker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.3.tgz", + "integrity": "sha512-ChdnXMzHvg+HwrUtw2z6KuqRTqHVOq8qEBai+IPW6PykJSML+tZKzer3jzDIzyHq68OIqom3n3xL0XpcniKMew==", + "requires": { + "bootstrap-daterangepicker": "^3.1.0" + } + }, + "@abp/core": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/core/-/core-7.2.3.tgz", + "integrity": "sha512-UyKBWwXbKCzKZwV2YJPgP3v2naDFsfJzV+KEHpdgLdPZyrpBhp+bQ80VNVe2HHrD/bLfhM4fu9pCXw6RYZKnvA==", + "requires": { + "@abp/utils": "~7.2.3" + } + }, + "@abp/datatables.net": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net/-/datatables.net-7.2.3.tgz", + "integrity": "sha512-g+LmRMg4Sk34iU/MN4RpgC/yd8NVEjhVWg/kT+nuWunsnwLHkcfK59KPGXn9ZLktL4VqQYj2WeXbDv8TEbOObg==", + "requires": { + "@abp/jquery": "~7.2.3", + "datatables.net": "^1.11.4" + } + }, + "@abp/datatables.net-bs5": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.3.tgz", + "integrity": "sha512-TmXTkIX+Vb1O/fER5JeRlWIOZLoSXG4QD3F0ZbebrjgS9k7oSu9igR/VhXBs1m1lvOqcNKv7Y4LTNRAMw+Mi0A==", + "requires": { + "@abp/datatables.net": "~7.2.3", + "datatables.net-bs5": "^1.11.4" + } + }, + "@abp/font-awesome": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/font-awesome/-/font-awesome-7.2.3.tgz", + "integrity": "sha512-+4QRhfU08t1MYkmzTPX0B+p+SZQtOqtlDafzeDm5X6fbOlxV1hi97eRWtLtLgLjodjJWztpECWcsTUTgDhExwQ==", + "requires": { + "@abp/core": "~7.2.3", + "@fortawesome/fontawesome-free": "^5.15.4" + } + }, + "@abp/jquery": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery/-/jquery-7.2.3.tgz", + "integrity": "sha512-r/p3D2QlV57YvrGJsLfTuIJGwLSSi5AVFtkmgKyfpyXYOCNb+TVF9sEZOZnoZebX6cT0JRvtUfZ0dk6ZBebAzg==", + "requires": { + "@abp/core": "~7.2.3", + "jquery": "~3.6.0" + } + }, + "@abp/jquery-form": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-form/-/jquery-form-7.2.3.tgz", + "integrity": "sha512-ucdGIZ0sxefakGRei9BJvDuoN16fKsYfpOT70/udw3k7uC3gFJD0AvAlEOEZPsFZhpNoqUKexNMym4lZovqBkg==", + "requires": { + "@abp/jquery": "~7.2.3", + "jquery-form": "^4.3.0" + } + }, + "@abp/jquery-validation": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation/-/jquery-validation-7.2.3.tgz", + "integrity": "sha512-drpE5mXErHQPk/4KChsj3zwNCA4GqNlYquTtHNv9/t5S/NuGqFAkchPV6mRYaiQypcxCndZQNSUEqnWxbuMY0g==", + "requires": { + "@abp/jquery": "~7.2.3", + "jquery-validation": "^1.19.3" + } + }, + "@abp/jquery-validation-unobtrusive": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.3.tgz", + "integrity": "sha512-Hcf1sqAFRIAYKqvN1pZGed+lazzY1nztvcmQlOOgUquiXRS3QjI3dIvxWw5nekJwUPqMpSfuC1GErQo0KpE1fw==", + "requires": { + "@abp/jquery-validation": "~7.2.3", + "jquery-validation-unobtrusive": "^3.2.12" + } + }, + "@abp/lodash": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/lodash/-/lodash-7.2.3.tgz", + "integrity": "sha512-5KuXPPpa2mkTlUYPR83bUTJUSSGoq9/kFSf9fYC0Wk2mFFeG4mRK6mXwcyHTfYshQe2qxuncxZsJ+4j5uQN9PA==", + "requires": { + "@abp/core": "~7.2.3", + "lodash": "^4.17.21" + } + }, + "@abp/luxon": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/luxon/-/luxon-7.2.3.tgz", + "integrity": "sha512-Y3IT1GbyuNSAzfpGnc5uzjz3Z/nDRUpYiZhoX0XeoQlJ+GyVT/+dytsZbuQBLgEWmQJhk9zxdcITXFT5vrWDcw==", + "requires": { + "@abp/core": "~7.2.3", + "luxon": "^2.3.0" + } + }, + "@abp/malihu-custom-scrollbar-plugin": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.3.tgz", + "integrity": "sha512-wq9eBrw/bY3wb50v5zuL0qOcVLOT86XN2ZJQj69O/bi2+0WNdLRCqMHhY0kaafb7UIBAlKChKA/xeICwCZxn+w==", + "requires": { + "@abp/core": "~7.2.3", + "malihu-custom-scrollbar-plugin": "^3.1.5" + } + }, + "@abp/moment": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/moment/-/moment-7.2.3.tgz", + "integrity": "sha512-pXsOzSom9RZHRGWuVaLIVzSkPayIcWMMmgSyo8T3gtZzZG/QJbpBWT+pug0X8pmV8So4d9E0LjacmODBKLM30A==", + "requires": { + "moment": "^2.9.0" + } + }, + "@abp/select2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/select2/-/select2-7.2.3.tgz", + "integrity": "sha512-Cdzl467UftB421W+l8uikGr2NlOsHwxKDxt5yPrF03LEec1MBys5y7UPUV1TEO6l0xwAVi4mW8dXaawyIOSjUA==", + "requires": { + "@abp/core": "~7.2.3", + "select2": "^4.0.13" + } + }, + "@abp/sweetalert2": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/sweetalert2/-/sweetalert2-7.2.3.tgz", + "integrity": "sha512-KHZD1YRMN6Z4JxPfXuEwocubooux8nKq6sPNG6RKg+rWpp23Fp8nX/ZngJNywVXSRqzrdEvUAM+92JG7zMwKXw==", + "requires": { + "@abp/core": "~7.2.3", + "sweetalert2": "^11.3.6" + } + }, + "@abp/timeago": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/timeago/-/timeago-7.2.3.tgz", + "integrity": "sha512-7eiibNXJWBGpQnitd/i8aWUNHOkcsuq8fAwBLJWvG8Whhh1nmBEjng0pGhheMqo0xoydefWi1K2uZDg99tKPeQ==", + "requires": { + "@abp/jquery": "~7.2.3", + "timeago": "^1.6.7" + } + }, + "@abp/toastr": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/toastr/-/toastr-7.2.3.tgz", + "integrity": "sha512-2zNMQE6ArRULP6xl+M66/EY83ZrXfNY+sNHUkmZH4uqfGhqR/ijKIQm1quxCLDmUcAjRr1kzu8BCc98pc9tfFw==", + "requires": { + "@abp/jquery": "~7.2.3", + "toastr": "^2.1.4" + } + }, + "@abp/utils": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@abp/utils/-/utils-7.2.3.tgz", + "integrity": "sha512-hejxDJhSI9Kor4mS9c/JHHQrW/wLXC/XMOJMUcBVkX/5IQd9GU9EW63oalNQyVA3gz3h5obnb0Qcfdv65wc5Pg==", + "requires": { + "just-compare": "^1.3.0" + } + }, + "@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" + }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==" + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", + "requires": { + "async-done": "^1.2.2" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bootstrap": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.1.tgz", + "integrity": "sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g==", + "requires": {} + }, + "bootstrap-datepicker": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/bootstrap-datepicker/-/bootstrap-datepicker-1.10.0.tgz", + "integrity": "sha512-lWxtSYddAQOpbAO8UhYhHLcK6425eWoSjb5JDvZU3ePHEPF6A3eUr51WKaFy4PccU19JRxUG6wEU3KdhtKfvpg==", + "requires": { + "jquery": ">=3.4.0 <4.0.0" + } + }, + "bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "requires": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==" + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" + }, + "copy-props": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", + "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", + "requires": { + "each-props": "^1.3.2", + "is-plain-object": "^5.0.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "datatables.net": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.6.tgz", + "integrity": "sha512-rHNcnW+yEP9me82/KmRcid5eKrqPqW3+I/p1TwqCW3c/7GRYYkDyF6aJQOQ9DNS/pw+nyr4BVpjyJ3yoZXiFPg==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-bs5": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.13.6.tgz", + "integrity": "sha512-lXroZoXhLhDulp8gvU7y7wBherg38SbLMGXcHwbnj+XXh4Hvy+d67zSPYbrVI3YiRwYq+aCx15G5qmMj7KjYQg==", + "requires": { + "datatables.net": ">=1.13.4", + "jquery": ">=1.7" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "requires": { + "kind-of": "^5.0.2" + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==" + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-object": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extend-object/-/extend-object-1.0.0.tgz", + "integrity": "sha512-0dHDIXC7y7LDmCh/lp1oYkmv73K25AMugQI07r8eFopkW6f7Ufn1q+ETMsJjnV9Am14SlElkqy3O92r6xEaxPw==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + }, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "requires": { + "ansi-wrap": "^0.1.0" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", + "requires": { + "glogg": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "jquery": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", + "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==" + }, + "jquery-form": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jquery-form/-/jquery-form-4.3.0.tgz", + "integrity": "sha512-q3uaVCEWdLOYUCI6dpNdwf/7cJFOsUgdpq6r0taxtGQ5NJSkOzofyWm4jpOuJ5YxdmL1FI5QR+q+HB63HHLGnQ==", + "requires": { + "jquery": ">=1.7.2" + } + }, + "jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" + }, + "jquery-validation": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.19.5.tgz", + "integrity": "sha512-X2SmnPq1mRiDecVYL8edWx+yTBZDyC8ohWXFhXdtqFHgU9Wd4KHkvcbCoIZ0JaSaumzS8s2gXSkP8F7ivg/8ZQ==", + "requires": {} + }, + "jquery-validation-unobtrusive": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-3.2.12.tgz", + "integrity": "sha512-kPixGhVcuat7vZXngGFfSIksy4VlzZcHyRgnBIZdsfVneCU+D5sITC8T8dD/9c9K/Q+qkMlgp7ufJHz93nKSuQ==", + "requires": { + "jquery": "^3.5.1", + "jquery-validation": ">=1.16" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "just-compare": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/just-compare/-/just-compare-1.5.1.tgz", + "integrity": "sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw==" + }, + "just-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", + "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==" + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "luxon": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==" + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "malihu-custom-scrollbar-plugin": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-3.1.5.tgz", + "integrity": "sha512-lwW3LgI+CNDMPnP4ED2la6oYxWMkCXlnhex+s2wuOLhFDFGnGmQuTQVdRK9bvDLpxs10sGlfErVufJy9ztfgJQ==", + "requires": { + "jquery-mousewheel": ">=3.0.6" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "requires": { + "pinkie": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "requires": { + "ret": "~0.1.10" + } + }, + "select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "sweetalert2": { + "version": "11.7.27", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.7.27.tgz", + "integrity": "sha512-QbRXGQn1sb7HEhzA/K2xtWIwQHh/qkSbb1w6jYcTql2xy17876lTREEt1D4X6Q0x2wHtfUjKJ+Cb8IVkRoq7DQ==" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==" + }, + "timeago": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/timeago/-/timeago-1.6.7.tgz", + "integrity": "sha512-FikcjN98+ij0siKH4VO4dZ358PR3oDDq4Vdl1+sN9gWz1/+JXGr3uZbUShYH/hL7bMhcTpPbplJU5Tej4b4jbQ==", + "requires": { + "jquery": ">=1.5.0 <4.0" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "requires": { + "through2": "^2.0.3" + } + }, + "toastr": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", + "integrity": "sha512-LIy77F5n+sz4tefMmFOntcJ6HL0Fv3k1TDnNmFZ0bU/GcvIIfy6eG2v7zQmMiYgaalAiUv75ttFrPn5s0gyqlA==", + "requires": { + "jquery": ">=1.12.0" + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==" + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "yargs": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.1" + } + }, + "yargs-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } +} diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package.json new file mode 100644 index 000000000..c40a4c68e --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/package.json @@ -0,0 +1,8 @@ +{ + "version": "1.0.0", + "name": "my-app", + "private": true, + "dependencies": { + "@abp/aspnetcore.mvc.ui.theme.leptonxlite": "~2.3.1" + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/serilogsettings.json b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/serilogsettings.json new file mode 100644 index 000000000..18e39c565 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/serilogsettings.json @@ -0,0 +1,40 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Async", "Serilog.Sinks.Console" ], + "MinimumLevel": { + "Default": "Debug", + "Override": { + "Microsoft": "Information", + "Microsoft.EntityFrameworkCore": "Warning" + } + }, + "WriteTo": [ + { + "Name": "Async", + "Args": { + "configure": [ + { + "Name": "File", + "Args": { + "path": "Logs//log_.log", + "rollingInterval": "Day", + "fileSizeLimitBytes":"10485760", + "rollOnFileSizeLimit":"true", + "restrictedToMinimumLevel": "Debug", + "retainedFileCountLimit": null + } + } + ] + } + }, + { + "Name": "Console", + "Args": { + "restrictedToMinimumLevel": "Debug", + "outputTemplate": "{Timestamp:HH:mm:ss.fff} [{Level:u3}] {Message} {NewLine}{Exception}" + } + } + ], + "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ] + } +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/web.config b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/web.config new file mode 100644 index 000000000..8170f9577 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/web.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/global-styles.css b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/global-styles.css new file mode 100644 index 000000000..74db4bd54 --- /dev/null +++ b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/global-styles.css @@ -0,0 +1,6 @@ +/* Your Global Styles */ + +:root .lpx-brand-logo { + --lpx-logo: url('/images/logo/leptonx/logo-light.png'); + --lpx-logo-icon: url('/images/logo/leptonx/logo-light-thumbnail.png'); +} \ No newline at end of file diff --git a/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png b/InterFaceContorl/WinIn.FasterZ.AuthSiteCenter/src/WinIn.FasterZ.AuthSiteCenter.Web/wwwroot/images/logo/leptonx/logo-dark-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..621596bb5c1a301136d9ee2af5ffe1391a4af776 GIT binary patch literal 17592 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