From ff342a53c00382a70f6814fd5d520e9bb59cbf5b Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Fri, 11 Jul 2025 20:37:28 +0330 Subject: [PATCH] ... --- ...Dto.cs => Read_ConversationResponseDto.cs} | 2 +- Common/Enums/ConversationStatus.cs | 2 +- Common/Enums/ConversationType.cs | 2 +- Common/Models/Auth/AuthResponse.cs | 3 + .../ApplicationServicesRegistration.cs | 28 +- .../Hushian.Application.csproj | 8 +- Hushian.Application/Services/AuthService.cs | 20 +- .../Services/ChatNotificationHub.cs | 9 + .../Services/CompanyService.cs | 3 +- .../Services/ConversationService.cs | 96 +- Hushian.Application/Services/ExperService.cs | 22 +- Hushian.Application/Services/GroupService.cs | 61 +- .../Services/VerificationService.cs | 3 +- Hushian.Domain/Entites/Conversation.cs | 2 +- Hushian.sln | 18 +- .../Hushian.Infrastructure.csproj | 10 + .../InfrastractureServicesRegistration.cs | 27 + .../Infrastructure/MessageSender.cs | 25 + .../Persistence/Hushian.Persistence.csproj | 6 +- .../Hushian.WebApi/ChatNotificationHub.cs | 21 + .../Controllers/v1/AuthController.cs | 53 + .../Controllers/v1/CompanyController.cs | 45 + .../Controllers/v1/ConversationController.cs | 162 + .../Controllers/v1/ExperController.cs | 118 + .../Controllers/v1/GroupController.cs | 119 + .../Controllers/v1/UserController.cs | 11 + .../Controllers/v1/VerificationController.cs | 42 + .../Hushian.WebApi/Hushian.WebApi.csproj | 20 + .../Hushian.WebApi/Hushian.WebApi.http | 6 + Presentation/Hushian.WebApi/Program.cs | 33 + .../Properties/launchSettings.json | 23 + .../appsettings.Development.json | 8 + Presentation/Hushian.WebApi/appsettings.json | 34 + Presentation/HushianWebApp/App.razor | 12 + .../Components/ADDExperComponent.razor | 82 + .../Components/ADDGroupComponent.razor | 66 + .../Components/Base/ChatBubble.razor | 101 + .../Components/ChangePassWordComponent.razor | 66 + .../EditUserYourselfComponent.razor | 106 + .../Components/GroupUsersComponent.razor | 75 + .../Components/UpdateExperComponent.razor | 73 + .../Components/UpdateGroupComponent.razor | 66 + .../Components/UserGroupsComponent.razor | 74 + .../ConversionHistoryComponent.razor | 41 + .../Components/Verification.razor | 128 + .../Data/Dtos/ADDConversationDto.cs | 17 + .../Data/Dtos/ADDConversationItemDto.cs | 21 + .../HushianWebApp/Data/Dtos/ADDGroupDto.cs | 16 + .../HushianWebApp/Data/Dtos/BaseDto.cs | 11 + .../Data/Dtos/Company/AddCompanyDto.cs | 17 + .../Data/Dtos/Company/CompanyDto.cs | 21 + .../Data/Dtos/Company/ContentInfoDto.cs | 14 + .../Data/Dtos/ConversationDto.cs | 28 + .../Data/Dtos/ConversationItemDto.cs | 23 + .../HushianWebApp/Data/Dtos/GroupDto.cs | 18 + .../HushianWebApp/Data/Dtos/IdName.cs | 14 + .../Data/Dtos/Identity/RoleDto.cs | 22 + .../Data/Dtos/Identity/VerificationDto.cs | 18 + .../HushianWebApp/Data/Dtos/PagingDto.cs | 22 + .../Data/Dtos/RegistrationDto.cs | 16 + .../Data/Dtos/User/AddUserDto.cs | 21 + .../Data/Dtos/User/ChangeIsActieUserDto.cs | 14 + .../Data/Dtos/User/ChangePasswordDto.cs | 15 + .../Dtos/User/ChangePasswordFromUserDto.cs | 16 + .../Data/Dtos/User/ChangeRoleUserDto.cs | 15 + .../Data/Dtos/User/ConfirmedCodeDto.cs | 17 + .../Data/Dtos/User/EditUserDto.cs | 17 + .../Data/Dtos/User/EditUserFromUserDto.cs | 18 + .../Data/Dtos/User/ReadUserDto.cs | 18 + .../HushianWebApp/Data/Dtos/UserDto.cs | 14 + .../HushianWebApp/Data/Dtos/condinationDto.cs | 15 + .../Data/Enums/ConversationStatus.cs | 13 + .../Data/Enums/ConversationType.cs | 13 + .../HushianWebApp/Data/Enums/Identity/Cors.cs | 13 + .../Data/Enums/VerificationCodeType.cs | 10 + .../Data/Models/Identity/AuthRequest.cs | 22 + .../Data/Models/Identity/AuthResponse.cs | 16 + .../HushianWebApp/Data/Models/ResponseBase.cs | 14 + .../HushianWebApp/Data/Models/WindowSize.cs | 8 + .../Data/Models/ai/openAi/RequestModel.cs | 16 + .../HushianWebApp/HushianWebApp.csproj | 33 + .../HushianWebApp/Layout/BeforeLayout.razor | 29 + .../HushianWebApp/Layout/EmpLayout.razor | 11 + .../HushianWebApp/Layout/MainLayout.razor | 243 + .../HushianWebApp/Layout/MainLayout.razor.css | 77 + .../HushianWebApp/Layout/NavMenu.razor | 55 + .../Layout/UserPanelLayout.razor | 4 + .../Pages/Auth/ForgetPassword.razor | 101 + .../HushianWebApp/Pages/Auth/Login.razor | 124 + .../HushianWebApp/Pages/Auth/Register.razor | 197 + .../HushianWebApp/Pages/Conversation.razor | 424 ++ .../HushianWebApp/Pages/Error/NotFound.razor | 6 + .../HushianWebApp/Pages/Error/Unhandled.razor | 7 + .../Pages/FromUserSide/ChatBoxComponent.razor | 27 + .../Pages/FromUserSide/GCComponent.razor | 53 + .../Pages/FromUserSide/LoginComponent.razor | 70 + .../Pages/FromUserSide/UserPanel.razor | 243 + Presentation/HushianWebApp/Pages/Home.razor | 7 + .../Pages/Manage/GroupManagement.razor | 153 + .../HushianWebApp/Pages/Manage/Settings.razor | 166 + .../Pages/Manage/UserManagment.razor | 155 + Presentation/HushianWebApp/Program.cs | 21 + .../Properties/launchSettings.json | 25 + .../HushianWebApp/Service/AuthService.cs | 128 + .../HushianWebApp/Service/BaseController.cs | 155 + .../HushianWebApp/Service/CaptchaService.cs | 28 + .../HushianWebApp/Service/CompanyService.cs | 63 + .../Service/ConversationService.cs | 93 + .../HushianWebApp/Service/GroupService.cs | 94 + .../Service/LocalStorageService.cs | 42 + .../HushianWebApp/Service/UserService.cs | 108 + .../Service/VerificationService.cs | 52 + Presentation/HushianWebApp/_Imports.razor | 11 + .../assets/fonts/woff/IRANSansX-Regular.woff | Bin 0 -> 36012 bytes .../Before/assets/images/Hushian-logo.svg | 5 + .../wwwroot/Before/assets/images/Patt.svg | 2354 +++++++++ .../Before/assets/images/refresh-icon.svg | 5 + .../wwwroot/Before/assets/images/top-BG.svg | 163 + .../wwwroot/Before/assets/style/style6249.css | 4193 +++++++++++++++++ .../HushianWebApp/wwwroot/Before/favicon.ico | Bin 0 -> 1150 bytes .../wwwroot/Before/js/site3c3c.js | 30 + .../HushianWebApp/wwwroot/Before/js/vk.js | 174 + .../jquery.validate.unobtrusive.min.js | 8 + .../dist/jquery.validate.min.js | 4 + .../jquery.unobtrusive-ajax.min.js | 16 + .../Before/lib/jquery/dist/jquery.min7b85.js | 2 + .../Before/lib/popperjs/popper.min9c05.js | 6 + .../Before/lib/simple-keyboard/index9ade.js | 13 + .../Before/lib/simple-keyboard/indexb10f.css | 12 + .../Before/lib/sweetalert2/sweetalert.min.css | 943 ++++ .../lib/tippyjs/tippy-bundle.umd.min1222.js | 2 + .../HushianWebApp/wwwroot/background.jpg | Bin 0 -> 29077 bytes .../HushianWebApp/wwwroot/css/app.css | 144 + .../HushianWebApp/wwwroot/defprofile.jpg | Bin 0 -> 976 bytes .../HushianWebApp/wwwroot/favicon.png | Bin 0 -> 1148 bytes .../wwwroot/fonts/bootstrap-icons.woff2 | Bin 0 -> 85044 bytes .../roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 | Bin 0 -> 7096 bytes .../fonts/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 | Bin 0 -> 18536 bytes .../roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 | Bin 0 -> 9852 bytes .../roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 | Bin 0 -> 15336 bytes .../roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 | Bin 0 -> 12456 bytes .../roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 | Bin 0 -> 5796 bytes .../roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 | Bin 0 -> 1496 bytes .../wwwroot/fonts/vazir/vazir-regular.eot | Bin 0 -> 100434 bytes .../wwwroot/fonts/vazir/vazir-regular.ttf | Bin 0 -> 100236 bytes .../wwwroot/fonts/vazir/vazir-regular.woff | Bin 0 -> 54684 bytes .../wwwroot/fonts/vazir/vazir-regular.woff2 | Bin 0 -> 43440 bytes Presentation/HushianWebApp/wwwroot/funCus.js | 4 + .../HushianWebApp/wwwroot/icon-192.png | Bin 0 -> 2626 bytes .../HushianWebApp/wwwroot/icon-512.png | Bin 0 -> 6311 bytes Presentation/HushianWebApp/wwwroot/index.html | 59 + .../wwwroot/manifest.webmanifest | 22 + .../wwwroot/sample-data/weather.json | 27 + .../wwwroot/scroll-visibility.js | 16 + .../HushianWebApp/wwwroot/service-worker.js | 4 + .../wwwroot/service-worker.published.js | 55 + 156 files changed, 13746 insertions(+), 35 deletions(-) rename Common/Dtos/Conversation/{Read_ConversationItemDto.cs => Read_ConversationResponseDto.cs} (91%) create mode 100644 Hushian.Application/Services/ChatNotificationHub.cs create mode 100644 Infrastructure/Infrastructure/InfrastractureServicesRegistration.cs create mode 100644 Infrastructure/Infrastructure/MessageSender.cs create mode 100644 Presentation/Hushian.WebApi/ChatNotificationHub.cs create mode 100644 Presentation/Hushian.WebApi/Controllers/v1/AuthController.cs create mode 100644 Presentation/Hushian.WebApi/Controllers/v1/CompanyController.cs create mode 100644 Presentation/Hushian.WebApi/Controllers/v1/ConversationController.cs create mode 100644 Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs create mode 100644 Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs create mode 100644 Presentation/Hushian.WebApi/Controllers/v1/UserController.cs create mode 100644 Presentation/Hushian.WebApi/Controllers/v1/VerificationController.cs create mode 100644 Presentation/Hushian.WebApi/Hushian.WebApi.csproj create mode 100644 Presentation/Hushian.WebApi/Hushian.WebApi.http create mode 100644 Presentation/Hushian.WebApi/Program.cs create mode 100644 Presentation/Hushian.WebApi/Properties/launchSettings.json create mode 100644 Presentation/Hushian.WebApi/appsettings.Development.json create mode 100644 Presentation/Hushian.WebApi/appsettings.json create mode 100644 Presentation/HushianWebApp/App.razor create mode 100644 Presentation/HushianWebApp/Components/ADDExperComponent.razor create mode 100644 Presentation/HushianWebApp/Components/ADDGroupComponent.razor create mode 100644 Presentation/HushianWebApp/Components/Base/ChatBubble.razor create mode 100644 Presentation/HushianWebApp/Components/ChangePassWordComponent.razor create mode 100644 Presentation/HushianWebApp/Components/EditUserYourselfComponent.razor create mode 100644 Presentation/HushianWebApp/Components/GroupUsersComponent.razor create mode 100644 Presentation/HushianWebApp/Components/UpdateExperComponent.razor create mode 100644 Presentation/HushianWebApp/Components/UpdateGroupComponent.razor create mode 100644 Presentation/HushianWebApp/Components/UserGroupsComponent.razor create mode 100644 Presentation/HushianWebApp/Components/UserPanel/ConversionHistoryComponent.razor create mode 100644 Presentation/HushianWebApp/Components/Verification.razor create mode 100644 Presentation/HushianWebApp/Data/Dtos/ADDConversationDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/ADDConversationItemDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/ADDGroupDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/BaseDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/Company/AddCompanyDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/Company/CompanyDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/Company/ContentInfoDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/ConversationDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/ConversationItemDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/GroupDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/IdName.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/Identity/RoleDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/Identity/VerificationDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/PagingDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/RegistrationDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/AddUserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/ChangeIsActieUserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordFromUserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/ChangeRoleUserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/ConfirmedCodeDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/EditUserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/EditUserFromUserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/User/ReadUserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/UserDto.cs create mode 100644 Presentation/HushianWebApp/Data/Dtos/condinationDto.cs create mode 100644 Presentation/HushianWebApp/Data/Enums/ConversationStatus.cs create mode 100644 Presentation/HushianWebApp/Data/Enums/ConversationType.cs create mode 100644 Presentation/HushianWebApp/Data/Enums/Identity/Cors.cs create mode 100644 Presentation/HushianWebApp/Data/Enums/VerificationCodeType.cs create mode 100644 Presentation/HushianWebApp/Data/Models/Identity/AuthRequest.cs create mode 100644 Presentation/HushianWebApp/Data/Models/Identity/AuthResponse.cs create mode 100644 Presentation/HushianWebApp/Data/Models/ResponseBase.cs create mode 100644 Presentation/HushianWebApp/Data/Models/WindowSize.cs create mode 100644 Presentation/HushianWebApp/Data/Models/ai/openAi/RequestModel.cs create mode 100644 Presentation/HushianWebApp/HushianWebApp.csproj create mode 100644 Presentation/HushianWebApp/Layout/BeforeLayout.razor create mode 100644 Presentation/HushianWebApp/Layout/EmpLayout.razor create mode 100644 Presentation/HushianWebApp/Layout/MainLayout.razor create mode 100644 Presentation/HushianWebApp/Layout/MainLayout.razor.css create mode 100644 Presentation/HushianWebApp/Layout/NavMenu.razor create mode 100644 Presentation/HushianWebApp/Layout/UserPanelLayout.razor create mode 100644 Presentation/HushianWebApp/Pages/Auth/ForgetPassword.razor create mode 100644 Presentation/HushianWebApp/Pages/Auth/Login.razor create mode 100644 Presentation/HushianWebApp/Pages/Auth/Register.razor create mode 100644 Presentation/HushianWebApp/Pages/Conversation.razor create mode 100644 Presentation/HushianWebApp/Pages/Error/NotFound.razor create mode 100644 Presentation/HushianWebApp/Pages/Error/Unhandled.razor create mode 100644 Presentation/HushianWebApp/Pages/FromUserSide/ChatBoxComponent.razor create mode 100644 Presentation/HushianWebApp/Pages/FromUserSide/GCComponent.razor create mode 100644 Presentation/HushianWebApp/Pages/FromUserSide/LoginComponent.razor create mode 100644 Presentation/HushianWebApp/Pages/FromUserSide/UserPanel.razor create mode 100644 Presentation/HushianWebApp/Pages/Home.razor create mode 100644 Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor create mode 100644 Presentation/HushianWebApp/Pages/Manage/Settings.razor create mode 100644 Presentation/HushianWebApp/Pages/Manage/UserManagment.razor create mode 100644 Presentation/HushianWebApp/Program.cs create mode 100644 Presentation/HushianWebApp/Properties/launchSettings.json create mode 100644 Presentation/HushianWebApp/Service/AuthService.cs create mode 100644 Presentation/HushianWebApp/Service/BaseController.cs create mode 100644 Presentation/HushianWebApp/Service/CaptchaService.cs create mode 100644 Presentation/HushianWebApp/Service/CompanyService.cs create mode 100644 Presentation/HushianWebApp/Service/ConversationService.cs create mode 100644 Presentation/HushianWebApp/Service/GroupService.cs create mode 100644 Presentation/HushianWebApp/Service/LocalStorageService.cs create mode 100644 Presentation/HushianWebApp/Service/UserService.cs create mode 100644 Presentation/HushianWebApp/Service/VerificationService.cs create mode 100644 Presentation/HushianWebApp/_Imports.razor create mode 100644 Presentation/HushianWebApp/wwwroot/Before/assets/fonts/woff/IRANSansX-Regular.woff create mode 100644 Presentation/HushianWebApp/wwwroot/Before/assets/images/Hushian-logo.svg create mode 100644 Presentation/HushianWebApp/wwwroot/Before/assets/images/Patt.svg create mode 100644 Presentation/HushianWebApp/wwwroot/Before/assets/images/refresh-icon.svg create mode 100644 Presentation/HushianWebApp/wwwroot/Before/assets/images/top-BG.svg create mode 100644 Presentation/HushianWebApp/wwwroot/Before/assets/style/style6249.css create mode 100644 Presentation/HushianWebApp/wwwroot/Before/favicon.ico create mode 100644 Presentation/HushianWebApp/wwwroot/Before/js/site3c3c.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/js/vk.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation/dist/jquery.validate.min.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/jquery.unobtrusive-ajax/jquery.unobtrusive-ajax.min.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/jquery/dist/jquery.min7b85.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/popperjs/popper.min9c05.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/index9ade.js create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/indexb10f.css create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/sweetalert2/sweetalert.min.css create mode 100644 Presentation/HushianWebApp/wwwroot/Before/lib/tippyjs/tippy-bundle.umd.min1222.js create mode 100644 Presentation/HushianWebApp/wwwroot/background.jpg create mode 100644 Presentation/HushianWebApp/wwwroot/css/app.css create mode 100644 Presentation/HushianWebApp/wwwroot/defprofile.jpg create mode 100644 Presentation/HushianWebApp/wwwroot/favicon.png create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/bootstrap-icons.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.eot create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.ttf create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.woff create mode 100644 Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.woff2 create mode 100644 Presentation/HushianWebApp/wwwroot/funCus.js create mode 100644 Presentation/HushianWebApp/wwwroot/icon-192.png create mode 100644 Presentation/HushianWebApp/wwwroot/icon-512.png create mode 100644 Presentation/HushianWebApp/wwwroot/index.html create mode 100644 Presentation/HushianWebApp/wwwroot/manifest.webmanifest create mode 100644 Presentation/HushianWebApp/wwwroot/sample-data/weather.json create mode 100644 Presentation/HushianWebApp/wwwroot/scroll-visibility.js create mode 100644 Presentation/HushianWebApp/wwwroot/service-worker.js create mode 100644 Presentation/HushianWebApp/wwwroot/service-worker.published.js diff --git a/Common/Dtos/Conversation/Read_ConversationItemDto.cs b/Common/Dtos/Conversation/Read_ConversationResponseDto.cs similarity index 91% rename from Common/Dtos/Conversation/Read_ConversationItemDto.cs rename to Common/Dtos/Conversation/Read_ConversationResponseDto.cs index 56ad8b4..e58a201 100644 --- a/Common/Dtos/Conversation/Read_ConversationItemDto.cs +++ b/Common/Dtos/Conversation/Read_ConversationResponseDto.cs @@ -3,7 +3,7 @@ namespace Common.Dtos.Conversation { - public class Read_ConversationItemDto + public class Read_ConversationResponseDto { public int ID { get; set; } public int ConversationID { get; set; } diff --git a/Common/Enums/ConversationStatus.cs b/Common/Enums/ConversationStatus.cs index b0dd3f2..1042c44 100644 --- a/Common/Enums/ConversationStatus.cs +++ b/Common/Enums/ConversationStatus.cs @@ -8,6 +8,6 @@ namespace Common.Enums { public enum ConversationStatus { - InProgress, Finished + Recorded, InProgress, Finished } } diff --git a/Common/Enums/ConversationType.cs b/Common/Enums/ConversationType.cs index f507f54..4de508e 100644 --- a/Common/Enums/ConversationType.cs +++ b/Common/Enums/ConversationType.cs @@ -8,6 +8,6 @@ namespace Common.Enums { public enum ConversationType { - EU = 1, UE = 2,Bot=3 + EU = 1, UE = 2,Bot=3,CU=4 } } diff --git a/Common/Models/Auth/AuthResponse.cs b/Common/Models/Auth/AuthResponse.cs index 2e0dd3e..b5edaa4 100644 --- a/Common/Models/Auth/AuthResponse.cs +++ b/Common/Models/Auth/AuthResponse.cs @@ -9,8 +9,11 @@ namespace Common.Models.Auth public class AuthResponse { public int Id { get; set; } + public int? CompanyId { get; set; } public string Fullname { get; set; } public string MobileOrUserName { get; set; } public string Token { get; set; } + public string Role { get; set; } + public byte[]? img { get; set; } } } diff --git a/Hushian.Application/ApplicationServicesRegistration.cs b/Hushian.Application/ApplicationServicesRegistration.cs index b71ef6b..96ebb46 100644 --- a/Hushian.Application/ApplicationServicesRegistration.cs +++ b/Hushian.Application/ApplicationServicesRegistration.cs @@ -1,6 +1,8 @@ -using Microsoft.AspNetCore.Authentication.JwtBearer; +using Hushian.WebApi; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; using System.Reflection; using System.Text; @@ -13,6 +15,11 @@ namespace Hushian.Application IConfiguration configuration) { services.AddAutoMapper(Assembly.GetExecutingAssembly()); + services.AddSignalR() + .AddHubOptions(options => + { + options.ClientTimeoutInterval = TimeSpan.FromMinutes(5); + }); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; @@ -31,6 +38,25 @@ namespace Hushian.Application ValidAudience = configuration["JwtSettings:Audience"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtSettings:Key"])) }; + + // ✅ لازم برای SignalR (WebSocket + توکن از query string یا header) + o.Events = new JwtBearerEvents + { + OnMessageReceived = context => + { + var accessToken = context.Request.Query["access_token"]; + + // فقط برای مسیرهای SignalR + var path = context.HttpContext.Request.Path; + if (!string.IsNullOrEmpty(accessToken) && + path.StartsWithSegments("/chatNotificationHub")) + { + context.Token = accessToken; + } + + return Task.CompletedTask; + } + }; }); } diff --git a/Hushian.Application/Hushian.Application.csproj b/Hushian.Application/Hushian.Application.csproj index ed0ee54..22b4098 100644 --- a/Hushian.Application/Hushian.Application.csproj +++ b/Hushian.Application/Hushian.Application.csproj @@ -7,12 +7,12 @@ - + - - + + - + diff --git a/Hushian.Application/Services/AuthService.cs b/Hushian.Application/Services/AuthService.cs index 573c516..c0c5c6f 100644 --- a/Hushian.Application/Services/AuthService.cs +++ b/Hushian.Application/Services/AuthService.cs @@ -52,7 +52,8 @@ namespace Hushian.Application.Services if (auth.Username.StartsWith("09")) { // in Company Search - var Company = await _CompanyRepository.Get().FirstOrDefaultAsync(f => f.Mobile == auth.Username && f.Password == auth.Password.GetHash()); + var Company = await _CompanyRepository.Get() + .FirstOrDefaultAsync(f => f.Mobile == auth.Username && f.Password == auth.Password.GetHash() && f.Verified); if (Company == null) { Response.Errors.Add("کاربری یافت نشد"); @@ -64,14 +65,17 @@ namespace Hushian.Application.Services { Fullname = Company.FullName, Id = Company.ID, + Role="Company", + img=Company.logo, MobileOrUserName = Company.Mobile, - Token = new JwtSecurityTokenHandler().WriteToken(await GenerateToken(Company.Mobile, Company.ID)) + Token = new JwtSecurityTokenHandler().WriteToken(await GenerateToken(Company.Mobile, Company.ID, "Company")) }; } } else { - var exper = await _ExperRepository.Get().FirstOrDefaultAsync(f => f.UserName == auth.Username && f.Password == auth.Password.GetHash()); + var exper = await _ExperRepository.Get().FirstOrDefaultAsync(f => f.UserName == auth.Username + && f.Password == auth.Password.GetHash() && f.Available); if (exper == null) { Response.Errors.Add("کاربری یافت نشد"); @@ -83,8 +87,10 @@ namespace Hushian.Application.Services { Fullname = exper.FullName, Id = exper.ID, + CompanyId = exper.CompanyID, MobileOrUserName = exper.UserName, - Token = new JwtSecurityTokenHandler().WriteToken(await GenerateToken(exper.UserName, exper.ID)) + Role="Exper", + Token = new JwtSecurityTokenHandler().WriteToken(await GenerateToken(exper.UserName, exper.ID, "Exper")) }; } } @@ -121,12 +127,14 @@ namespace Hushian.Application.Services return Response; } - public async Task GenerateToken(string UserName, int userId) + public async Task GenerateToken(string UserName, int userId, string Role) { var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub,UserName), - new Claim(CustomClaimTypes.Uid,userId.ToString()) + new Claim(ClaimTypes.NameIdentifier, UserName), + new Claim(CustomClaimTypes.Uid,userId.ToString()), + new Claim(ClaimTypes.Role, Role) }; diff --git a/Hushian.Application/Services/ChatNotificationHub.cs b/Hushian.Application/Services/ChatNotificationHub.cs new file mode 100644 index 0000000..4539e5d --- /dev/null +++ b/Hushian.Application/Services/ChatNotificationHub.cs @@ -0,0 +1,9 @@ +using Microsoft.AspNetCore.SignalR; +namespace Hushian.WebApi +{ + // Hubs/ChatNotificationHub.cs + public class ChatNotificationHub : Hub + { + // انتخابی: نگهداری کاربران متصل (اختیاری برای این کاربرد) + } +} diff --git a/Hushian.Application/Services/CompanyService.cs b/Hushian.Application/Services/CompanyService.cs index 19b1d86..44dc3a8 100644 --- a/Hushian.Application/Services/CompanyService.cs +++ b/Hushian.Application/Services/CompanyService.cs @@ -45,9 +45,10 @@ namespace Hushian.Application.Services return Response; } - public async Task GETCompanyinformation(int CompanyID) + public async Task GETCompanyinformation(int CompanyID) { var company = await _CompanyRepository.Get().FirstOrDefaultAsync(f => f.ID == CompanyID); + if (company == null) return null; return _mapper.Map(company); } public async Task> EditCompany(ReadANDUpdate_CompanyDto model, int CompanyID) diff --git a/Hushian.Application/Services/ConversationService.cs b/Hushian.Application/Services/ConversationService.cs index aafdbfc..1c52f5e 100644 --- a/Hushian.Application/Services/ConversationService.cs +++ b/Hushian.Application/Services/ConversationService.cs @@ -4,6 +4,8 @@ using Common.Enums; using Hushian.Application.Contracts.Persistence; using Hushian.Application.Models; using Hushian.Domain.Entites; +using Hushian.WebApi; +using Microsoft.AspNetCore.SignalR; using Microsoft.EntityFrameworkCore; using Microsoft.VisualBasic; using System; @@ -22,12 +24,13 @@ namespace Hushian.Application.Services private readonly UserService _userService; private readonly GroupService _groupService; private readonly ExperService _experService; + private readonly IHubContext _hubContext; public ConversationService( IGenericRepository conversationRepository , IGenericRepository conversationResponseRepository , CompanyService companyService, UserService userService, GroupService groupService - , ExperService experService) + , ExperService experService, IHubContext hubContext) { _ConversationRepository = conversationRepository; _ConversationResponseRepository = conversationResponseRepository; @@ -35,6 +38,7 @@ namespace Hushian.Application.Services _userService = userService; _groupService = groupService; _experService = experService; + _hubContext = hubContext; } public async Task> NewConversation(ADD_ConversationDto dto, ConversationType type = ConversationType.UE) @@ -112,17 +116,23 @@ namespace Hushian.Application.Services }; Response.Value = (await _ConversationResponseRepository.ADD(response)).ID; Response.Success = Response.Value > 0; + + if (convModel.Status == ConversationStatus.Recorded && Response.Success) + { + convModel.Status = ConversationStatus.InProgress; + await _ConversationRepository.UPDATE(convModel); + } } else Response.Errors.Add("گفتگویی یافت نشد"); } return Response; } - public async Task> MyConversation(int UserID) + public async Task> GEtConversation(int UserID,int CompanyID) => await _ConversationRepository.Get() .Include(inc => inc.Group) .Include(inc => inc.ConversationResponses).ThenInclude(tinc => tinc.Exper) - .Where(w => w.UserID == UserID) + .Where(w => w.UserID == UserID && w.CompanyID==CompanyID) .Select(s => new Read_ConversationDto() { ExperID = s.ConversationResponses.Last().ExperID, @@ -139,11 +149,32 @@ namespace Hushian.Application.Services UserFullName = s.User.FullName }).ToListAsync(); - public async Task> MyConversationIsFinished(int ExperID) + public async Task> GetConversationItems(int ConversationID, int? ExperID) + { + return await _ConversationResponseRepository.Get() + .Include(inc=>inc.Exper) + .Where(w => w.ConversationID == ConversationID) + .Select(s => new Read_ConversationResponseDto() + { + ConversationID=s.ConversationID, + ExperID=s.ExperID, + ExperName=s.Exper.FullName, + FileContent=s.FileContent, + FileName=s.FileName, + FileType=s.FileType, + ID= s.ID, + IsRead=s.IsRead, + text=s.Text, + Type = s.Type + }).ToListAsync(); + + + } + public async Task> GetConversationByExperID(int ExperID , ConversationStatus status) => await _ConversationRepository.Get() .Include(inc => inc.Group) .Include(inc => inc.ConversationResponses).ThenInclude(tinc => tinc.Exper) - .Where(w => w.ConversationResponses.Any(a => a.ExperID == ExperID) && w.Status == ConversationStatus.Finished) + .Where(w => w.ConversationResponses.Any(a => a.ExperID == ExperID) && w.Status == status) .Select(s => new Read_ConversationDto() { ExperID = s.ConversationResponses.Last().ExperID, @@ -160,11 +191,11 @@ namespace Hushian.Application.Services UserFullName = s.User.FullName }).ToListAsync(); - public async Task> MyConversationIsInProgress(int ExperID) + public async Task> GetConversationByCompanyID(int CompanyID, ConversationStatus status) => await _ConversationRepository.Get() .Include(inc => inc.Group) .Include(inc => inc.ConversationResponses).ThenInclude(tinc => tinc.Exper) - .Where(w => w.ConversationResponses.Any(a => a.ExperID == ExperID) && w.Status == ConversationStatus.InProgress) + .Where(w => w.CompanyID==CompanyID && w.Status ==status) .Select(s => new Read_ConversationDto() { ExperID = s.ConversationResponses.Last().ExperID, @@ -185,7 +216,7 @@ namespace Hushian.Application.Services => await _ConversationRepository.Get() .Include(inc => inc.Group) .Include(inc => inc.ConversationResponses).ThenInclude(tinc => tinc.Exper) - .Where(w => w.ConversationResponses.Any(a => !a.ExperID.HasValue) && w.CompanyID == CompanyID) + .Where(w => w.Status== ConversationStatus.Recorded && w.CompanyID == CompanyID) .Select(s => new Read_ConversationDto() { ExperID = s.ConversationResponses.Last().ExperID, @@ -211,10 +242,59 @@ namespace Hushian.Application.Services if (convModel != null && convModel.Status != ConversationStatus.Finished) { convModel.Status = ConversationStatus.Finished; + convModel.FinishedDateTime = DateTime.Now; return await _ConversationRepository.UPDATEBool(convModel); } return true; } + public async Task MarkAsReadConversationItem(int ID, ConversationType Type , int? ExperID) + { + var item = await _ConversationResponseRepository.Get() + .Include(inc => inc.conversation).FirstOrDefaultAsync(w => w.ID == ID && !w.ExperID.HasValue + && w.conversation.Status != ConversationStatus.Finished); + + if (item != null) + { + if (Type != item.Type) + { + if (Type != ConversationType.UE && item.conversation.Status == ConversationStatus.Recorded) + { + item.conversation.Status = ConversationStatus.InProgress; + await _ConversationRepository.UPDATE(item.conversation); + } + + if (!item.IsRead) + { + item.IsRead = true; + item.ReadDateTime = DateTime.Now; + item.ExperID = ExperID; + return (await _ConversationResponseRepository.UPDATE(item)) != null; + } + } + + + } + return false; + } + public async Task GetCountQueueCompany(int CompanyID, int GroupID = 0) + { + var request = _ConversationRepository.Get() + .Where(w => w.CompanyID == CompanyID && w.Status!=ConversationStatus.Finished); + if (GroupID != 0) + request = request.Where(w => w.GroupID == GroupID); + return await request.CountAsync(); + } + public async Task WriteInHub(ConversationResponse item) + { + // فرض: لیستی از کاربرانی که به گفتگو دسترسی دارند + var usernames = new List(); + + foreach (var usn in usernames) + { + //await _hubContext.Clients.User(usn) + // .SendAsync("ReceiveNewConversation", conv.Id, conv.Title); + } + } } } diff --git a/Hushian.Application/Services/ExperService.cs b/Hushian.Application/Services/ExperService.cs index a0b929b..172ba87 100644 --- a/Hushian.Application/Services/ExperService.cs +++ b/Hushian.Application/Services/ExperService.cs @@ -8,6 +8,7 @@ using Hushian.Domain.Entites; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.ComponentModel.Design; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -67,7 +68,7 @@ namespace Hushian.Application.Services } public async Task GetInfoExper(int ExperID) => _mapper.Map(await _ExperRepository.Get().FirstOrDefaultAsync(w => w.ID == ExperID)); - public async Task?> GetExpersInCompany(int companyID) + public async Task> GetExpersInCompany(int companyID) => _mapper.Map>(await _ExperRepository.Get().Where(w => w.CompanyID == companyID).ToListAsync()); public async Task GetExpersInGroup(int GroupID) => _mapper.Map(await _ExperRepository.Get().Where(w => w.EG.Any(a => a.GroupID == GroupID)).ToListAsync()); @@ -77,8 +78,21 @@ namespace Hushian.Application.Services exper.FullName = model.FullName; return await _ExperRepository.UPDATEBool(exper); } + public async Task ChangeAvailableExper(int ExperID,int CompanyID,bool Available) + { + var exper = await _ExperRepository.Get().FirstOrDefaultAsync(w => w.ID == ExperID && w.CompanyID==CompanyID); + if (exper == null) return false; + exper.Available = Available; + return await _ExperRepository.UPDATEBool(exper); + } public async Task CheckExperInCompany(int CompanyID, int ExperID) =>await _ExperRepository.Get().AnyAsync(w => w.ID == ExperID && w.CompanyID==CompanyID); + public async Task DeleteExper(int ExperID, int CompanyID) + { + var exper = await _ExperRepository.Get().FirstOrDefaultAsync(w => w.ID == ExperID && w.CompanyID == CompanyID); + if (exper == null) return false; + return await _ExperRepository.DELETE(exper); + } public async Task> ChangePasswordExperFromExper(ChangePasswordDto model, int ExperID) { ResponseBase Response = new(); @@ -135,5 +149,11 @@ namespace Hushian.Application.Services } return Response; } + public async Task GetCompanyIDExper(int ExperID) + { + var exper = await _ExperRepository.Get().FirstOrDefaultAsync(w => w.ID == ExperID); + if (exper == null) return 0; + return exper.CompanyID; + } } } diff --git a/Hushian.Application/Services/GroupService.cs b/Hushian.Application/Services/GroupService.cs index 964b1d6..aaf5e59 100644 --- a/Hushian.Application/Services/GroupService.cs +++ b/Hushian.Application/Services/GroupService.cs @@ -60,7 +60,12 @@ namespace Hushian.Application.Services var entity = await _GroupRepository.Get().Where(f => f.CompanyID == CompanyID).ToListAsync(); return _mapper.Map>(entity); } - public async Task UpdateGroup(Update_GroupDto model, int CompanyID) + public async Task> GetGroupsExper(int ExperID) + { + var entity = await _GroupRepository.Get().Where(f => f.EG.Any(a=>a.ExperID==ExperID)).ToListAsync(); + return _mapper.Map>(entity); + } + public async Task> UpdateGroup(Update_GroupDto model, int CompanyID) { ResponseBase Response = new(); if (!model.Name.IsOnlyPersianLetters()) @@ -91,6 +96,8 @@ namespace Hushian.Application.Services Response.Errors.Add("خطای سیستمی"); } } + + return Response; } public async Task ChangeAvailableGroup(ChangeAvailable_GroupDto model, int CompanyID) { @@ -106,26 +113,70 @@ namespace Hushian.Application.Services return false; } } - public async Task JoinExperInGroup(int GroupID, int ExperID, int CompanyID) + public async Task> DeleteGroup(int GroupID,int CompanyID) { + ResponseBase Response = new(); + + var Group = await _GroupRepository.Get().FirstOrDefaultAsync(a => a.CompanyID == CompanyID && a.ID == GroupID); + if (Group!=null) Response.Value=Response.Success= await _GroupRepository.DELETE(Group); + else Response.Errors.Add("یافت نشد"); + + return Response; + } + public async Task> JoinExperInGroup(int GroupID, int ExperID, int CompanyID) + { + ResponseBase Response = new(); + if (await CHeckGroupMemberCompany(GroupID,CompanyID)) { if (await _experService.CheckExperInCompany(CompanyID,ExperID)) { - return await _EGRepository.ADDBool(new ExperGroup() + Response.Value=Response.Success= await _EGRepository.ADDBool(new ExperGroup() { ExperID = ExperID, GroupID = GroupID }); } + else Response.Errors.Add("کارشناس یافت نشد"); + } - return false; + else Response.Errors.Add("گروه یافت نشد"); + + return Response; + } + public async Task> UnJoinExperInGroup(int GroupID, int ExperID, int CompanyID) + { + ResponseBase Response = new(); + + if (await CHeckGroupMemberCompany(GroupID, CompanyID)) + { + if (await _experService.CheckExperInCompany(CompanyID, ExperID)) + { + try + { + var eg =await _EGRepository.Get().FirstOrDefaultAsync(w=>w.GroupID==GroupID && w.ExperID==ExperID); + Response.Value = Response.Success = eg==null ? true : await _EGRepository.DELETE(eg); + } + catch (Exception) + { + + throw; + } + + } + else Response.Errors.Add("کارشناس یافت نشد"); + + } + else Response.Errors.Add("گروه یافت نشد"); + + return Response; } public async Task AnyGroup(int GroupID) => await _GroupRepository.Get().AnyAsync(a=>a.ID==GroupID); public async Task CHeckGroupMemberCompany(int GroupID, int CompanyID)=> await _GroupRepository.Get().AnyAsync(a => a.CompanyID == CompanyID && a.ID == GroupID); - + public async Task> GetExpersFromGroupID(int GroupID) + => _mapper.Map>( await _EGRepository.Get().Where(w => w.GroupID == GroupID).Select(s=>s.Exper).ToListAsync()); } } diff --git a/Hushian.Application/Services/VerificationService.cs b/Hushian.Application/Services/VerificationService.cs index 1c812f1..281abbf 100644 --- a/Hushian.Application/Services/VerificationService.cs +++ b/Hushian.Application/Services/VerificationService.cs @@ -96,7 +96,8 @@ namespace Hushian.Application.Services Fullname = User.FullName, Id = User.ID, MobileOrUserName = User.Mobile, - Token = new JwtSecurityTokenHandler().WriteToken(await _authService.GenerateToken(User.Mobile, User.ID)) + Role="User", + Token = new JwtSecurityTokenHandler().WriteToken(await _authService.GenerateToken(User.Mobile, User.ID, "User")) }; } else diff --git a/Hushian.Domain/Entites/Conversation.cs b/Hushian.Domain/Entites/Conversation.cs index 91213b5..34bc5d5 100644 --- a/Hushian.Domain/Entites/Conversation.cs +++ b/Hushian.Domain/Entites/Conversation.cs @@ -20,7 +20,7 @@ namespace Hushian.Domain.Entites #region Fild public ConversationStatus Status { get; set; } - = ConversationStatus.InProgress; + = ConversationStatus.Recorded; public DateTime? FinishedDateTime { get; set; } public DateTime Cdatetime { get; set; } = DateTime.Now; diff --git a/Hushian.sln b/Hushian.sln index 00aad12..d104999 100644 --- a/Hushian.sln +++ b/Hushian.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 -VisualStudioVersion = 17.13.35818.85 d17.13 +VisualStudioVersion = 17.13.35818.85 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hushian.Application", "Hushian.Application\Hushian.Application.csproj", "{E080DBF2-2DD1-4F88-A091-483C6793E112}" EndProject @@ -15,6 +15,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hushian.Persistence", "Infr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Common\Common.csproj", "{5E4ECC9D-90EB-4A5E-9308-99E359978FAE}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Presentation", "Presentation", "{F9F2A965-B4E4-4990-B547-F18200AF2631}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hushian.WebApi", "Presentation\Hushian.WebApi\Hushian.WebApi.csproj", "{37AD460D-1663-4755-AC15-703BFFBF20D2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HushianWebApp", "Presentation\HushianWebApp\HushianWebApp.csproj", "{80D865DC-1CCD-9C25-5DAF-153E7B33408E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -41,6 +47,14 @@ Global {5E4ECC9D-90EB-4A5E-9308-99E359978FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU {5E4ECC9D-90EB-4A5E-9308-99E359978FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU {5E4ECC9D-90EB-4A5E-9308-99E359978FAE}.Release|Any CPU.Build.0 = Release|Any CPU + {37AD460D-1663-4755-AC15-703BFFBF20D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37AD460D-1663-4755-AC15-703BFFBF20D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37AD460D-1663-4755-AC15-703BFFBF20D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37AD460D-1663-4755-AC15-703BFFBF20D2}.Release|Any CPU.Build.0 = Release|Any CPU + {80D865DC-1CCD-9C25-5DAF-153E7B33408E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {80D865DC-1CCD-9C25-5DAF-153E7B33408E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {80D865DC-1CCD-9C25-5DAF-153E7B33408E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {80D865DC-1CCD-9C25-5DAF-153E7B33408E}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -48,6 +62,8 @@ Global GlobalSection(NestedProjects) = preSolution {E2FC6095-8D42-4DD6-9425-8343B73CB452} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {05D292C2-BB17-4524-B1F2-8A2B6B213C6A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {37AD460D-1663-4755-AC15-703BFFBF20D2} = {F9F2A965-B4E4-4990-B547-F18200AF2631} + {80D865DC-1CCD-9C25-5DAF-153E7B33408E} = {F9F2A965-B4E4-4990-B547-F18200AF2631} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {F0E59B62-9EDF-47DC-AAFD-F841443D0AAE} diff --git a/Infrastructure/Infrastructure/Hushian.Infrastructure.csproj b/Infrastructure/Infrastructure/Hushian.Infrastructure.csproj index 125f4c9..c8063a6 100644 --- a/Infrastructure/Infrastructure/Hushian.Infrastructure.csproj +++ b/Infrastructure/Infrastructure/Hushian.Infrastructure.csproj @@ -6,4 +6,14 @@ enable + + + + + + + + + + diff --git a/Infrastructure/Infrastructure/InfrastractureServicesRegistration.cs b/Infrastructure/Infrastructure/InfrastractureServicesRegistration.cs new file mode 100644 index 0000000..79eafce --- /dev/null +++ b/Infrastructure/Infrastructure/InfrastractureServicesRegistration.cs @@ -0,0 +1,27 @@ +using Common.Contracts.Infrastructure; +using Hushian.Application.Models.Message; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +namespace Hushian.Infrastructure +{ + public static class InfrastractureServicesRegistration + { + public static IServiceCollection ConfigureInfrastractureServices(this IServiceCollection services, + IConfiguration configuration) + { + + // services.Configure(configuration.GetSection("EmailSettings")); + //services.AddTransient(); + + services.Configure(configuration.GetSection("MessageSettings")); + services.AddTransient(); + + + //services.Configure(configuration.GetSection("aiSettings")); + //services.AddTransient(); + + // services.AddScoped(c => new Melipayamak.RestClient(configuration.GetSection("MessageSettings:UserName").Value, configuration.GetSection("MessageSettings:Password").Value)); + return services; + } + } +} diff --git a/Infrastructure/Infrastructure/MessageSender.cs b/Infrastructure/Infrastructure/MessageSender.cs new file mode 100644 index 0000000..d44deca --- /dev/null +++ b/Infrastructure/Infrastructure/MessageSender.cs @@ -0,0 +1,25 @@ + +using Common.Contracts.Infrastructure; +using Hushian.Application.Models.Message; +using Microsoft.Extensions.Options; + +namespace Hushian.Infrastructure +{ + public class MessageSender : IMessageSender + { + private readonly Melipayamak.RestClient _restClient; + private MessageSetting _msgSettings; + public MessageSender(Melipayamak.RestClient restClient, IOptions msgSettings) + { + _restClient = restClient; + _msgSettings = msgSettings.Value; + } + + public Task SendMassage(Message message) + { + string From = _msgSettings.From; + // _restClient.Send(message.To, From, message.msg, false); + return Task.Run(()=>true); + } + } +} diff --git a/Infrastructure/Persistence/Hushian.Persistence.csproj b/Infrastructure/Persistence/Hushian.Persistence.csproj index f641ed8..71c8cc6 100644 --- a/Infrastructure/Persistence/Hushian.Persistence.csproj +++ b/Infrastructure/Persistence/Hushian.Persistence.csproj @@ -8,9 +8,9 @@ - - - + + + diff --git a/Presentation/Hushian.WebApi/ChatNotificationHub.cs b/Presentation/Hushian.WebApi/ChatNotificationHub.cs new file mode 100644 index 0000000..0b5085c --- /dev/null +++ b/Presentation/Hushian.WebApi/ChatNotificationHub.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.SignalR; +namespace Hushian.Application.Services +{ + // Hubs/ChatNotificationHub.cs + public class ChatNotificationHub : Hub + { + // انتخابی: نگهداری کاربران متصل (اختیاری برای این کاربرد) + + public override Task OnConnectedAsync() + { + //var userId = Context.UserIdentifier; + //// نگهداری یا ثبت اتصال کاربر اگر نیاز باشد + return base.OnConnectedAsync(); + } + + public override Task OnDisconnectedAsync(Exception? exception) + { + return base.OnDisconnectedAsync(exception); + } + } +} diff --git a/Presentation/Hushian.WebApi/Controllers/v1/AuthController.cs b/Presentation/Hushian.WebApi/Controllers/v1/AuthController.cs new file mode 100644 index 0000000..b35c59b --- /dev/null +++ b/Presentation/Hushian.WebApi/Controllers/v1/AuthController.cs @@ -0,0 +1,53 @@ +using Common.Models.Auth; +using Common.Models.Auth.CompanySide; +using Common.Models.Auth.UserSide; +using Hushian.Application.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Hushian.WebApi.Controllers.v1 +{ + [Route("api/v1/[controller]")] + [ApiController] + public class AuthController : ControllerBase + { + private readonly AuthService _authService; + private readonly VerificationService _verificationService; + public AuthController(AuthService authService, VerificationService verificationService) + { + _authService = authService; + _verificationService = verificationService; + } + + [HttpPost("loginCompanySide")] + public async Task> login([FromBody] AuthRequestFromCompanySide request) + { + var response = await _authService.AuthenticationFromCompanySide(request); + if (response.Success) return Ok(response.Value); + else return BadRequest(response.Errors); + } + [HttpPost("AuthenticationFromUser")] + public async Task> AuthenticationFromUser([FromBody] AuthRequestFromUserSide request) + { + var response = await _authService.AuthenticationFromUserSide(request); + if (response.Success) return Ok(response.Value); + else return BadRequest(response.Errors); + } + [HttpPut("UserLoginVerification/{ID}/{Code}")] + public async Task> UserLoginVerification(int ID,string Code) + { + var response = await _verificationService.VerificationCode(new Common.Dtos.Verification.ConfirmedCodeDto() + { code =Code,codeType=Common.Enums.VerificationCodeType.Login,Id=ID}); + + if (response.Success) return Ok(response.Value); + else return BadRequest(response.Errors); + } + [HttpGet("IsOnline")] + [Authorize] + public async Task IsOnline() + { + return NoContent(); + } + + } +} diff --git a/Presentation/Hushian.WebApi/Controllers/v1/CompanyController.cs b/Presentation/Hushian.WebApi/Controllers/v1/CompanyController.cs new file mode 100644 index 0000000..4b4df7b --- /dev/null +++ b/Presentation/Hushian.WebApi/Controllers/v1/CompanyController.cs @@ -0,0 +1,45 @@ +using Common.Dtos.Company; +using Hushian.Application.Constants; +using Hushian.Application.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Hushian.WebApi.Controllers.v1 +{ + [Route("api/v1/[controller]")] + [ApiController] + public class CompanyController : ControllerBase + { + private readonly CompanyService _companyService; + + public CompanyController(CompanyService companyService) + { + _companyService = companyService; + } + + [HttpPost("NewCompany")] + public async Task> NewCompany([FromBody] RegisterCompanyDto request) + { + var response = await _companyService.RegisterCompany(request); + return response.Success ? Ok(response.Value) + : BadRequest(response.Errors); + } + [HttpGet("GetCompany/{CompanyID}")] + public async Task> GetCompany(int CompanyID) + { + var response = await _companyService.GETCompanyinformation(CompanyID); + return response!=null ? Ok(response): NotFound(); + } + [HttpPut("UpdateCompany")] + [Authorize(Roles = "Company")] + public async Task UpdateCompany([FromBody] ReadANDUpdate_CompanyDto model) + { + string CompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + var response = await _companyService.EditCompany(model,Convert.ToInt32(CompanyID)); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + + + } +} diff --git a/Presentation/Hushian.WebApi/Controllers/v1/ConversationController.cs b/Presentation/Hushian.WebApi/Controllers/v1/ConversationController.cs new file mode 100644 index 0000000..bd57feb --- /dev/null +++ b/Presentation/Hushian.WebApi/Controllers/v1/ConversationController.cs @@ -0,0 +1,162 @@ +using Common.Dtos.Conversation; +using Common.Enums; +using Hushian.Application.Constants; +using Hushian.Application.Services; +using Hushian.Domain.Entites; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Hushian.WebApi.Controllers.v1 +{ + [Route("api/v1/[controller]")] + [ApiController] + [Authorize] + public class ConversationController : ControllerBase + { + private readonly ConversationService _conversationService; + private readonly CompanyService _companyService; + private readonly ExperService _experService; + public ConversationController(ConversationService conversationService, CompanyService companyService) + { + _conversationService = conversationService; + _companyService = companyService; + } + + [HttpGet("MyConversation")] + [Authorize(Roles = "Company,Exper")] + public async Task MyConversation(ConversationStatus status) + { + if (User.IsInRole("Exper")) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int ExperID = Convert.ToInt32(strExperID); + var response = await _conversationService.GetConversationByExperID(ExperID, status); + return Ok(response); + } + else if (User.IsInRole("Company")) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + + var response = await _conversationService.GetConversationByCompanyID(CompanyID, status); + return Ok(response); + } + return Forbid(); + + } + + [HttpGet("ConversationAwaitingOurResponse")] + [Authorize(Roles = "Company,Exper")] + public async Task ConversationAwaitingOurResponse() + { + int CompanyID = 0; + if (User.IsInRole("Exper")) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int ExperID = Convert.ToInt32(strExperID); + + CompanyID = await _experService.GetCompanyIDExper(ExperID); + } + else if (User.IsInRole("Company")) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + CompanyID = Convert.ToInt32(strCompanyID); + } + + var response = await _conversationService.ConversationAwaitingOurResponse(CompanyID); + return Ok(response); + } + [HttpGet("ConversationItems/{ConversationID}")] + [Authorize(Roles = "Company,Exper,User")] + public async Task GetConversationItems(int ConversationID) + { + return Ok(await _conversationService.GetConversationItems(ConversationID)); + } + [HttpPost("NewConversationFromCurrentUser")] + public async Task NewConversationFromCurrentUser(ADD_ConversationDto conversation) + { + string UserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + var response = await _conversationService.NewConversation(conversation); + return response.Success ? Ok(response.Value) + : BadRequest(response.Errors); + } + [HttpPost("ADDConversationResponse")] + [Authorize(Roles = "Company,User,Exper")] + public async Task ADDConversationResponse([FromBody] ADD_ConversationResponseDto ConversationItem) + { + + int? ExperID = null; + if (User.IsInRole("Exper")) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + ExperID = Convert.ToInt32(strExperID); + ConversationItem.Type = ConversationType.EU; + } + + else if (User.IsInRole("User")) + { + ConversationItem.Type = ConversationType.UE; + } + else if (User.IsInRole("Company")) + { + ConversationItem.Type = ConversationType.CU; + + } + else return Unauthorized(); + + + var Response = await _conversationService.NewConversationResponse(ConversationItem, ExperID); + return Response.Success ? Ok(Response.Value) + : BadRequest(Response.Errors); + } + [HttpPut("MarkAsReadConversationItem/{ConversationItemID}")] + [Authorize(Roles = "Company,User,Exper")] + public async Task MarkAsReadConversationItem(int ConversationItemID) + { + int? ExperID = null; + ConversationType Type = ConversationType.UE; + if (User.IsInRole("Exper")) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + ExperID = Convert.ToInt32(strExperID); + Type = ConversationType.EU; + } + + else if (User.IsInRole("User")) + { + Type = ConversationType.UE; + } + else if (User.IsInRole("Company")) + { + Type = ConversationType.CU; + } + else return Unauthorized(); + + return await _conversationService.MarkAsReadConversationItem(ConversationItemID, Type, ExperID) ? NoContent() + : BadRequest(new List() { "خطا در بروزرسانی گفتگو" }); + + } + [HttpGet("ConversationIsFinish/{ConversationID}")] + [Authorize(Roles = "Company,Exper")] + public async Task ConversationIsFinish(int ConversationID) + { + return await _conversationService.FinishConversation(ConversationID) ? NoContent() + : BadRequest(new List { "خطا در بروزرسانی وضعیت" }); + } + [HttpGet("CountQueueCompany/{CompanyID}")] + [Authorize] + public async Task> GetCountQueueCompany(int CompanyID, int GroupID) + { + return Ok(await _conversationService.GetCountQueueCompany(CompanyID, GroupID)); + } + [HttpGet("ConversationFromUserSide/{CompanyID}")] + [Authorize(Roles = "User")] + public async Task GetConversationFromUserSide(int CompanyID) + { + string strUserID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int UserID = Convert.ToInt32(strUserID); + var response = await _conversationService.GEtConversation(CompanyID, UserID); + return Ok(response) ; + } + } +} diff --git a/Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs b/Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs new file mode 100644 index 0000000..f716e05 --- /dev/null +++ b/Presentation/Hushian.WebApi/Controllers/v1/ExperController.cs @@ -0,0 +1,118 @@ + +using Azure; +using Common.Dtos; +using Common.Dtos.Exper; +using Hushian.Application.Constants; +using Hushian.Application.Services; +using Hushian.Domain.Entites; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System.IdentityModel.Tokens.Jwt; + +namespace Hushian.WebApi.Controllers.v1 +{ + [Route("api/v1/[controller]")] + [ApiController] + public class ExperController : ControllerBase + { + private readonly ExperService _experService; + + + [HttpPost("AddExper")] + [Authorize(Roles = "Company")] + public async Task AddExper([FromBody] ADD_ExperDto userDto) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + var response = await _experService.ADDExper(userDto, CompanyID); + return response.Success ? NoContent() + : BadRequest(response.Errors); + } + [HttpGet("GetExpersCompany/{CompanyID}")] + [Authorize] + public async Task GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10) + { + var response = await _experService.GetExpersInCompany(CompanyID); + return Ok(response); + + } + + [HttpPut("EditUserYourself")] //ویرایش کاربران توسط خود + [Authorize(Roles = "Exper")] + public async Task EditUserYourself([FromBody] Update_ExperDto editUser) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int ExperID = Convert.ToInt32(strExperID); + + var response = await _experService.UpdateExper(editUser,ExperID); + return response ? NoContent() + : BadRequest(new List { "یافت نشد" }); + } + [HttpGet("GetCurrentExper")] + [Authorize(Roles = "Exper")] + public async Task GetCurrentUser() + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int ExperID = Convert.ToInt32(strExperID); + + var response = await _experService.GetInfoExper(ExperID); + return response!=null ? Ok(response) : BadRequest(new List { "یافت نشد" }); + } + [HttpPut("ExperEditingFromManager/{ExperID}")] //ویرایش کارشناس توسط مدیرش + [Authorize(Roles = "Company")] + public async Task ExperEditingFromManager(int ExperID,[FromBody] Update_ExperDto editUser) + { + var response = await _experService.UpdateExper(editUser, ExperID); + return response ? NoContent() + : BadRequest(new List { "یافت نشد" }); + } + //--- + [HttpPut("ChangePasswordYourself")] //تغییر کلمه عبور کاربران توسط خود + [Authorize(Roles = "Exper")] + public async Task ChangePasswordYourself([FromBody] ChangePasswordDto item) + { + string strExperID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int ExperID = Convert.ToInt32(strExperID); + + var response = await _experService.ChangePasswordExperFromExper(item,ExperID); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + [HttpPut("ChangePasswordFromManager/{ExperID}")] //تغییر کلمه عبور کارشناس توسط مدیرش + [Authorize(Roles = "Company")] + public async Task ChangePasswordFromManager(int ExperID,[FromBody] ChangePasswordDto item) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + + var response = await _experService.ChangePasswordExperFromCompanyManaget(item, ExperID,CompanyID); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + [HttpPut("ChangeAvailableExperFromManager/{ExperID}")] //تغییر وضعیت در دسترس بودن یا نبودن کارشناس توسط مدیرش + [Authorize(Roles = "Company")] + public async Task ChangeAvailableExperFromManager(int ExperID, bool Available) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + + + var response = await _experService.ChangeAvailableExper(ExperID,CompanyID,Available); + return response ? NoContent() + : BadRequest(new List { "یافت نشد"}); + } + [HttpDelete("DeleteExperFromManager/{ExperID}")] + [Authorize(Roles = "Company")] + public async Task DeleteExperFromManager(int ExperID) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + + + var response = await _experService.DeleteExper(ExperID, CompanyID); + return response ? NoContent() + : BadRequest(new List { "یافت نشد" }); + } + + } +} diff --git a/Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs b/Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs new file mode 100644 index 0000000..c445524 --- /dev/null +++ b/Presentation/Hushian.WebApi/Controllers/v1/GroupController.cs @@ -0,0 +1,119 @@ +using Common.Dtos.Exper; +using Common.Dtos.Group; +using Hushian.Application.Constants; +using Hushian.Application.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Hushian.WebApi.Controllers.v1 +{ + [Route("api/v1/[controller]")] + [ApiController] + public class GroupController : ControllerBase + { + private readonly GroupService _groupService; + private readonly CompanyService _companyService; + public GroupController(GroupService groupService, CompanyService companyService) + { + _groupService = groupService; + _companyService = companyService; + } + + [HttpPost("AddGroup")] + [Authorize(Roles = "Company")] + public async Task AddGroup([FromBody] ADD_GroupDto Group) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + var response = await _groupService.NewGroup(Group, CompanyID); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + [HttpPut("UpdateGroup")] + [Authorize(Roles = "Company")] + public async Task UpdateGroup([FromBody] Update_GroupDto Group) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + var response = await _groupService.UpdateGroup(Group, CompanyID); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + [HttpPut("JoinExperToGroup/{GroupID}/{ExperID}")] + [Authorize(Roles = "Company")] + public async Task JoinExperToGroup(int GroupID, int ExperID) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + var response = await _groupService.JoinExperInGroup(GroupID, ExperID, CompanyID); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + [HttpPut("UnJoinExperToGroup/{GroupID}/{ExperID}")] + [Authorize(Roles = "Company")] + public async Task UnJoinExperToGroup(int GroupID, int ExperID) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + var response = await _groupService.UnJoinExperInGroup(GroupID, ExperID, CompanyID); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + [HttpDelete("DeleteGroup/{GroupID}")] + [Authorize(Roles = "Company")] + public async Task DeleteGroup(int GroupID) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + var response = await _groupService.DeleteGroup(GroupID, CompanyID); + return response.Success && response.Value ? NoContent() + : BadRequest(response.Errors); + } + [HttpGet("GetGroupsCompany")] + [Authorize] + public async Task>> GetGroups(int? CompanyID) + { + + if (!CompanyID.HasValue) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + CompanyID = Convert.ToInt32(strCompanyID); + } + var response = await _groupService.GetGroupsCompany(CompanyID.Value); + return Ok(response); + } + [HttpGet("GetGroupsFromExperID")] + [Authorize] + public async Task>> GetGroups(int ExperID) + { + var response = await _groupService.GetGroupsExper(ExperID); + return Ok(response); + } + [HttpGet("GetExpersFromGroupID/{GroupID}")] + public async Task>> GetExpersGroup(int GroupID) + { + var response = await _groupService.GetExpersFromGroupID(GroupID); + return Ok(response); + } + //[HttpGet("GetOnlineExpersFromGroupID/{GroupID}")] + //public async Task> GetOnlineExpersGroup(int GroupID) + //{ + // var CompanyID = await _companyService.GetCompanyID(User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First()); + // var response = await _groupService.GetOnlineExpersGroup(GroupID, CompanyID.GetValueOrDefault()); + // return response.Success ? Ok(response.Value) + // : BadRequest(response.Errors); + //} + [HttpPut("ChangeAvailableGroupFromManager/{GroupID}")] //تغییر وضعیت در دسترس بودن یا نبودن گروه' توسط مدیرش + [Authorize(Roles = "Company")] + public async Task ChangeAvailableExperFromManager(int GroupID, bool Available) + { + string strCompanyID = User.Claims.Where(w => w.Type == CustomClaimTypes.Uid).Select(s => s.Value).First(); + int CompanyID = Convert.ToInt32(strCompanyID); + var response = await _groupService.ChangeAvailableGroup(new Common.Dtos.Exper.ChangeAvailable_GroupDto() + { Available=Available,ID=GroupID}, CompanyID); + return response? NoContent() + : BadRequest(new List { "یافت نشد"}); + } + + } +} diff --git a/Presentation/Hushian.WebApi/Controllers/v1/UserController.cs b/Presentation/Hushian.WebApi/Controllers/v1/UserController.cs new file mode 100644 index 0000000..448d07e --- /dev/null +++ b/Presentation/Hushian.WebApi/Controllers/v1/UserController.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace Hushian.WebApi.Controllers.v1 +{ + [Route("api/v1/[controller]")] + [ApiController] + public class UserController : ControllerBase + { + } +} diff --git a/Presentation/Hushian.WebApi/Controllers/v1/VerificationController.cs b/Presentation/Hushian.WebApi/Controllers/v1/VerificationController.cs new file mode 100644 index 0000000..74284fd --- /dev/null +++ b/Presentation/Hushian.WebApi/Controllers/v1/VerificationController.cs @@ -0,0 +1,42 @@ +using Common.Dtos.Verification; +using Hushian.Application.Services; +using Microsoft.AspNetCore.Mvc; + +namespace Hushian.WebApi.Controllers.v1 +{ + [Route("api/v1/[controller]")] + [ApiController] + public class VerificationController : ControllerBase + { + private readonly VerificationService _verificationService; + + public VerificationController(VerificationService verificationService) + { + _verificationService = verificationService; + } + + + //------ UserName by Exper - Mobile by Company + [HttpGet("ForgetPassword/{input}")] + public async Task> GetIDAndSendCodeForForgetPasswordByUserID(string input) + { + var response = await _verificationService.GenerateCodeByForgetPassword(input); + return response > 0 ? Ok(response) + : BadRequest(new List { "خطا در ارسال کد احراز"}); + } + [HttpGet("ReSendCode/{ID}")] + public async Task> ReSendCodeByID(int ID) + { + var response = await _verificationService.ReSendCode(ID); + return response ? NoContent() + : BadRequest(new List { "خطا در ارسال کد احراز" }); + } + [HttpPost("ConfirmedCode")] + public async Task ConfirmedCode(ConfirmedCodeDto model) + { + var response = await _verificationService.VerificationCode(model); + return response.Success ? NoContent() + : BadRequest(response.Errors); + } + } +} diff --git a/Presentation/Hushian.WebApi/Hushian.WebApi.csproj b/Presentation/Hushian.WebApi/Hushian.WebApi.csproj new file mode 100644 index 0000000..a2c4ced --- /dev/null +++ b/Presentation/Hushian.WebApi/Hushian.WebApi.csproj @@ -0,0 +1,20 @@ + + + + net9.0 + enable + enable + + + + + + + + + + + + + + diff --git a/Presentation/Hushian.WebApi/Hushian.WebApi.http b/Presentation/Hushian.WebApi/Hushian.WebApi.http new file mode 100644 index 0000000..f09806e --- /dev/null +++ b/Presentation/Hushian.WebApi/Hushian.WebApi.http @@ -0,0 +1,6 @@ +@Hushian.WebApi_HostAddress = http://localhost:5089 + +GET {{Hushian.WebApi_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/Presentation/Hushian.WebApi/Program.cs b/Presentation/Hushian.WebApi/Program.cs new file mode 100644 index 0000000..1eb405b --- /dev/null +++ b/Presentation/Hushian.WebApi/Program.cs @@ -0,0 +1,33 @@ +using Hushian.Application; +using Hushian.Persistence; +using Hushian.WebApi; + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi +builder.Services.AddOpenApi(); + +builder.Services.ConfigureApplicationServices(builder.Configuration); +builder.Services.ConfigurePersistenceServices(builder.Configuration); +builder.Services.AddSignalR(); +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.MapOpenApi(); +} + + +app.MapHub("/chatNotificationHub"); + +app.UseHttpsRedirection(); +app.UseCors(policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin()); +app.UseAuthentication(); +app.UseAuthorization(); +app.MapControllers(); + +app.Run(); diff --git a/Presentation/Hushian.WebApi/Properties/launchSettings.json b/Presentation/Hushian.WebApi/Properties/launchSettings.json new file mode 100644 index 0000000..aa32003 --- /dev/null +++ b/Presentation/Hushian.WebApi/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:5089", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "https://localhost:7046;http://localhost:5089", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Presentation/Hushian.WebApi/appsettings.Development.json b/Presentation/Hushian.WebApi/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Presentation/Hushian.WebApi/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Presentation/Hushian.WebApi/appsettings.json b/Presentation/Hushian.WebApi/appsettings.json new file mode 100644 index 0000000..67f9a93 --- /dev/null +++ b/Presentation/Hushian.WebApi/appsettings.json @@ -0,0 +1,34 @@ +{ + "ConnectionStrings": { + "MainConnectionString": "Data Source=195.88.208.142;Initial Catalog=HushianDB;User ID=sa;Password=M439610m@;TrustServerCertificate=True", + "UserManagementConnectionString": "Data Source=195.88.208.142;Initial Catalog=UserManagementDB;User ID=sa;Password=M439610m@;TrustServerCertificate=True" + }, + "EmailSettings": { + "ApiKey": "SendGrid_Key_Here", + "FromName": "Leasing", + "FromAddress": "Leasing" + }, + "MessageSettings": { + "UserName": "09119660045", + "Password": "C54S2", + "From": "50004001660045" + }, + "aiSettings": { + "url": "https://api.openai.com/v1/chat/completions", + "apitoken": "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" + + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "JwtSettings": { + "Key": "84322CFB66934ECC86D547C5CF4F2EFC", + "Audience": "MMRbnjd", + "Issuer": "MMRbnjd", + "DurationInMinutes": 60 + }, + "AllowedHosts": "*" +} diff --git a/Presentation/HushianWebApp/App.razor b/Presentation/HushianWebApp/App.razor new file mode 100644 index 0000000..6fd3ed1 --- /dev/null +++ b/Presentation/HushianWebApp/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/Presentation/HushianWebApp/Components/ADDExperComponent.razor b/Presentation/HushianWebApp/Components/ADDExperComponent.razor new file mode 100644 index 0000000..3ca79dd --- /dev/null +++ b/Presentation/HushianWebApp/Components/ADDExperComponent.razor @@ -0,0 +1,82 @@ +@using Common.Dtos.User +@using Hushian.Application.Dtos +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject UserService userService; + +
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + + + @if (model.img != null && model.img.Length > 0) + { + Uploaded Image + } + +
+ + + +
+ + +@code { + public AddUserDto model { get; set; } = new(); + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + public bool loading { get; set; } = false; +} +@functions{ + async Task NewItem() + { + if (!string.IsNullOrEmpty(model.FullName) && !string.IsNullOrEmpty(model.PhoneNumber)) + { + model.PassWord =model.UserName= model.PhoneNumber; + if (string.IsNullOrEmpty(model.Email)) model.Email = $"{model.UserName}@hushian.ir"; + + loading = true; + if (await userService.AddExper(model)) + { + loading = false; + await OnMultipleOfThree.InvokeAsync(); + } + loading = false; + } + } + protected override async Task OnParametersSetAsync() + { + model = new(); + await base.OnParametersSetAsync(); + } + private async Task OnFileChange(InputFileChangeEventArgs e) + { + var file = e.File; + using (var memoryStream = new MemoryStream()) + { + await file.OpenReadStream().CopyToAsync(memoryStream); + model.img = memoryStream.ToArray(); + } + } + private string GetImageSource() + { + if (model.img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(model.img)}"; + } + return string.Empty; + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Components/ADDGroupComponent.razor b/Presentation/HushianWebApp/Components/ADDGroupComponent.razor new file mode 100644 index 0000000..ad59629 --- /dev/null +++ b/Presentation/HushianWebApp/Components/ADDGroupComponent.razor @@ -0,0 +1,66 @@ +@using Hushian.Application.Dtos +@using HushianWebApp.Service +@inject GroupService groupService; +
+ + +
+ + +
+
+ + +
+
+ + + @if (model.img != null && model.img.Length >0) + { + Uploaded Image + } + +
+ + + +
+ +@code { + [Parameter] public ADDGroupDto model { get; set; } = new(); + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + public bool loading { get; set; } = false; +} +@functions { + async Task NewItem() + { + if (!string.IsNullOrEmpty(model.Name)) + { + loading = true; + if (await groupService.AddGroup(model)) + { + loading = false; + await OnMultipleOfThree.InvokeAsync(); + } + loading = false; + } + } + + private async Task OnFileChange(InputFileChangeEventArgs e) + { + var file = e.File; + using (var memoryStream = new MemoryStream()) + { + await file.OpenReadStream().CopyToAsync(memoryStream); + model.img = memoryStream.ToArray(); + } + } + private string GetImageSource() + { + if (model.img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(model.img)}"; + } + return string.Empty; + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Components/Base/ChatBubble.razor b/Presentation/HushianWebApp/Components/Base/ChatBubble.razor new file mode 100644 index 0000000..518fa17 --- /dev/null +++ b/Presentation/HushianWebApp/Components/Base/ChatBubble.razor @@ -0,0 +1,101 @@ +@using Hushian.Application.Dtos +@inject IJSRuntime JSRuntime + +
+ + @foreach (var msg in Messages) + { + @if (!target && ((!msg.IsRead && msg.Type == Hushian.Enums.ConversationType.UE) || Messages.Last() == msg)) + { + target = true; +
+ @if (!msg.IsRead && msg.Type == Hushian.Enums.ConversationType.UE) + { +

ـــــــــــــــــــــــــ

+ } + +
+ } + + + +
+
+ @msg.text +
+ @if (msg.Type == Hushian.Enums.ConversationType.EU) + { + if (msg.IsRead) + { + + + } + else + { + + + } + } + + +
+ + } +
+ + + +@code { + bool target = false; + [Parameter] + public List Messages { get; set; } = new(); + [Parameter] public EventCallback EventCallIsRead { get; set; } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await JSRuntime.InvokeVoidAsync("observeVisibility", DotNetObjectReference.Create(this)); + await JSRuntime.InvokeVoidAsync("scrollToTarget"); + + } + } + [JSInvokable] + public async Task MarkAsRead(int id) + { + var msg = Messages.FirstOrDefault(m => m.ID == id); + if (msg != null && !msg.IsRead && msg.Type==Hushian.Enums.ConversationType.UE) + { + msg.IsRead = true; + await EventCallIsRead.InvokeAsync(id); + } + await Task.CompletedTask; + } +} diff --git a/Presentation/HushianWebApp/Components/ChangePassWordComponent.razor b/Presentation/HushianWebApp/Components/ChangePassWordComponent.razor new file mode 100644 index 0000000..b72899f --- /dev/null +++ b/Presentation/HushianWebApp/Components/ChangePassWordComponent.razor @@ -0,0 +1,66 @@ +@using Common.Dtos.User +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject UserService userService; +@inject NavigationManager NavigationManager +@inject AuthService authService; +@inject ILocalStorageService localStorageService; +
+ + + + + + + + + + +
    +
  • رمز عبور باید حداقل دارای یک کاراکتر باشد
  • +
  • رمز عبور باید حداقل دارای یک کاراکتر انگلیسی بزرگ باشد
  • +
  • رمز عبور باید حداقل دارای یک کاراکتر انگلیسی کوچک باشد
  • +
  • رمز عبور باید حداقل دارای یک عدد باشد
  • +
+ +
+ +
+
+ +@code { + [Inject] protected ToastService ToastService { get; set; } = default!; + public bool SpinnerVisible { get; set; } + public ChangePasswordFromUserDto dto { get; set; } = new(); + public string RePassword { get; set; } = ""; + public string Username { get; set; } = ""; + protected override async Task OnParametersSetAsync() + { + Username = await localStorageService.GetItem("Username"); + dto = new() { UserName = Username }; + await base.OnParametersSetAsync(); + } + async Task Click() + { + if (string.IsNullOrEmpty(dto.OldPassword) || string.IsNullOrEmpty(dto.NewPassword)) + return; + + if (dto.NewPassword != RePassword) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "کلمه عبور با تکرار متفاوت است")); + return; + } + SpinnerVisible = true; + var result = await userService.ChangePasswordYourself(dto); + if (result) + { + ToastService.Notify(new ToastMessage(ToastType.Success, "تغییر کلمه عبور با موفقیت انجام شد")); + + await authService.Logout(); + NavigationManager.NavigateTo("/login"); + } + else ToastService.Notify(new ToastMessage(ToastType.Danger, "خطا در تغییر کلمه عبور")); + + SpinnerVisible = false; + } +} diff --git a/Presentation/HushianWebApp/Components/EditUserYourselfComponent.razor b/Presentation/HushianWebApp/Components/EditUserYourselfComponent.razor new file mode 100644 index 0000000..46225ad --- /dev/null +++ b/Presentation/HushianWebApp/Components/EditUserYourselfComponent.razor @@ -0,0 +1,106 @@ +@using Common.Dtos.User +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject UserService userService; +@inject ILocalStorageService localStorageService; +
+ + +
+ + +
+
+ +
+ +
+ + + + @if (model.img != null && model.img.Length > 0) + { + Uploaded Image + } + +
+ + @if (isAuthorizedCompanyUser) + { + + + } + +
+ +@code { + bool isAuthorizedCompanyUser = false; + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + public List Roles { get; set; } = new(); + public bool loading { get; set; } = false; + [Inject] protected ToastService ToastService { get; set; } = default!; + public EditUserFromUserDto model { get; set; } = new(); + protected override async Task OnInitializedAsync() + { + var user=await userService.GetCurrentUser(); + if (user!=null) + { + model.UserName=user.UserName; + model.img = user.img; + model.FullName = user.FullName; + model.Email = user.Email; + + Roles = await localStorageService.GetItem>("Role"); + isAuthorizedCompanyUser = Roles.Contains("HushianExperCompany") && await userService.CheckAvailableExperInCompany(); + } + else + { + ToastService.Notify(new ToastMessage(ToastType.Danger,"خطا در فراخوانی اطلاعات کاربر")); + } + await base.OnInitializedAsync(); + } + private async Task OnFileChange(InputFileChangeEventArgs e) + { + var file = e.File; + using (var memoryStream = new MemoryStream()) + { + await file.OpenReadStream().CopyToAsync(memoryStream); + model.img = memoryStream.ToArray(); + } + } + private string GetImageSource() + { + if (model.img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(model.img)}"; + } + return string.Empty; + } + async Task NewItem() + { + if (!string.IsNullOrEmpty(model.FullName)) + { + + if (string.IsNullOrEmpty(model.Email)) model.Email = $"{model.UserName}@hushian.ir"; + + loading = true; + if (await userService.EditUserYourself(model)) + { + loading = false; + await OnMultipleOfThree.InvokeAsync(model); + } + loading = false; + } + } + async Task FreeExper() + { + loading = true; + if (await userService.FreeExper()) + { + loading = false; + await OnMultipleOfThree.InvokeAsync(model); + } + loading = false; + } + +} diff --git a/Presentation/HushianWebApp/Components/GroupUsersComponent.razor b/Presentation/HushianWebApp/Components/GroupUsersComponent.razor new file mode 100644 index 0000000..d38a5a0 --- /dev/null +++ b/Presentation/HushianWebApp/Components/GroupUsersComponent.razor @@ -0,0 +1,75 @@ +@using Hushian.Application.Dtos +@using HushianWebApp.Service +@inject GroupService groupService; +@inject UserService userService; +@if (!Spinnervisible) +{ +
+
+ +
+
+ + + @item.FullName + + + + + +} + +
+ +
+ + +@code { + private string? ExperName; + private bool Spinnervisible = false; + + [Parameter] public int GroupID { get; set; } + public List Expers { get; set; } + = new(); + public List CoExpers { get; set; } + = new(); + protected override async Task OnParametersSetAsync() + { + Spinnervisible = true; + Expers = await groupService.GetExpersFromGroupID(GroupID); + Spinnervisible = false; + await base.OnParametersSetAsync(); + } +} +@functions { + private async Task> DataProvider(AutoCompleteDataProviderRequest request) + { + CoExpers = (await userService.GetExpersCompany(0, 0, 0)).list; + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = CoExpers.Where(w => w.FullName.Contains(request.Filter.Value)), TotalCount = CoExpers.Count() }); + } + + private async Task OnAutoCompleteChanged(HushianUserDto exper) + { + Spinnervisible = true; + if (exper != null + && !Expers.Any(a => a.UserID == exper.UserID) + && await groupService.JoinExperToGroup(GroupID, exper.UserID) ) + Expers.Add(exper); + Spinnervisible = false; + } + async Task UnJoin(HushianUserDto exper) + { + Spinnervisible = true; + if (exper != null && await groupService.UnJoinExperToGroup(GroupID, exper.UserID)) + Expers.Remove(exper); + Spinnervisible = false; + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Components/UpdateExperComponent.razor b/Presentation/HushianWebApp/Components/UpdateExperComponent.razor new file mode 100644 index 0000000..6a0f7bc --- /dev/null +++ b/Presentation/HushianWebApp/Components/UpdateExperComponent.razor @@ -0,0 +1,73 @@ +@using Common.Dtos.User +@using Hushian.Application.Dtos +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject UserService userService; + +
+ + +
+ + +
+
+ + +
+
+ + + + @if (model.img != null && model.img.Length > 0) + { + Uploaded Image + } + +
+ + + +
+ + +@code { + [Parameter] public EditUserFromUserDto model { get; set; } + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + public bool loading { get; set; } = false; +} +@functions{ + async Task NewItem() + { + if (!string.IsNullOrEmpty(model.FullName)) + { + if (string.IsNullOrEmpty(model.Email)) model.Email = $"{model.UserName}@hushian.ir"; + + loading = true; + if (await userService.ExperEditingFromManager(model)) + { + loading = false; + await OnMultipleOfThree.InvokeAsync(); + } + loading = false; + } + } + + private async Task OnFileChange(InputFileChangeEventArgs e) + { + var file = e.File; + using (var memoryStream = new MemoryStream()) + { + await file.OpenReadStream().CopyToAsync(memoryStream); + model.img = memoryStream.ToArray(); + } + } + private string GetImageSource() + { + if (model.img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(model.img)}"; + } + return string.Empty; + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Components/UpdateGroupComponent.razor b/Presentation/HushianWebApp/Components/UpdateGroupComponent.razor new file mode 100644 index 0000000..1c431a8 --- /dev/null +++ b/Presentation/HushianWebApp/Components/UpdateGroupComponent.razor @@ -0,0 +1,66 @@ +@using Hushian.Application.Dtos +@using HushianWebApp.Service +@inject GroupService groupService; +
+ + +
+ + +
+
+ + +
+
+ + + + @if (model.img != null && model.img.Length > 0) + { + Uploaded Image + } + +
+ + + +
+ +@code { + [Parameter] public GroupDto model { get; set; } + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + public bool loading { get; set; } = false; +} +@functions { + async Task NewItem() + { + if (!string.IsNullOrEmpty(model.Name)) + { + loading = true; + if (await groupService.UpdateGroup(model)) + { + loading = false; + await OnMultipleOfThree.InvokeAsync(); + } + loading = false; + } + } + private async Task OnFileChange(InputFileChangeEventArgs e) + { + var file = e.File; + using (var memoryStream = new MemoryStream()) + { + await file.OpenReadStream().CopyToAsync(memoryStream); + model.img = memoryStream.ToArray(); + } + } + private string GetImageSource() + { + if (model.img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(model.img)}"; + } + return string.Empty; + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Components/UserGroupsComponent.razor b/Presentation/HushianWebApp/Components/UserGroupsComponent.razor new file mode 100644 index 0000000..cfba780 --- /dev/null +++ b/Presentation/HushianWebApp/Components/UserGroupsComponent.razor @@ -0,0 +1,74 @@ +@using Hushian.Application.Dtos +@using HushianWebApp.Service +@inject GroupService groupService; + +@if (!Spinnervisible) +{ +
+
+ +
+
+ + + @item.Name + + + + + +} + + +
+ +
+@code { + private string? GroupName; + private bool Spinnervisible = false; + + [Parameter] public string ExperID { get; set; } + public List Groups { get; set; } + = new(); + public List CoGroups { get; set; } + = new(); + protected override async Task OnParametersSetAsync() + { + Spinnervisible = true; + Groups = await groupService.GetGroupsFromExperID(ExperID); + Spinnervisible = false; + await base.OnParametersSetAsync(); + } +} +@functions { + private async Task> DataProvider(AutoCompleteDataProviderRequest request) + { + CoGroups = await groupService.GetGroupsCompany(); + return await Task.FromResult(new AutoCompleteDataProviderResult { Data = CoGroups.Where(w=>w.Name.Contains(request.Filter.Value)), TotalCount = CoGroups.Count() }); + } + + private async Task OnAutoCompleteChanged(GroupDto group) + { + Spinnervisible = true; + if (group != null + && !Groups.Any(a => a.ID == group.ID) + && await groupService.JoinExperToGroup(group.ID, ExperID)) + Groups.Add(group); + Spinnervisible = false; + } + async Task UnJoin(GroupDto group) + { + Spinnervisible = true; + if (group != null && await groupService.UnJoinExperToGroup(group.ID, ExperID)) + Groups.Remove(group); + Spinnervisible = false; + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Components/UserPanel/ConversionHistoryComponent.razor b/Presentation/HushianWebApp/Components/UserPanel/ConversionHistoryComponent.razor new file mode 100644 index 0000000..06bb110 --- /dev/null +++ b/Presentation/HushianWebApp/Components/UserPanel/ConversionHistoryComponent.razor @@ -0,0 +1,41 @@ +@using Hushian.Application.Dtos +پیام های اخیر شما ... +
+ @foreach (var item in Conversations) + { +
+ + + @GetTitleCon(item.Title) + + +
    +
  • @item.ExperFullName (@item.Cdate item.Ctime)
  • +
+ @if (item.status == Hushian.Enums.ConversationStatus.InProgress && item.NoReadCount > 0) + { + @item.NoReadCount + } + + } + +
+
+ } + +
+ +@code { + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + [Parameter] public List Conversations { get; set; } + string GetTitleCon(string str) + { + if (str.Length > 15) return str.Substring(0, 15) + "..."; + return str; + + } +} diff --git a/Presentation/HushianWebApp/Components/Verification.razor b/Presentation/HushianWebApp/Components/Verification.razor new file mode 100644 index 0000000..9cae14e --- /dev/null +++ b/Presentation/HushianWebApp/Components/Verification.razor @@ -0,0 +1,128 @@ +@using Common.Dtos.User +@using Common.Enums +@using HushianWebApp.Service +@inject VerificationService verificationService; +@inject NavigationManager navigation; + +
+ Hushian + + @Title +
+

+@if (type == VerificationCodeType.ForgetPassword) +{ +
+ + +
+ +
+ + + + + +
+} +else +{ +
+ + + + +
+} +
+ + +
+ + + +@code { + [Parameter] + // PhoneNumberConfirmed + public VerificationCodeType type { get; set; } + [Parameter] + public string sendValue { get; set; } + [Parameter] + public int? ID { get; set; } + public string? code { get; set; } + [Parameter] public string? Title { get; set; } + [Inject] protected ToastService ToastService { get; set; } = default!; + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + public string? Value { get; set; } + public string? ReValue { get; set; } + bool loading = false; + string resendmsg = "ارسال مجدد"; + bool Disabledresendmsg = false; +} +@functions { + protected override async Task OnParametersSetAsync() + { + resendmsg = "در حال ارسال کد احراز ..."; + Disabledresendmsg = true; + if (ID == 0) + ID = await verificationService.FromUserName(sendValue, type); + ToastService.Notify(new(ToastType.Info, $"کد احراز به کاربری '{sendValue}' ارسال شد")); + + resendmsg = "ارسال مجدد"; + Disabledresendmsg = false; + + await base.OnParametersSetAsync(); + } + async Task onClickresend() + { + resendmsg = "در حال ارسال مجدد کد احراز ..."; + Disabledresendmsg = true; + if (ID == 0) + ID = await verificationService.FromUserName(sendValue, type); + else + { + await verificationService.ReSendCode(ID.Value); + } + + ToastService.Notify(new(ToastType.Info, $"کد احراز به کاربری '{sendValue}' ارسال شد")); + + resendmsg = "ارسال مجدد"; + Disabledresendmsg = false; + } + async Task onClick() + { + if (string.IsNullOrEmpty(code)) + { + ToastService.Notify(new(ToastType.Warning, $"کد ارسالی را وارد کنید")); + return; + } + + if (type == VerificationCodeType.ForgetPassword) + { + if (string.IsNullOrEmpty(Value) || string.IsNullOrEmpty(ReValue)) + { + ToastService.Notify(new(ToastType.Warning, $"کلمه عبور جدید را مشخص کنید")); + return; + } + else + { + if (Value != ReValue) + { ToastService.Notify(new(ToastType.Warning, $"کلمه عبور جدید و تکرار متفاوت هستند")); + return;} + } + + + + } + loading = true; + if (await verificationService.ConfirmedCode(new ConfirmedCodeDto() + { code = code, codeType = type, Id = ID.Value, value = Value })) + { + ToastService.Notify(new(ToastType.Success, $"احراز با موفقیت انجام شد برای ادامه ورود کنید")); + await OnMultipleOfThree.InvokeAsync(type); + + } + loading = false; + } +} + diff --git a/Presentation/HushianWebApp/Data/Dtos/ADDConversationDto.cs b/Presentation/HushianWebApp/Data/Dtos/ADDConversationDto.cs new file mode 100644 index 0000000..cf52559 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/ADDConversationDto.cs @@ -0,0 +1,17 @@ +using Hushian.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos +{ + public class ADDConversationDto + { + public string Question { get; set; } + public int? GroupID { get; set; } + public int? CompanyID { get; set; } + public string? ExperID { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/ADDConversationItemDto.cs b/Presentation/HushianWebApp/Data/Dtos/ADDConversationItemDto.cs new file mode 100644 index 0000000..c58dab3 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/ADDConversationItemDto.cs @@ -0,0 +1,21 @@ +using Hushian.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos +{ + public class ADDConversationItemDto + { + public int ConversationID { get; set; } + //public string? ExperID { get; set; } + // public ConversationType Type { get; set; } + public string text { get; set; } + public string? FileName { get; set; } + public string? FileType { get; set; } + public byte[]? FileContent { get; set; } + } + +} diff --git a/Presentation/HushianWebApp/Data/Dtos/ADDGroupDto.cs b/Presentation/HushianWebApp/Data/Dtos/ADDGroupDto.cs new file mode 100644 index 0000000..3d1294e --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/ADDGroupDto.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos +{ + public class ADDGroupDto + { + public string Name { get; set; } + public byte[]? img { get; set; } + public string? Info { get; set; } + public bool Available { get; set; } = true; + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/BaseDto.cs b/Presentation/HushianWebApp/Data/Dtos/BaseDto.cs new file mode 100644 index 0000000..cb0656c --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/BaseDto.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Common.Dtos +{ + public class BaseDto + { + public int Id { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/Company/AddCompanyDto.cs b/Presentation/HushianWebApp/Data/Dtos/Company/AddCompanyDto.cs new file mode 100644 index 0000000..b3ca3a3 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/Company/AddCompanyDto.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos.Company +{ + public class AddCompanyDto + { + public string Fullname { get; set; } + public string Info { get; set; } + // public string? UserIDManager { get; set; } + public string? Phone { get; set; } + public string? WebSite { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/Company/CompanyDto.cs b/Presentation/HushianWebApp/Data/Dtos/Company/CompanyDto.cs new file mode 100644 index 0000000..f7d9021 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/Company/CompanyDto.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos.Company +{ + public class CompanyDto + { + public int ID { get; set; } + public string Fullname { get; set; } + public string Info { get; set; } + public byte[]? img { get; set; } + public string? Phone { get; set; } + public string? WebSite { get; set; } + public string? Email { get; set; } + public bool Available { get; set; } + public bool allowBot { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/Company/ContentInfoDto.cs b/Presentation/HushianWebApp/Data/Dtos/Company/ContentInfoDto.cs new file mode 100644 index 0000000..c6b8fc1 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/Company/ContentInfoDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos.Company +{ + public class ContentInfoDto + { + public int ID { get; set; } + public string Content { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/ConversationDto.cs b/Presentation/HushianWebApp/Data/Dtos/ConversationDto.cs new file mode 100644 index 0000000..df94d1a --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/ConversationDto.cs @@ -0,0 +1,28 @@ +using Hushian.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos +{ + public class ConversationDto + { + public int ID { get; set; } + public string Title { get; set; } + public ConversationStatus status { get; set; } + public int? GroupID { get; set; } + // + public string? GroupName { get; set; } + public string UserID { get; set; } + // + public string? UserFullName { get; set; } + public string? ExperID { get; set; } + // + public string? ExperFullName { get; set; } + public string Cdate { get; set; } + public string Ctime { get; set; } + public int NoReadCount { get; set; } = 0; + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/ConversationItemDto.cs b/Presentation/HushianWebApp/Data/Dtos/ConversationItemDto.cs new file mode 100644 index 0000000..e8f0b29 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/ConversationItemDto.cs @@ -0,0 +1,23 @@ +using Hushian.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos +{ + public class ConversationItemDto + { + public int ID { get; set; } + public int ConversationID { get; set; } + public string? ExperID { get; set; } + public bool IsRead { get; set; } = false; + public string ExperName { get; set; } + public ConversationType Type { get; set; } + public string text { get; set; } + public string FileName { get; set; } + public string FileType { get; set; } + public byte[] FileContent { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/GroupDto.cs b/Presentation/HushianWebApp/Data/Dtos/GroupDto.cs new file mode 100644 index 0000000..15f732c --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/GroupDto.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos +{ + public class GroupDto + { + public int ID { get; set; } + public string Name { get; set; } + public byte[]? img { get; set; } + public string? Info { get; set; } + public bool Available { get; set; } + + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/IdName.cs b/Presentation/HushianWebApp/Data/Dtos/IdName.cs new file mode 100644 index 0000000..367e829 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/IdName.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos +{ + public class IdName + { + public T ID { get; set; } + public string Title { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/Identity/RoleDto.cs b/Presentation/HushianWebApp/Data/Dtos/Identity/RoleDto.cs new file mode 100644 index 0000000..8c3b575 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/Identity/RoleDto.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.Identity +{ + public class RoleDto + { + public RoleDto(string id, string name, string normalizedName) + { + Id = id; + Name = name; + NormalizedName = normalizedName; + } + + public string Id { get; set; } + public string Name { get; set; } + public string NormalizedName { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/Identity/VerificationDto.cs b/Presentation/HushianWebApp/Data/Dtos/Identity/VerificationDto.cs new file mode 100644 index 0000000..a1ced7b --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/Identity/VerificationDto.cs @@ -0,0 +1,18 @@ +using Common.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.Identity +{ + public class VerificationDto + { + public string UserId { get; set; } + public VerificationCodeType Type { get; set; } + public string Code { get; set; } + public string ToMobile { get; set; } + public string? Token { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/PagingDto.cs b/Presentation/HushianWebApp/Data/Dtos/PagingDto.cs new file mode 100644 index 0000000..827bdfc --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/PagingDto.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos +{ + public class PagingDto + { + public PagingDto(int RowCount, int pageCount, List list) + { + this.RowCount = RowCount; + this.list = list; + PageCount = pageCount; + + } + public int RowCount { get; set; } + public int PageCount { get; set; } + public List list { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/RegistrationDto.cs b/Presentation/HushianWebApp/Data/Dtos/RegistrationDto.cs new file mode 100644 index 0000000..a5027e5 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/RegistrationDto.cs @@ -0,0 +1,16 @@ +using Hushian.Application.Dtos.Company; +using Common.Dtos.User; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Application.Dtos +{ + public class RegistrationDto + { + public AddUserDto User { get; set; } + public AddCompanyDto Company { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/AddUserDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/AddUserDto.cs new file mode 100644 index 0000000..b5b2872 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/AddUserDto.cs @@ -0,0 +1,21 @@ +using Common.Enums.Identity; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class AddUserDto + { + public string Id { get; set; } = Guid.NewGuid().ToString(); + public string UserName { get; set; } + public string? DefultRoleID { get; set; } + public string PassWord { get; set; } + public string FullName { get; set; } + public string? Email { get; set; } + public string PhoneNumber { get; set; } + public byte[]? img { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/ChangeIsActieUserDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/ChangeIsActieUserDto.cs new file mode 100644 index 0000000..3918e99 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/ChangeIsActieUserDto.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class ChangeIsActieUserDto + { + public string UserName { get; set; } + public bool IsActive { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordDto.cs new file mode 100644 index 0000000..b9e1b4a --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordDto.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class ChangePasswordDto + { + public string UserName { get; set; } + public string NewPassword { get; set; } + + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordFromUserDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordFromUserDto.cs new file mode 100644 index 0000000..514c76f --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/ChangePasswordFromUserDto.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class ChangePasswordFromUserDto + { + public string UserName { get; set; } + public string OldPassword { get; set; } + public string NewPassword { get; set; } + + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/ChangeRoleUserDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/ChangeRoleUserDto.cs new file mode 100644 index 0000000..a82f97d --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/ChangeRoleUserDto.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class ChangeRoleUserDto + { + public string UserName { get; set; } + public string RoleID { get; set; } + + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/ConfirmedCodeDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/ConfirmedCodeDto.cs new file mode 100644 index 0000000..cbd0f31 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/ConfirmedCodeDto.cs @@ -0,0 +1,17 @@ +using Common.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class ConfirmedCodeDto + { + public int Id { get; set; } + public string code { get; set; } + public VerificationCodeType codeType { get; set; } + public string? value { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/EditUserDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/EditUserDto.cs new file mode 100644 index 0000000..804681e --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/EditUserDto.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class EditUserDto + { + public string UserName { get; set; } + public string FullName { get; set; } + public string? Email { get; set; } + public string? PhoneNumber { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/EditUserFromUserDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/EditUserFromUserDto.cs new file mode 100644 index 0000000..879a890 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/EditUserFromUserDto.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class EditUserFromUserDto + { + //key + public string UserName { get; set; } + public string? FullName { get; set; } + public string? Email { get; set; } + public byte[]? img { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/User/ReadUserDto.cs b/Presentation/HushianWebApp/Data/Dtos/User/ReadUserDto.cs new file mode 100644 index 0000000..6a1a181 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/User/ReadUserDto.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos.User +{ + public class ReadUserDto + { + public string UserName { get; set; } + public string Role { get; set; } = ""; + public string FullName { get; set; } + public string? Email { get; set; } + public string? PhoneNumber { get; set; } + public bool IsActive { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/UserDto.cs b/Presentation/HushianWebApp/Data/Dtos/UserDto.cs new file mode 100644 index 0000000..4ec3724 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/UserDto.cs @@ -0,0 +1,14 @@ + +namespace Hushian.Application.Dtos +{ + public class HushianUserDto + { + public string UserID { get; set; } + public string UserName { get; set; } + public string FullName { get; set; } + public byte[]? img { get; set; } + public bool Available { get; set; } = true; + public string? Email { get; set; } + public string PhoneNumber { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Dtos/condinationDto.cs b/Presentation/HushianWebApp/Data/Dtos/condinationDto.cs new file mode 100644 index 0000000..e7acdd7 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Dtos/condinationDto.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Dtos +{ + public class condination + { + public string PropName { get; set; } + public string Operation { get; set; } + public object? Value { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Enums/ConversationStatus.cs b/Presentation/HushianWebApp/Data/Enums/ConversationStatus.cs new file mode 100644 index 0000000..1e009bd --- /dev/null +++ b/Presentation/HushianWebApp/Data/Enums/ConversationStatus.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Enums +{ + public enum ConversationStatus + { + InProgress, Finished + } +} diff --git a/Presentation/HushianWebApp/Data/Enums/ConversationType.cs b/Presentation/HushianWebApp/Data/Enums/ConversationType.cs new file mode 100644 index 0000000..08d95e2 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Enums/ConversationType.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Hushian.Enums +{ + public enum ConversationType + { + EU=1, UE=2 + } +} diff --git a/Presentation/HushianWebApp/Data/Enums/Identity/Cors.cs b/Presentation/HushianWebApp/Data/Enums/Identity/Cors.cs new file mode 100644 index 0000000..3dc7dc1 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Enums/Identity/Cors.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Enums.Identity +{ + public enum Cors + { + MMRBNJD, Moadiran, Hushian + } +} diff --git a/Presentation/HushianWebApp/Data/Enums/VerificationCodeType.cs b/Presentation/HushianWebApp/Data/Enums/VerificationCodeType.cs new file mode 100644 index 0000000..904b053 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Enums/VerificationCodeType.cs @@ -0,0 +1,10 @@ +namespace Common.Enums +{ + public enum VerificationCodeType + { + PhoneNumberConfirmed, + ForgetPassword, + ChangeMobile, + Login + } +} diff --git a/Presentation/HushianWebApp/Data/Models/Identity/AuthRequest.cs b/Presentation/HushianWebApp/Data/Models/Identity/AuthRequest.cs new file mode 100644 index 0000000..5c21664 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Models/Identity/AuthRequest.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Common.Models.Identity +{ + public class AuthRequest + { + public AuthRequest(string username, string password) + { + Username = username; + Password = password; + } + + public string Username { get; set; } + public string Password { get; set; } + } + public class AuthRequestFromMobile + { + public string Mobile { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Models/Identity/AuthResponse.cs b/Presentation/HushianWebApp/Data/Models/Identity/AuthResponse.cs new file mode 100644 index 0000000..fbd0430 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Models/Identity/AuthResponse.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Common.Models.Identity +{ + public class AuthResponse + { + public string Id { get; set; } + public string UserName { get; set; } + public string Fullname { get; set; } + public List ? Roles { get; set; } + public string Token { get; set; } + public byte[]? img { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Models/ResponseBase.cs b/Presentation/HushianWebApp/Data/Models/ResponseBase.cs new file mode 100644 index 0000000..74adda3 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Models/ResponseBase.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Common.Models +{ + public class ResponseBase + { + public T? Value { get; set; } + public bool Success { get; set; }=false; + public List Errors { get; set; }=new List(); + + } +} diff --git a/Presentation/HushianWebApp/Data/Models/WindowSize.cs b/Presentation/HushianWebApp/Data/Models/WindowSize.cs new file mode 100644 index 0000000..26f0a14 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Models/WindowSize.cs @@ -0,0 +1,8 @@ +namespace HushianWebApp.Data.Models +{ + public class WindowSize + { + public int Width { get; set; } + public int Height { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Data/Models/ai/openAi/RequestModel.cs b/Presentation/HushianWebApp/Data/Models/ai/openAi/RequestModel.cs new file mode 100644 index 0000000..19b9205 --- /dev/null +++ b/Presentation/HushianWebApp/Data/Models/ai/openAi/RequestModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Common.Models.ai.openAi +{ + public class RequestModel + { + public string model { get; set; } + public string question { get; set; } + public string Context { get; set; } + } + +} diff --git a/Presentation/HushianWebApp/HushianWebApp.csproj b/Presentation/HushianWebApp/HushianWebApp.csproj new file mode 100644 index 0000000..d396efa --- /dev/null +++ b/Presentation/HushianWebApp/HushianWebApp.csproj @@ -0,0 +1,33 @@ + + + + net9.0 + enable + enable + service-worker-assets.js + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Presentation/HushianWebApp/Layout/BeforeLayout.razor b/Presentation/HushianWebApp/Layout/BeforeLayout.razor new file mode 100644 index 0000000..e5051c5 --- /dev/null +++ b/Presentation/HushianWebApp/Layout/BeforeLayout.razor @@ -0,0 +1,29 @@ +@inherits LayoutComponentBase +
+ + +
+
+ @Body +
+
+
+ +
+ +
+

نکات امنیتی

+
    +
  • + هرگز اطلاعات حساب کاربری (نام کاربری و کلمه عبور) خود را در اختیار دیگران قرار ندهید. +
  • +
  • + پس از اتمام کار با سامانه، حتما بر روی دکمه خروج از سامانه کلیک نمایید. +
  • + +
+
+
+
+ +
\ No newline at end of file diff --git a/Presentation/HushianWebApp/Layout/EmpLayout.razor b/Presentation/HushianWebApp/Layout/EmpLayout.razor new file mode 100644 index 0000000..f52a20a --- /dev/null +++ b/Presentation/HushianWebApp/Layout/EmpLayout.razor @@ -0,0 +1,11 @@ +@inherits LayoutComponentBase +
+ + +
+ @Body + + +
+ +
\ No newline at end of file diff --git a/Presentation/HushianWebApp/Layout/MainLayout.razor b/Presentation/HushianWebApp/Layout/MainLayout.razor new file mode 100644 index 0000000..bd14c7d --- /dev/null +++ b/Presentation/HushianWebApp/Layout/MainLayout.razor @@ -0,0 +1,243 @@ +@inherits LayoutComponentBase +@using Common.Dtos.User +@using HushianWebApp.Components +@using HushianWebApp.Pages +@using HushianWebApp.Pages.Manage +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject NavigationManager NavigationManager +@inject ILocalStorageService localStorageService; +@inject AuthService authService; +@inject BaseController baseController; +@inject UserService userService; + + +
+ +
+
+
+
@Fullname
+
@TitleRole
+
+ @if (img != null && img.Length > 0) + { + placeholder + + } + else + { + + } + + + + + + +
+ +
+
+ @if (isonline) + { + @if (isAuthorizedCompanyUser) + { + @Body + } + else + { +

دسترسی به شرکت برای شما یافت نشد

+ } + } + +
+
+
+ +
+ +@code { + private Modal modal = default!; + public string Info { get; set; } = ""; + private string SelectedMenu = "page2"; + public string Username { get; set; } + public string Fullname { get; set; } + public byte[]? img { get; set; } + public List Roles { get; set; } = new(); + bool isonline = false; + bool isAuthorizedCompanyUser = false; + public string TitleRole { get; set; } = ""; + protected override async Task OnInitializedAsync() + { + await CheckOnline(); + if (isonline) + { + //Roles = await localStorageService.GetItem>("Role"); + Username = await localStorageService.GetItem("Username"); + Fullname = await localStorageService.GetItem("Fullname"); + string UserID = await localStorageService.GetItem("UserID"); + img = await localStorageService.GetItem("img"); + } + + + TitleRole = Roles.Any(a => a == "HushianManagerCompany") ? "مدیر" : "کارشناس"; + + isAuthorizedCompanyUser = Roles.Contains("HushianManagerCompany") || (Roles.Contains("HushianExperCompany") && await userService.CheckAvailableExperInCompany()); + + string route = NavigationManager.Uri.Replace(NavigationManager.BaseUri, "").ToLower(); + if (route.Length > 0) + { + SelectedMenu = route switch + { + "conversation" => "page2", + "usermanagement" => "page3", + "groupmanagement" => "page4", + "settings" => "page5", + _ => "page1" + }; + + } + else SelectedMenu = "page1"; + + + await base.OnInitializedAsync(); + } + async Task OnCliclLogout() + { + await authService.Logout(); + NavigationManager.NavigateTo("/login"); + } + private async Task ChangePasword() + { + var parameters = new Dictionary(); + parameters.Add("Username", Username); + await modal.ShowAsync(title: "تغییر رمز عبور", parameters: parameters); + + } + private async Task Settings() + { + var parameters = new Dictionary(); + await modal.ShowAsync(title: "تنظیمات شرکت", parameters: parameters); + + } + private async Task EditCurrentUser() + { + var parameters = new Dictionary(); + parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); + + await modal.ShowAsync(title: $"ویرایش کاربر {Username}", parameters: parameters); + + } + async Task CallBack(EditUserFromUserDto edit) + { + await modal.HideAsync(); + img = edit.img; + await localStorageService.RemoveItem("img"); + await localStorageService.SetItem("img", img); + + Fullname = edit.FullName; + await localStorageService.RemoveItem("Fullname"); + await localStorageService.SetItem("Fullname", Fullname); + + } + private void SetActiveMenu(string menu) + { + SelectedMenu = menu; + + if (menu == "page1") NavigationManager.NavigateTo("/"); + + else if (menu == "page2") NavigationManager.NavigateTo("/Conversation"); + + else if (menu == "page3") NavigationManager.NavigateTo("/UserManagement"); + + else if (menu == "page4") NavigationManager.NavigateTo("/GroupManagement"); + + else if (menu == "page5") NavigationManager.NavigateTo("/Settings"); + + } + + async Task CheckOnline() + { + var token = await localStorageService.GetItem("key"); + if (string.IsNullOrEmpty(token)) + { + isonline = false; + NavigationManager.NavigateTo("/login"); + } + else + { + await baseController.RemoveToken(); + await baseController.SetToken(token); + if (!await authService.IsOnline()) + { + await baseController.RemoveToken(); + isonline = false; + NavigationManager.NavigateTo("/login"); + } + else + { + Roles = await localStorageService.GetItem>("Role"); + if (Roles.Count == 1 && Roles.Contains("HushianUserCompany")) + { + isonline = false; + NavigationManager.NavigateTo("/NotFound"); + } + else + isonline = true; + + } + } + + } + private string GetImageSource() + { + if (img != null && img.Length > 0) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(img)}"; + } + return "/defprofile.jpg"; + } +} + +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + // new NavItem { Href = "/", IconName = IconName.HouseDoorFill, Text = "خانه"}, + // new NavItem { Href = "/Conversation", IconName = IconName.ChatText, Text = " گفتگو ها"}, + new NavItem { Href = "/", IconName = IconName.ChatText, Text = " گفتگو ها"}, + new NavItem { Href = "/UserManagement", IconName = IconName.PersonBoundingBox, Text = " مدیریت کاربران"}, + new NavItem { Href = "/GroupManagement", IconName = IconName.Grid1X2, Text = " مدیریت گروه ها"}, + new NavItem { Href = "/Settings", IconName = IconName.Hammer, Text = " تنظیمات"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Layout/MainLayout.razor.css b/Presentation/HushianWebApp/Layout/MainLayout.razor.css new file mode 100644 index 0000000..ecf25e5 --- /dev/null +++ b/Presentation/HushianWebApp/Layout/MainLayout.razor.css @@ -0,0 +1,77 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row ::deep .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + text-decoration: none; + } + + .top-row ::deep a:hover, .top-row ::deep .btn-link:hover { + text-decoration: underline; + } + + .top-row ::deep a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row { + justify-content: space-between; + } + + .top-row ::deep a, .top-row ::deep .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row.auth ::deep a:first-child { + flex: 1; + text-align: right; + width: 0; + } + + .top-row, article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} diff --git a/Presentation/HushianWebApp/Layout/NavMenu.razor b/Presentation/HushianWebApp/Layout/NavMenu.razor new file mode 100644 index 0000000..a2be1e1 --- /dev/null +++ b/Presentation/HushianWebApp/Layout/NavMenu.razor @@ -0,0 +1,55 @@ +
+ + + +
+
+ + About +
+ +
+
Page content goes here
+
+
+ +
+ +@code { + Sidebar sidebar = default!; + IEnumerable? navItems; + + private async Task SidebarDataProvider(SidebarDataProviderRequest request) + { + if (navItems is null) + navItems = GetNavItems(); + + return await Task.FromResult(request.ApplyTo(navItems)); + } + + private IEnumerable GetNavItems() + { + navItems = new List + { + new NavItem { Id = "1", Href = "/getting-started", IconName = IconName.HouseDoorFill, Text = "Getting Started"}, + + new NavItem { Id = "2", IconName = IconName.LayoutSidebarInset, Text = "Content", IconColor = IconColor.Primary }, + new NavItem { Id = "3", Href = "/icons", IconName = IconName.PersonSquare, Text = "Icons", ParentId="2"}, + + new NavItem { Id = "4", IconName = IconName.ExclamationTriangleFill, Text = "Components", IconColor = IconColor.Success }, + new NavItem { Id = "5", Href = "/alerts", IconName = IconName.CheckCircleFill, Text = "Alerts", ParentId="4"}, + new NavItem { Id = "6", Href = "/breadcrumb", IconName = IconName.SegmentedNav, Text = "Breadcrumb", ParentId="4"}, + new NavItem { Id = "7", Href = "/sidebar", IconName = IconName.LayoutSidebarInset, Text = "Sidebar", ParentId="4"}, + + new NavItem { Id = "8", IconName = IconName.WindowPlus, Text = "Forms", IconColor = IconColor.Danger }, + new NavItem { Id = "9", Href = "/autocomplete", IconName = IconName.InputCursorText, Text = "Auto Complete", ParentId="8"}, + new NavItem { Id = "10", Href = "/currency-input", IconName = IconName.CurrencyDollar, Text = "Currency Input", ParentId="8"}, + new NavItem { Id = "11", Href = "/number-input", IconName = IconName.InputCursor, Text = "Number Input", ParentId="8"}, + new NavItem { Id = "12", Href = "/switch", IconName = IconName.ToggleOn, Text = "Switch", ParentId="8"}, + }; + + return navItems; + } + + private void ToggleSidebar() => sidebar.ToggleSidebar(); +} diff --git a/Presentation/HushianWebApp/Layout/UserPanelLayout.razor b/Presentation/HushianWebApp/Layout/UserPanelLayout.razor new file mode 100644 index 0000000..0b7b562 --- /dev/null +++ b/Presentation/HushianWebApp/Layout/UserPanelLayout.razor @@ -0,0 +1,4 @@ +@inherits LayoutComponentBase + + @Body + \ No newline at end of file diff --git a/Presentation/HushianWebApp/Pages/Auth/ForgetPassword.razor b/Presentation/HushianWebApp/Pages/Auth/ForgetPassword.razor new file mode 100644 index 0000000..aef1638 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Auth/ForgetPassword.razor @@ -0,0 +1,101 @@ +@page "/ForgetPassword" +@layout BeforeLayout +@using Common.Enums +@using HushianWebApp.Components +@inject NavigationManager navigationManager; + + +هوشیان / بازیابی کلمه عبور + +
+ + +
+ Hushian + + بازیابی کلمه عبور + +
+ + + +
+
+ +
+ + +
+ +
+ + @*
+ +
captcha
+ +
*@ + +
+ + + برگشت + +
+ +
+ + +
+ +@code { + public string Username { get; set; } + private Modal modal = default!; + [Inject] protected ToastService ToastService { get; set; } = default!; + public bool Loading { get; set; } + +} +@functions { + async Task onClickforgetpass() + { + if (string.IsNullOrEmpty(Username)) + { + ToastService.Notify(new(ToastType.Primary, $"برای فراموشی رمز نیاز نام کاربری /موبایل را وارد کنید")); + return; + } + + Loading = true; + await forgetpass(); + Loading = false; + } + async Task forgetpass() + { + var parameters = new Dictionary(); + parameters.Add("type", VerificationCodeType.ForgetPassword); + parameters.Add("sendValue", Username); + parameters.Add("ID", 0); + parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBackVer)); + parameters.Add("Title", "بازیابی کلمه عبور"); + await modal.ShowAsync(title: "احراز", parameters: parameters); + } + async Task CallBackVer(VerificationCodeType type) + { + await modal.HideAsync(); + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Pages/Auth/Login.razor b/Presentation/HushianWebApp/Pages/Auth/Login.razor new file mode 100644 index 0000000..0354e1f --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Auth/Login.razor @@ -0,0 +1,124 @@ +@page "/Login" +@using Common.Enums +@using Common.Models.Identity +@using HushianWebApp.Components +@using HushianWebApp.Service +@layout BeforeLayout + +@inject AuthService auth; +@inject NavigationManager navigationManager; +هوشیان / ورود بخش شرکت ها + + +
+ Hushian + + ورود + به هوشیان +
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+ + + +
+
+
+ +
+
+ فراموشی کلمه‌ عبور +
+ + + +
+
+
+
+ + +
+
+ + ثبت نام + + +
+ +
+@code { + [Inject] protected ToastService ToastService { get; set; } = default!; + private ConfirmDialog dialog = default!; + + private Modal modal = default!; + public string username { get; set; } + public string Password { get; set; } + public bool Loading { get; set; } +} +@functions { + + + + async Task onClick() + { + + if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(Password)) return; + Loading = true; + var msg = await auth.login(new AuthRequest(username, Password)); + if (msg == "PhoneNumberNotConfirmed") + { + var confirmation = await dialog.ShowAsync( + title: "احراز کاربری", + message1: "کاربری/ موبایل شما فعال نشده برای ورود باید احراز کنید", + message2: "انجام بدیم؟"); + if (!confirmation) + { + Loading = false; + return; + } + await verification(); + } + else if (msg == "ok") + { + navigationManager.NavigateTo("/"); + } + + + + Loading = false; + } + async Task verification() + { + var parameters = new Dictionary(); + parameters.Add("type", VerificationCodeType.PhoneNumberConfirmed); + parameters.Add("sendValue", username); + parameters.Add("ID", 0); + parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBackVer)); + parameters.Add("Title", "کاربری/ موبایل شما فعال نشده برای ورود باید احراز کنید"); + await modal.ShowAsync(title: "احراز", parameters: parameters); + } + + async Task CallBackVer(VerificationCodeType type) + { + await modal.HideAsync(); + } +} diff --git a/Presentation/HushianWebApp/Pages/Auth/Register.razor b/Presentation/HushianWebApp/Pages/Auth/Register.razor new file mode 100644 index 0000000..8c666ed --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Auth/Register.razor @@ -0,0 +1,197 @@ +@page "/Register" +@using Common.Enums +@using HushianWebApp.Components +@using HushianWebApp.Service +@layout BeforeLayout +@inject CompanyService companyService; +@inject NavigationManager navigationManager; + + +هوشیان / ثبت نام +
+ Hushian + حساب کاربری خود را در هوشیان بسازید +
+
+
+ + + +
+
+ کاربر گرامی، لطفاً توجه فرمایید که شماره‌همراه واردشده به نام خودتان باشد . +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ + + +
+
+
+
+
+ +
+ +
+
+ + + +
+
+
+
+ + + +@*
+ + +
+ captcha + + +
+ + +
*@ + +
+ + +
+ +
+ + +@code { + [Inject] protected ToastService ToastService { get; set; } = default!; + public string Orgcap { get; set; } = ""; + public string imgcap { get; set; } = ""; + public string CapUser { get; set; } + private Modal modal = default!; + public bool Loading { get; set; } + public string FullName { get; set; } + public string Password { get; set; } + public string RePassword { get; set; } + //mobile + public string PhoneNumber { get; set; } + public string? Email { get { return $"{PhoneNumber}@hushian.ir"; } } + public string? WebSite { get { return $"{PhoneNumber}.ir"; } } +} +@functions { + protected override async Task OnInitializedAsync() + { + Orgcap = CaptchaService.GetCaptchaWord(4); + imgcap = CaptchaService.GenerateCaptchaBase64(Orgcap); + await base.OnInitializedAsync(); + } + async Task onClick() + { + //-----------validate + if (string.IsNullOrEmpty(FullName)) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "نام نمی تواند خالی باشد")); + return; + } + if (FullName.Length < 5) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "نام را کامل وارد کنید")); + return; + } + if (Password.Length < 5) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "کلمه عبور باید بیشتر از 4کاراکتر باشد")); + return; + } + if (Password != RePassword) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "کلمه عبور و تکرار آن یکسان نیست")); + return; + } + if (!PhoneNumber.StartsWith("09") || PhoneNumber.Length!=11) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "فرمت موبایل صحیح نمی باشد")); + return; + } + if (!string.IsNullOrEmpty(Email) && (!Email.Contains("@") || !Email.Contains(".") || Email.Length < 4)) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "فرمت ایمیل صحیح نمی باشد")); + return; + } + if (!string.IsNullOrEmpty(WebSite) && (!WebSite.Contains(".") || WebSite.Length < 4)) + { + ToastService.Notify(new ToastMessage(ToastType.Danger, "فرمت وب سایت صحیح نمی باشد")); + return; + } + //------------------- + Loading = true; + var ID = await companyService.RegisterCompany(new Hushian.Application.Dtos.RegistrationDto() + { + Company = new() + { + Fullname = FullName, + Info = "" , + WebSite = WebSite + }, + User = new() + { + Email = Email, + FullName = FullName, + PhoneNumber = PhoneNumber, + UserName = PhoneNumber, + PassWord = Password + } + }); + Loading = false; + if (ID > 0) + { + var parameters = new Dictionary(); + parameters.Add("type", VerificationCodeType.PhoneNumberConfirmed); + parameters.Add("sendValue", PhoneNumber); + parameters.Add("ID", ID); + parameters.Add("Title", "ثبت نام با موفقیت انجام شد برای استفاده کاربری را احذار کنید"); + parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBackVer)); + await modal.ShowAsync(title: "احراز", parameters: parameters); + } + + } + async Task CallBackVer(VerificationCodeType type) + { + await modal.HideAsync(); + navigationManager.NavigateTo("Login"); + } +} diff --git a/Presentation/HushianWebApp/Pages/Conversation.razor b/Presentation/HushianWebApp/Pages/Conversation.razor new file mode 100644 index 0000000..762a1d7 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Conversation.razor @@ -0,0 +1,424 @@ +@page "/Conversation" +@page "/" +@inject IJSRuntime JS + +@using Hushian.Application.Dtos +@using HushianWebApp.Data.Models +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject ILocalStorageService localStorageService; +@inject NavigationManager navigationManager; +@inject ConversationService conversationService; + + + @Content + + + +
+
+ +
+ +
+ گفتگو های اخیر +
+ + + +
+ + + + + + + + + + + + + + +
+ + +
+ + @if (isSelectedInbox1) + { + @foreach (var item in Inbox1Items) + { +
+ +
+
+ @item.UserFullName + @item.Cdate + @item.Ctime +
+
@item.Title
+
+ @if (item.NoReadCount > 0) + { + @item.NoReadCount + } + +
+ + + + } + } + + @if (isSelectedInbox2) + { + @foreach (var item in Inbox2Items) + { +
+ +
+
+ @item.UserFullName + @item.Cdate + @item.Ctime +
+
@item.Title
+
+ @if (item.NoReadCount>0) + { + @item.NoReadCount + } + + +
+ + } + } + + @if (isSelectedInbox3) + { + @foreach (var item in Inbox3Items) + { +
+ +
+
+ @item.UserFullName + @item.Cdate + @item.Ctime +
+
@item.Title
+
+ +
+ + } + } + +
+
+ + + + @if (maximomeallowsize < width) + { + @Content + } + + +
+
+ + +@code { + private Modal modal = default!; + int maximomeallowsize = 700; + private int width; + private int height; + public RenderFragment Content { get; set; } + private DotNetObjectReference? objRef; + int colmdB = 9; + bool chatloading = false; + bool convloading = false; + public string MsgInput { get; set; } + bool isSelectedInbox1 = false; + bool isSelectedInbox2 = true; + bool isSelectedInbox3 = false; + + public int countInbox1 { get { return Inbox1Items.Count(); } } + public int countInbox2 { get { return Inbox2Items.Count(); } } + + public List Inbox1Items { get; set; } + = new() ; + public List Inbox2Items { get; set; } + = new(); + public List Inbox3Items { get; set; } + = new(); + + public ConversationDto? SelectedConversation { get; set; } = null; + public List? SelectedConversationItems { get; set; } + = null; + public string SelectedChatUserName { get; set; } = "مهدی ربیع نژاد"; + public List Roles { get; set; } + public string UserID = ""; + async Task OnclickInbox(int ID) + { + switch (ID) + { + case 1: + isSelectedInbox1 = true; + isSelectedInbox2 = false; + isSelectedInbox3 = false; + break; + + case 2: + isSelectedInbox2 = true; + isSelectedInbox1 = false; + isSelectedInbox3 = false; + break; + + case 3: + isSelectedInbox3 = true; + isSelectedInbox2 = false; + isSelectedInbox1 = false; + break; + } + SelectedConversation = null; + SelectedConversationItems = null; + + } + async Task SendMsg() + { + if (!string.IsNullOrEmpty(MsgInput) && SelectedConversationItems!=null) + { + await conversationService.ADDConversationItemFromCompanySide(SelectedConversationItems[0].ConversationID, MsgInput); + SelectedConversationItems?.Add(new() { text = MsgInput, Type = Hushian.Enums.ConversationType.EU }); + SelectedConversation.Title = MsgInput; + await Task.Yield(); + await JS.InvokeVoidAsync("scrollToBottom", "B1"); + MsgInput = string.Empty; + } + } + private async Task HandleKeyDown(KeyboardEventArgs e) + { + if (e.Key == "Enter") + { + await SendMsg(); + } + } + async Task onClickSelectedCon(int InboxID,ConversationDto conversationDto) + { + // پر کردن SelectedCon + // مقدار دادن به SelectedChatUserName + chatloading = true; + SelectedChatUserName = "در حال گفتگو با "+ conversationDto.UserFullName; + SelectedConversation = conversationDto; + SelectedConversationItems = await conversationService.GetConversationItems(conversationDto.ID); + chatloading = false; + + if (maximomeallowsize > width) + { + //await LoadSessionB(12); + await modal.ShowAsync(); + } + + + } +} +@functions{ + protected override async Task OnInitializedAsync() + { + Roles = await localStorageService.GetItem>("Role"); + + + + UserID= await localStorageService.GetItem("UserID"); + convloading = true; + await LoadSessionB(); + Inbox1Items =await conversationService.ConversationAwaitingOurResponse(); + Inbox2Items =await conversationService.MyConversationIsInProgress(); + Inbox3Items =await conversationService.MyConversationIsFinished(); + convloading = false; + await base.OnInitializedAsync(); + } + async Task IsrEADaCTION(int id) + { + if( await conversationService.MarkAsReadConversationItemAsync(id)) + { + if (isSelectedInbox1) Inbox1Items = await conversationService.ConversationAwaitingOurResponse(); + + else if (isSelectedInbox2) Inbox2Items = await conversationService.MyConversationIsInProgress(); + + else + { + Inbox1Items = await conversationService.ConversationAwaitingOurResponse(); + Inbox2Items = await conversationService.MyConversationIsInProgress(); + } + } + + } + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + objRef = DotNetObjectReference.Create(this); + await JS.InvokeVoidAsync("registerResizeCallback", objRef); + + await GetWindowSize(); + } + } + [JSInvokable] + public async Task OnResize() + { + await GetWindowSize(); + + if (maximomeallowsize < width) + { + await modal.HideAsync(); + await LoadSessionB(9); + } + + else await LoadSessionB(12); + + StateHasChanged(); + } + private async Task GetWindowSize() + { + var size = await JS.InvokeAsync("getWindowSize"); + width = size.Width; + height = size.Height; + } + async Task LoadSessionB(int md=9) + { + Content = @
+
+ @if (SelectedConversation!=null) + { +

@SelectedChatUserName

+ + @if ( SelectedConversation.status==Hushian.Enums.ConversationStatus.InProgress) + { + + + + } + else if (SelectedConversation.status == Hushian.Enums.ConversationStatus.Finished + && (Roles.Contains("HushianManagerCompany") || SelectedConversation.ExperID == UserID)) + { + + } + + } + +
+ +
+ @if (SelectedConversationItems != null) + { + + } + else + { +
+ + +

+ هوشیان +

+
+ + + } + +
+ + + + + @if (SelectedConversation != null && SelectedConversation.status!=Hushian.Enums.ConversationStatus.Finished && SelectedConversationItems != null) + { + +
+ + + + + +
+ } + + +
+ ; + } +} + + \ No newline at end of file diff --git a/Presentation/HushianWebApp/Pages/Error/NotFound.razor b/Presentation/HushianWebApp/Pages/Error/NotFound.razor new file mode 100644 index 0000000..a19d0f9 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Error/NotFound.razor @@ -0,0 +1,6 @@ +

NotFound

+@page "/NotFound" +@layout EmpLayout +@code { + +} diff --git a/Presentation/HushianWebApp/Pages/Error/Unhandled.razor b/Presentation/HushianWebApp/Pages/Error/Unhandled.razor new file mode 100644 index 0000000..72f865b --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Error/Unhandled.razor @@ -0,0 +1,7 @@ +@layout EmpLayout +@page "/Unhandled" +

خطای کنترل نشده

+ +@code { + +} diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/ChatBoxComponent.razor b/Presentation/HushianWebApp/Pages/FromUserSide/ChatBoxComponent.razor new file mode 100644 index 0000000..398e656 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/FromUserSide/ChatBoxComponent.razor @@ -0,0 +1,27 @@ +@using Hushian.Application.Dtos + +
+ +
+ سلام + +
+ + +
+
+
+ جهت خرید در سایت در هنگام درج اطلاعات به‌خصوص کد اقتصادی دقت نمائید صورتحساب شما بر همین اساس ارسال خواهد شد در هنگام درج اطلاعات به‌خصوص کد اقتصادی دقت نمائید صورتحساب شما بر همین اساس ارسال خواهد شد ثبت نام نموده و سپس از منو فروشگاه اقدام به انتخاب محصول مورد نظر خود نمائید.

+ +
+ + +
+ + +@code { + [Parameter] public List Conversations { get; set; } + [Parameter] public List SelectedConversationItems { get; set; } +} diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/GCComponent.razor b/Presentation/HushianWebApp/Pages/FromUserSide/GCComponent.razor new file mode 100644 index 0000000..f14e395 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/FromUserSide/GCComponent.razor @@ -0,0 +1,53 @@ +@inject ConversationService conversationService +@using Hushian.Application.Dtos +@using HushianWebApp.Service +@if (groups.Where(w => w.Available).Count() > 0) +{ + @Content + +} + + +@code { + [Parameter] + public List groups { get; set; } + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + [Parameter] public int CompanyID { get; set; } + async Task onClickSelectedGroup(int ID) + { + await OnMultipleOfThree.InvokeAsync(ID); + } + RenderFragment Content { get; set; } + List ints = new(); + protected override async Task OnParametersSetAsync() + { + foreach (var g in groups.Where(w => w.Available)) + { + ints.Add(new() + { + k=g.ID, + v = await conversationService.GetCountQueueCompany(CompanyID, g.ID) + }); + } + + Content =@
+ گروه های فعال
+ + @foreach (var g in groups.Where(w=>w.Available)) + { + + + } +
+ ; + await base.OnParametersSetAsync(); + } + public class kv + { + public int k { get; set; } + public int v { get; set; } + } +} diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/LoginComponent.razor b/Presentation/HushianWebApp/Pages/FromUserSide/LoginComponent.razor new file mode 100644 index 0000000..84f89b8 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/FromUserSide/LoginComponent.razor @@ -0,0 +1,70 @@ +@using HushianWebApp.Service +@inject AuthService AuthService +
+ نیاز برای ارتباط با کارشناسان وارد شود +
+
+ + + @if (ID==0) + { + +
+ +
+ + +
+ +
+ } + else{ + + +
+ +
+ + +
+ +
+ } + +
+ + +@code { + private bool visible = false; + [Parameter] public EventCallback OnMultipleOfThree { get; set; } + public string Username { get; set; } + public int ID { get; set; } = 0; + public string Code { get; set; } = string.Empty; +} +@functions{ + async Task Login() + { + visible = true; + ID= await AuthService.login(Username); + visible = false; + } + async Task ver() + { + visible = true; + if(await AuthService.Verificationlogin(ID, Code)) + await OnMultipleOfThree.InvokeAsync(); + visible = false; + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/UserPanel.razor b/Presentation/HushianWebApp/Pages/FromUserSide/UserPanel.razor new file mode 100644 index 0000000..2c6a990 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/FromUserSide/UserPanel.razor @@ -0,0 +1,243 @@ +@using Hushian.Application.Dtos +@using Hushian.Application.Dtos.Company +@using HushianWebApp.Components.UserPanel +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject IJSRuntime JSRuntime +@inject CompanyService companyService +@inject GroupService groupService +@inject ILocalStorageService localStorageService; +@inject AuthService authService; +@inject BaseController baseController; +@inject ConversationService conversationService +@layout UserPanelLayout +@page "/UserPanel/{CompanyID:int}" +@page "/UserPanel/{CompanyID:int}/{ConversationID:int?}" + +
+
+ + @CompanyName / @groups.FirstOrDefault(f => f.ID == SelectedGroup)?.Name / @SelectedConversation?.ExperFullName
+ + پاسخگویی سوالات شما هستیم +
+ +
+
+ + @if (!IsLogin) + { + + } + @if (IsLogin) + { + @if (SelectedConversation == null) + { + + @GCContent + + @if (Conversations.Count > 0) + { + @ConversationsContent + } + + + } + else + { + + } + + + + } + +
+ @if (IsLogin && (Conversations.Count == 0 && SelectedConversation == null) || (Conversations.Count > 0 && SelectedConversation != null && SelectedConversation.status == Hushian.Enums.ConversationStatus.InProgress)) + { +
+ + + + + +
+ } + +
+ +@code { + #region Parameter + [Parameter] public int CompanyID { get; set; } + [Parameter] public int? ConversationID { get; set; } + #endregion + #region Fild + public ConversationDto? SelectedConversation { get; set; } = null; + public List Conversations { get; set; } = new(); + public List? SelectedConversationItems { get; set; } = null; + public RenderFragment GCContent { get; set; } + public RenderFragment ConversationsContent { get; set; } + List groups = new List(); + public CompanyDto company { get; set; } = new(); + int CountQueueCompany = 0; + public string CompanyName { get; set; } = "هوشیان"; + public bool IsLogin { get; set; } = false; + public int? SelectedGroup { get; set; } + public string InputMessage { get; set; } + public bool Sending { get; set; } = false; + #endregion +} +@functions { + + protected override async Task OnParametersSetAsync() + { + if (ConversationID.HasValue && ConversationID > 0 && Conversations.Count > 0) + await SelectedConv(ConversationID.Value); + + await base.OnParametersSetAsync(); + } + protected override async Task OnInitializedAsync() + { + await CheckOnline(); + await base.OnInitializedAsync(); + } + async Task CheckOnline() + { + var token = await localStorageService.GetItem("key"); + if (string.IsNullOrEmpty(token)) + { + IsLogin = false; + } + else + { + await baseController.RemoveToken(); + await baseController.SetToken(token); + if (!await authService.IsOnline()) + { + await baseController.RemoveToken(); + IsLogin = false; + } + else + { + IsLogin = true; + await Login(); + } + + } + + } + async Task CallBackSelectedGroup(int ID) + { + SelectedGroup = ID; + StateHasChanged(); + } + async Task Login() + { + // اینجا منطق ورود کاربر را پیاده‌سازی کنید + IsLogin = true; + var _company = await companyService.GetCompany(CompanyID); + if (_company == null) + { + // not Founf Company + } + else + { + if (!_company.Available) + { + // not Available Company + } + else + { + CompanyName = _company.Fullname; + company = _company; + + var _groups = await groupService.GetGroupsCompany(CompanyID); + if (_groups != null) + { + CountQueueCompany = await conversationService.GetCountQueueCompany(CompanyID); + groups = _groups; + GCContent =@ + ; + Conversations = await conversationService.MyConversationUserSide(CompanyID); + if (Conversations.Count > 0) + ConversationsContent =@ + ; + } + else + { + // ex Groups Company + } + + } + + } + StateHasChanged(); + } + async Task SelectedConv(int ID) + { + + if (Conversations.Any(f => f.ID == ID)) + { + SelectedConversation = Conversations.FirstOrDefault(f => f.ID == ID); + SelectedConversationItems = await conversationService.GetConversationItems(ID); + SelectedGroup = SelectedConversation.GroupID; + StateHasChanged(); + } + + } + private void CloseChat() + { + // می‌توان اینجا حالت مخفی‌سازی کامپوننت را تنظیم کرد + } + private void GoBack() + { + // برگشت به منوی قبلی یا وضعیت قبلی + } + async Task OnClickSendMssage() + { + Sending = true; + if (SelectedConversation != null) + { + var item = new ADDConversationItemDto() + { + ConversationID = SelectedConversation.ID, + text = InputMessage + }; + } + else + { + var Item = new ADDConversationDto() + { + CompanyID = CompanyID, + GroupID = SelectedGroup, + Question = InputMessage + }; + } + Sending = false; + } +} + + + diff --git a/Presentation/HushianWebApp/Pages/Home.razor b/Presentation/HushianWebApp/Pages/Home.razor new file mode 100644 index 0000000..fead316 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Home.razor @@ -0,0 +1,7 @@ + + +Home + +

Hello, world!

+ +Welcome to your new app. diff --git a/Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor b/Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor new file mode 100644 index 0000000..e05577f --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Manage/GroupManagement.razor @@ -0,0 +1,153 @@ +@page "/GroupManagement" + + +@using Hushian.Application.Dtos +@using HushianWebApp.Components +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject ILocalStorageService localStorageService; +@inject NavigationManager navigationManager; +@inject GroupService groupService; + + + + + + + @if (context.img?.Length!=0) + { + Uploaded Image + } + else + { + + } + + + @context.ID + + + + @context.Name + + + + @context.Info + + + + + + + + + + + + + + + +@code { + private ConfirmDialog dialog = default!; + + Dictionary parameters = new Dictionary(); + Grid grid = default!; + private Modal modal = default!; + string title = "گروه جدید"; + public List list = new(); + private async Task> DataProvider(GridDataProviderRequest request) + { + if(list.Count <= 0) + list = await groupService.GetGroupsCompany(); + + int skip = (request.PageNumber - 1) * request.PageSize; + + return await Task.FromResult(request.ApplyTo(list != null ? list.Skip(skip).Take(request.PageSize).ToList() : new())); + } + protected override async Task OnInitializedAsync() + { + parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); + + if (!(await localStorageService.GetItem>("Role")).Any(a => a == "HushianManagerCompany")) + navigationManager.NavigateTo("/NotFound"); + await base.OnInitializedAsync(); + } + private async Task OnRowClick(GridRowEventArgs args) + { + Dictionary eparameters = new Dictionary(); + eparameters.Add("model", args.Item); + eparameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); + + + await modal.ShowAsync($"ویرایش گروه {args.Item.Name}", parameters: eparameters); + + + } + private async Task SwitchChanged(GroupDto model, bool value) + { + if (model.Available != value) + { + if (await groupService.ChangeAvailableGroupFromManager(model.ID, value)) + model.Available = value; + } + + + } + private async Task DeleteGroup(int GroupID, string name) + { + var confirmation = await dialog.ShowAsync( + title: $"مطمئنی می‌خوای {name} حذف کنی؟", + message1: "پس از حذف، نمی‌توان آن را به حالت اولیه برگرداند.", + message2: "می‌خوای ادامه بدی؟", new ConfirmDialogOptions() + { + YesButtonColor = ButtonColor.Danger, + YesButtonText = "بله", + NoButtonText = "نه !" + }); + + if (!confirmation) return; + + + if (await groupService.DeleteGroupFromManager(GroupID)) + { + list = await groupService.GetGroupsCompany(); + await grid.RefreshDataAsync(); + } + } + async Task CallBack() + { + await modal.HideAsync(); + list = await groupService.GetGroupsCompany(); + await grid.RefreshDataAsync(); + } + private string GetImageSource(byte[]? img) + { + if (img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(img)}"; + } + return string.Empty; + } + async Task showGroupsComponent(int GroupID, string name) + { + Dictionary eparameters = new Dictionary(); + eparameters.Add("GroupID", GroupID); + + modal.Size = ModalSize.Small; + await modal.ShowAsync($"کارشناسان گروه {name}", parameters: eparameters); + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Pages/Manage/Settings.razor b/Presentation/HushianWebApp/Pages/Manage/Settings.razor new file mode 100644 index 0000000..cde5dda --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Manage/Settings.razor @@ -0,0 +1,166 @@ +@page "/Settings" +@using Hushian.Application.Dtos.Company +@using HushianWebApp.Components +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject ILocalStorageService localStorageService; +@inject NavigationManager navigationManager; +@inject CompanyService companyService; + + +
+
+ + +
+
+
+ تغییر کلمه عبور +
+ +
+
+ + @if (ALLOWcompanyinfo) + { + +
+
+
+ اطلاعات شرکت +
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + @if (dto.img != null && dto.img.Length > 0) + { + Uploaded Image + } +
+
+ +
+
+
+ } + + + +
+
+
+ بخش پایین چپ +
+ +
+
+ + +
+
+
+ بخش پایین راست +
+ +
+
+ +
+
+ +@code { + [Inject] protected ToastService ToastService { get; set; } = default!; + + bool ALLOWcompanyinfo = true; + public bool loading { get; set; } = false; + public CompanyDto dto { get; set; } + = new(); + protected override async Task OnInitializedAsync() + { + if (!(await localStorageService.GetItem>("Role")).Any(a => a == "HushianManagerCompany")) + navigationManager.NavigateTo("/NotFound"); + + dto=await companyService.GetCompany(); + await base.OnInitializedAsync(); + } + private async Task OnFileChange(InputFileChangeEventArgs e) + { + var file = e.File; + using (var memoryStream = new MemoryStream()) + { + await file.OpenReadStream().CopyToAsync(memoryStream); + dto.img = memoryStream.ToArray(); + } + } + private string GetImageSource() + { + if (dto.img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(dto.img)}"; + } + return string.Empty; + } + async Task updateItem() + { + if (await companyService.UpdateCompany(dto)) + ToastService.Notify(new ToastMessage(ToastType.Success, "تغییر اطلاعات شرکت با موفقیت انجام شد")); + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Pages/Manage/UserManagment.razor b/Presentation/HushianWebApp/Pages/Manage/UserManagment.razor new file mode 100644 index 0000000..e464dc3 --- /dev/null +++ b/Presentation/HushianWebApp/Pages/Manage/UserManagment.razor @@ -0,0 +1,155 @@ +@page "/UserManagement" + +@using Common.Dtos.User +@using Hushian.Application.Dtos +@using HushianWebApp.Components +@using HushianWebApp.Service +@using HushianWebApp.Services +@inject ILocalStorageService localStorageService; +@inject NavigationManager navigationManager; +@inject UserService userService; + + + + + + + + + @if (context.img?.Length != 0) + { + Uploaded Image + } + else + { + + } + + + @context.UserName + + + + @context.FullName + + + + @context.Email + + + @* + @context.PhoneNumber + *@ + + + + + + + + + + + + + + +@code { + private ConfirmDialog dialog = default!; + + Dictionary parameters = new Dictionary(); + Grid grid = default!; + private Modal modal = default!; + string title = "کارشناس جدید"; + protected override async Task OnInitializedAsync() + { + parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); + + if (!(await localStorageService.GetItem>("Role")).Any(a =>a== "HushianManagerCompany") ) + navigationManager.NavigateTo("/NotFound"); + await base.OnInitializedAsync(); + } + private async Task> DataProvider(GridDataProviderRequest request) + { + var employees = await userService.GetExpersCompany(0, request.PageNumber, request.PageSize); + return await Task.FromResult(request.ApplyTo(employees != null ? employees.list : new())); + } + async Task CallBack() + { + await modal.HideAsync(); + await grid.RefreshDataAsync(); + } + private async Task OnRowClick(GridRowEventArgs args) + { + var editmodel = new EditUserFromUserDto() + { + Email = args.Item.Email, + FullName = args.Item.FullName, + UserName = args.Item.UserName, + img = args.Item.img + }; + Dictionary eparameters = new Dictionary(); + eparameters.Add("model", editmodel); + eparameters.Add("OnMultipleOfThree", EventCallback.Factory.Create(this, CallBack)); + + await modal.ShowAsync($"ویرایش کارشناس {args.Item.FullName}", parameters: eparameters); + + } + private async Task SwitchChanged(HushianUserDto model,bool value) + { + if (model.Available != value) + { + if (await userService.ChangeAvailableExperFromManager(model.UserID, value)) + model.Available = value; + } + + + } + private async Task DeleteExper(string ExperID,string name) + { + var confirmation = await dialog.ShowAsync( + title: $"مطمئنی می‌خوای {name} حذف کنی؟", + message1: "پس از حذف، نمی‌توان آن را به حالت اولیه برگرداند.", + message2: "می‌خوای ادامه بدی؟",new ConfirmDialogOptions() + { + YesButtonColor=ButtonColor.Danger, + YesButtonText="بله", + NoButtonText="نه !" + }); + + if (!confirmation) return; + + + if (await userService.DeleteExperFromManager(ExperID)) + await grid.RefreshDataAsync(); + } + private string GetImageSource(byte[]? img) + { + if (img != null) + { + return $"data:image/jpeg;base64,{Convert.ToBase64String(img)}"; + } + return string.Empty; + } + async Task showGroupsComponent(string ExperID, string name) + { + Dictionary eparameters = new Dictionary(); + eparameters.Add("ExperID", ExperID); + + modal.Size = ModalSize.Small; + await modal.ShowAsync($"گروه های کارشناس {name}", parameters: eparameters); + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/Program.cs b/Presentation/HushianWebApp/Program.cs new file mode 100644 index 0000000..b441412 --- /dev/null +++ b/Presentation/HushianWebApp/Program.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; +using HushianWebApp; +using HushianWebApp.Services; +using HushianWebApp.Service; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5137/api/") }); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddBlazorBootstrap(); +await builder.Build().RunAsync(); diff --git a/Presentation/HushianWebApp/Properties/launchSettings.json b/Presentation/HushianWebApp/Properties/launchSettings.json new file mode 100644 index 0000000..df30f32 --- /dev/null +++ b/Presentation/HushianWebApp/Properties/launchSettings.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5165", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:7118;http://localhost:5165", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Presentation/HushianWebApp/Service/AuthService.cs b/Presentation/HushianWebApp/Service/AuthService.cs new file mode 100644 index 0000000..d82e623 --- /dev/null +++ b/Presentation/HushianWebApp/Service/AuthService.cs @@ -0,0 +1,128 @@ +using BlazorBootstrap; +using Common.Dtos.User; +using Common.Models.Auth; +using Common.Models.Auth.CompanySide; +using Common.Models.Auth.UserSide; +using Common.Models.Identity; +using HushianWebApp.Services; +using Microsoft.AspNetCore.Components; +using System.Net.Http.Json; + +namespace HushianWebApp.Service +{ + public class AuthService + { + private readonly BaseController _baseController; + private readonly NavigationManager _NavigationManager; + private readonly ILocalStorageService _localStorage; + private readonly ToastService _ToastService; + public AuthService(BaseController baseController, NavigationManager navigationManager, ILocalStorageService localStorage, ToastService toastService) + { + _baseController = baseController; + _NavigationManager = navigationManager; + _localStorage = localStorage; + _ToastService = toastService; + } + + public async Task IsOnline() + { + return await _baseController.IsOnline(); + } + public async Task login(AuthRequestFromCompanySide authRequest) + { + var response = await _baseController.PostLogin("v1/Auth/loginCompanySide", authRequest); + if (response.Item2.IsSuccessStatusCode) + { + var responsevalue = await response.Item2.Content.ReadFromJsonAsync(); + + + await _localStorage.RemoveItem("C/ID"); + await _localStorage.SetItem("C/ID", responsevalue.Id); + await _localStorage.RemoveItem("C/CompanyId"); + await _localStorage.SetItem("C/CompanyId", responsevalue.CompanyId.GetValueOrDefault()); + await _localStorage.RemoveItem("C/Fullname"); + await _localStorage.SetItem("C/Fullname", responsevalue.Fullname); + await _localStorage.RemoveItem("C/MobileOrUserName"); + await _localStorage.SetItem("C/MobileOrUserName", responsevalue.MobileOrUserName); + await _localStorage.RemoveItem("C/Role"); + await _localStorage.SetItem("C/Role", responsevalue.Role); + await _localStorage.RemoveItem("C/img"); + await _localStorage.SetItem("C/img", responsevalue.img); + await _localStorage.RemoveItem("C/key"); + await _localStorage.SetItem("C/key", responsevalue.Token); + + _NavigationManager.NavigateTo("/"); + } + return response.Item1; + + + } + public async Task login(AuthRequestFromUserSide model) + { + var response = await _baseController.Post($"v1/User/AuthenticationFromUser",model); + if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync(); + else if (response.StatusCode == System.Net.HttpStatusCode.BadRequest) + { + var Errors = await response.Content.ReadFromJsonAsync>(); + _ToastService.Notify(new ToastMessage(ToastType.Danger, Errors[0].Split(':').Length == 2 ? Errors[0].Split(':')[1] : Errors[0])); + + } + else if (!response.IsSuccessStatusCode) + { + + _NavigationManager.NavigateTo("Unhandled"); + } + + return 0; + } + public async Task Verificationlogin(int ID,string code) + { + var response = await _baseController.Put($"v1/Auth/UserLoginVerification/{ID}/{code}"); + + if (response.IsSuccessStatusCode) + { + var responsevalue = await response.Content.ReadFromJsonAsync(); + await _localStorage.RemoveItem("U/ID"); + await _localStorage.SetItem("U/ID", responsevalue.Id); + await _localStorage.RemoveItem("U/CompanyId"); + await _localStorage.SetItem("U/CompanyId", responsevalue.CompanyId.GetValueOrDefault()); + await _localStorage.RemoveItem("U/Fullname"); + await _localStorage.SetItem("U/Fullname", responsevalue.Fullname); + await _localStorage.RemoveItem("U/MobileOrUserName"); + await _localStorage.SetItem("U/MobileOrUserName", responsevalue.MobileOrUserName); + await _localStorage.RemoveItem("U/Role"); + await _localStorage.SetItem("U/Role", responsevalue.Role); + await _localStorage.RemoveItem("U/img"); + await _localStorage.SetItem("U/img", responsevalue.img); + await _localStorage.RemoveItem("U/key"); + await _localStorage.SetItem("U/key", responsevalue.Token); + + return true; + } + + return false; + + + } + public async Task Logout () + { + await _localStorage.RemoveItem("C/ID"); + await _localStorage.RemoveItem("C/CompanyId"); + await _localStorage.RemoveItem("C/Fullname"); + await _localStorage.RemoveItem("C/MobileOrUserName"); + await _localStorage.RemoveItem("C/Role"); + await _localStorage.RemoveItem("C/img"); + await _localStorage.RemoveItem("C/key"); + + await _localStorage.RemoveItem("U/ID"); + await _localStorage.RemoveItem("U/CompanyId"); + await _localStorage.RemoveItem("U/Fullname"); + await _localStorage.RemoveItem("U/MobileOrUserName"); + await _localStorage.RemoveItem("U/Role"); + await _localStorage.RemoveItem("U/img"); + await _localStorage.RemoveItem("U/key"); + + } + } +} diff --git a/Presentation/HushianWebApp/Service/BaseController.cs b/Presentation/HushianWebApp/Service/BaseController.cs new file mode 100644 index 0000000..733b080 --- /dev/null +++ b/Presentation/HushianWebApp/Service/BaseController.cs @@ -0,0 +1,155 @@ +using BlazorBootstrap; +using HushianWebApp.Services; +using Microsoft.AspNetCore.Components; +using System.Net; +using System.Net.Http.Json; +using System.Text; +using static System.Runtime.InteropServices.JavaScript.JSType; + +namespace HushianWebApp.Service +{ + public class BaseController + { + private readonly HttpClient _Http; + private readonly NavigationManager _NavigationManager; + private readonly ToastService _ToastService; + public BaseController(HttpClient http, NavigationManager navigationManager, ToastService toastService) + { + _Http = http; + _NavigationManager = navigationManager; + _ToastService = toastService; + } + + public async Task IsOnline() + { + var result = await _Http.GetAsync("v1/Auth/IsOnline"); + return result.IsSuccessStatusCode; + } + public async Task SetToken(string token) + { + _Http.DefaultRequestHeaders.Add("Authorization", + $"Bearer {token}"); + } + public async Task RemoveToken() + { + if (_Http.DefaultRequestHeaders.Any(t => t.Key == "Authorization")) + _Http.DefaultRequestHeaders.Remove("Authorization"); + } + public async Task Get(string route) + { + var result = await _Http.GetAsync(route); + return await Check(result); + + } + public async Task Delete(string route) + { + var result = await _Http.DeleteAsync(route); + return await Check(result); + } + public async Task Post(string route, object mode) + { + var result = await _Http.PostAsJsonAsync(route, mode); + return await Check(result); + + } + public async Task> PostLogin(string route, object mode) + { + var result = await _Http.PostAsJsonAsync(route, mode); + if (result.IsSuccessStatusCode) + { + return Tuple.Create( "ok",result); + } + else if (result.StatusCode == System.Net.HttpStatusCode.BadRequest) + { + try + { + var Errors = await result.Content.ReadFromJsonAsync>(); + if (Errors.Count > 0) + { + _ToastService.Notify(new ToastMessage(ToastType.Danger, Errors[0])); + } + else _ToastService.Notify(new ToastMessage(ToastType.Danger, "خطا در اجرای عملیات")); + + return Tuple.Create(Errors[0], result); + + } + catch (Exception) + { + _ToastService.Notify(new ToastMessage(ToastType.Danger, "خطا در اجرای عملیات")); + return Tuple.Create("error", result); + } + } + else if (!result.IsSuccessStatusCode) + { + + _NavigationManager.NavigateTo("Unhandled"); + return Tuple.Create("Unhandled", result); + } + return Tuple.Create("no", result); + + } + public async Task Post(string route,bool redirectToLogin=true) + { + var jsonString = "{\"appid\":1,\"platformid\":1,\"rating\":3}"; + var httpContent = new StringContent(jsonString, Encoding.UTF8, "application/json"); + var result = await _Http.PostAsync(route, httpContent); + + return await Check(result, redirectToLogin); + } + public async Task Put(string route, object mode) + { + var result = await _Http.PutAsJsonAsync(route, mode); + return await Check(result); + } + public async Task Put(string route) + { + var jsonString = "{\"appid\":1,\"platformid\":1,\"rating\":3}"; + var httpContent = new StringContent(jsonString, Encoding.UTF8, "application/json"); + var result = await _Http.PutAsync(route, httpContent); + return await Check(result); + } + private async Task Check(HttpResponseMessage result, bool redirectToLogin = true) + { + if (result.StatusCode == System.Net.HttpStatusCode.Unauthorized && redirectToLogin) + _NavigationManager.NavigateTo("Login"); + else if (result.StatusCode == System.Net.HttpStatusCode.BadRequest) + { + try + { + var Errors = await result.Content.ReadFromJsonAsync>(); + if (Errors.Count > 0) + { + if (Errors[0] == "PhoneNumberNotConfirmed") + { + _ToastService.Notify(new ToastMessage(ToastType.Danger, "این کاربری احراز نشده اگر مالک آن هستید احراز کنید")); + + } + else + { + + _ToastService.Notify(new ToastMessage(ToastType.Danger, Errors[0].Split(':').Length==2 ? Errors[0].Split(':')[1] : Errors[0])); + } + } + else _ToastService.Notify(new ToastMessage(ToastType.Danger, "خطا در اجرای عملیات")); + + } + catch (Exception) + { + _ToastService.Notify(new ToastMessage(ToastType.Danger, "خطا در اجرای عملیات")); + } + } + else if (result.StatusCode == System.Net.HttpStatusCode.Forbidden) + _ToastService.Notify(new ToastMessage(ToastType.Danger, "به این بخش دسترسی ندارید")); + else if (result.StatusCode == System.Net.HttpStatusCode.NotFound) + _ToastService.Notify(new ToastMessage(ToastType.Danger, "یافت نشد")); + else if (!result.IsSuccessStatusCode) + { + + _NavigationManager.NavigateTo("Unhandled"); + } + + return result; + + } + } +} diff --git a/Presentation/HushianWebApp/Service/CaptchaService.cs b/Presentation/HushianWebApp/Service/CaptchaService.cs new file mode 100644 index 0000000..5c02d9b --- /dev/null +++ b/Presentation/HushianWebApp/Service/CaptchaService.cs @@ -0,0 +1,28 @@ +using System; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Text; + +namespace HushianWebApp.Service +{ + public static class CaptchaService + { + public static string GetCaptchaWord(int length) + { + var random = new Random(DateTime.Now.Millisecond); + + // const string chars = "ABCDEFGHJKLMNPQRSTUWYZabcdefghijkmnpqrstuwz23456789*#!$%="; + const string chars = "ABCDEFGHJKLMNPQRSTUWYZabcdefghijkmnpqrstuwz23456789"; + string cw = new(Enumerable.Repeat(chars, length) + .Select(s => s[random.Next(s.Length)]) + .ToArray()); + + return cw; + } + public static string GenerateCaptchaBase64(string text, int width = 120, int height = 40) + { + return ""; + } + } +} diff --git a/Presentation/HushianWebApp/Service/CompanyService.cs b/Presentation/HushianWebApp/Service/CompanyService.cs new file mode 100644 index 0000000..01cd68e --- /dev/null +++ b/Presentation/HushianWebApp/Service/CompanyService.cs @@ -0,0 +1,63 @@ +using Common.Dtos.Company; +using System.Net.Http.Json; + +namespace HushianWebApp.Service +{ + public class CompanyService + { + private readonly BaseController _baseController; + const string BaseRoute = "v1/Company/"; + public CompanyService(BaseController baseController) + { + _baseController = baseController; + } + + public async Task RegisterCompany(RegisterCompanyDto request) + { + var response = await _baseController.Post($"{BaseRoute}NewCompany", request); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync(); + } + return 0; + } + public async Task GetCompany(int CompanyID) + { + var response = await _baseController.Get($"{BaseRoute}GetCompany/{CompanyID}"); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync(); + } + return null; + } + public async Task UpdateCompany(ReadANDUpdate_CompanyDto dto) + { + var response = await _baseController.Put($"{BaseRoute}UpdateCompany",dto); + return response.IsSuccessStatusCode; + } + //public async Task AddContentInfo(string str) + //{ + // var response = await _baseController.Post($"{BaseRoute}AddContentInfo?ContentInfo={str}"); + // return response.IsSuccessStatusCode; + //} + //public async Task DeleteContentInfo(int ID) + //{ + // var response = await _baseController.Delete($"{BaseRoute}DeleteContentInfo/{ID}"); + // return response.IsSuccessStatusCode; + //} + //public async Task UpdateContentInfo(int ID, string str) + //{ + // var response = await _baseController.Put($"{BaseRoute}UpdateContentInfo/{ID}?ContentInfo={str}"); + // return response.IsSuccessStatusCode; + //} + //public async Task?> GetContentInfos() + //{ + // var response = await _baseController.Get($"{BaseRoute}GetContentInfos"); + // if (response.IsSuccessStatusCode) + // { + // return await response.Content.ReadFromJsonAsync?>(); + // } + // return null; + //} + } +} diff --git a/Presentation/HushianWebApp/Service/ConversationService.cs b/Presentation/HushianWebApp/Service/ConversationService.cs new file mode 100644 index 0000000..5651aff --- /dev/null +++ b/Presentation/HushianWebApp/Service/ConversationService.cs @@ -0,0 +1,93 @@ +using Hushian.Application.Dtos; +using System.Net.Http.Json; + +namespace HushianWebApp.Service +{ + public class ConversationService + { + private readonly BaseController _baseController; + const string BaseRoute = "v1/Conversation/"; + + public ConversationService(BaseController baseController) + { + _baseController = baseController; + } + + public async Task > MyConversationIsFinished() + { + var response = await _baseController.Get($"{BaseRoute}MyConversationIsFinished"); + if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync>(); + + return new() ; + } + public async Task> MyConversationIsInProgress() + { + var response = await _baseController.Get($"{BaseRoute}MyConversationIsInProgress"); + if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync>(); + + return new(); + } + public async Task> ConversationAwaitingOurResponse() + { + var response = await _baseController.Get($"{BaseRoute}ConversationAwaitingOurResponse"); + if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync>(); + + return new(); + } + public async Task MarkAsReadConversationItemAsync(int ID) + { + var response = await _baseController.Put($"{BaseRoute}MarkAsReadConversationItem/{ID}"); + return response.IsSuccessStatusCode; + + } + public async Task> GetConversationItems(int ConversationID) + { + var response = await _baseController.Get($"{BaseRoute}ConversationItems/{ConversationID}"); + if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync>(); + + return new(); + } + public async Task ADDConversationItemFromCompanySide(int ConversationID,string text) + { + var response = await _baseController.Post($"{BaseRoute}ADDConversationItemFromCompanySide/{ConversationID}",new ADDConversationItemDto() + { + ConversationID = ConversationID, + text=text + }); + /* if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync>(); + + // return new();*/ + } + public async Task ConversationIsFinish(int ConversationID) + { + var response = await _baseController.Put($"{BaseRoute}ConversationIsFinish/{ConversationID}"); + return response.IsSuccessStatusCode; + } + public async Task ConversationIsStart(int ConversationID) + { + var response = await _baseController.Put($"{BaseRoute}ConversationIsStart/{ConversationID}"); + return response.IsSuccessStatusCode; + } + public async Task GetCountQueueCompany(int CompanyID,int GroupID=0) + { + var response = await _baseController.Get($"{BaseRoute}CountQueueCompany/{CompanyID}?GroupID={GroupID}"); + if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync(); + + return -1; + } + public async Task> MyConversationUserSide(int CompanyID) + { + var response = await _baseController.Get($"{BaseRoute}ConversationFromUserSide/{CompanyID}"); + if (response.IsSuccessStatusCode) + return await response.Content.ReadFromJsonAsync>(); + + return new(); + } + } +} diff --git a/Presentation/HushianWebApp/Service/GroupService.cs b/Presentation/HushianWebApp/Service/GroupService.cs new file mode 100644 index 0000000..f7cfe20 --- /dev/null +++ b/Presentation/HushianWebApp/Service/GroupService.cs @@ -0,0 +1,94 @@ +using Common.Dtos.Exper; +using Common.Dtos.Group; +using System.Net.Http.Json; + +namespace HushianWebApp.Service +{ + public class GroupService + { + private readonly BaseController _baseController; + const string BaseRoute = "v1/Group/"; + + public GroupService(BaseController baseController) + { + _baseController = baseController; + } + public async Task AddGroup(ADD_GroupDto Group) + { + var response = await _baseController.Post($"{BaseRoute}AddGroup",Group); + return response.IsSuccessStatusCode; + } + + public async Task UpdateGroup(Update_GroupDto Group) + { + var response = await _baseController.Put($"{BaseRoute}UpdateGroup", Group); + return response.IsSuccessStatusCode; + } + public async Task JoinExperToGroup(int GroupID, string ExperID) + { + var response = await _baseController.Put($"{BaseRoute}JoinExperToGroup/{GroupID}/{ExperID}"); + return response.IsSuccessStatusCode; + } + public async Task UnJoinExperToGroup(int GroupID, string ExperID) + { + var response = await _baseController.Put($"{BaseRoute}UnJoinExperToGroup/{GroupID}/{ExperID}"); + return response.IsSuccessStatusCode; + } + public async Task DeleteGroupFromManager(int GroupID) + { + var response = await _baseController.Delete ($"{BaseRoute}DeleteGroup/{GroupID}"); + return response.IsSuccessStatusCode; + } + public async Task?> GetGroupsCompany() + { + var response = await _baseController.Get($"{BaseRoute}GetGroupsCompany"); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return null; + } + public async Task?> GetGroupsCompany(int CompanyID) + { + var response = await _baseController.Get($"{BaseRoute}GetGroupsCompany?CompanyID={CompanyID}"); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return null; + } + public async Task?> GetGroupsFromExperID(string ExperID) + { + var response = await _baseController.Get($"{BaseRoute}GetGroupsFromExperID?ExperID={ExperID}"); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return new(); + } + public async Task> GetExpersFromGroupID(int GroupID) + { + var response = await _baseController.Get($"{BaseRoute}GetExpersFromGroupID/{GroupID}"); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return new(); + } + public async Task ChangeAvailableGroupFromManager(int GroupID, bool Available) + { + var response = await _baseController.Put($"{BaseRoute}ChangeAvailableGroupFromManager/{GroupID}?Available={Available}"); + return response.IsSuccessStatusCode; + } + + //public async Task?> GetOnlineExpersFromGroupID(int GroupID) + //{ + // var response = await _baseController.Get($"{BaseRoute}GetOnlineExpersFromGroupID/{GroupID}"); + // if (response.IsSuccessStatusCode) + // { + // return await response.Content.ReadFromJsonAsync>(); + // } + // return null; + //} + } +} diff --git a/Presentation/HushianWebApp/Service/LocalStorageService.cs b/Presentation/HushianWebApp/Service/LocalStorageService.cs new file mode 100644 index 0000000..fde2889 --- /dev/null +++ b/Presentation/HushianWebApp/Service/LocalStorageService.cs @@ -0,0 +1,42 @@ +using Microsoft.JSInterop; +using System.Text.Json; + +namespace HushianWebApp.Services +{ + public interface ILocalStorageService + { + Task GetItem(string key); + Task SetItem(string key, T value); + Task RemoveItem(string key); + } + + public class LocalStorageService : ILocalStorageService + { + private IJSRuntime _jsRuntime; + + public LocalStorageService(IJSRuntime jsRuntime) + { + _jsRuntime = jsRuntime; + } + + public async Task GetItem(string key) + { + var json = await _jsRuntime.InvokeAsync("localStorage.getItem", key); + + if (json == null) + return default; + + return JsonSerializer.Deserialize(json); + } + + public async Task SetItem(string key, T value) + { + await _jsRuntime.InvokeVoidAsync("localStorage.setItem", key, JsonSerializer.Serialize(value)); + } + + public async Task RemoveItem(string key) + { + await _jsRuntime.InvokeVoidAsync("localStorage.removeItem", key); + } + } +} diff --git a/Presentation/HushianWebApp/Service/UserService.cs b/Presentation/HushianWebApp/Service/UserService.cs new file mode 100644 index 0000000..255878b --- /dev/null +++ b/Presentation/HushianWebApp/Service/UserService.cs @@ -0,0 +1,108 @@ +using System.Net.Http.Json; + +namespace HushianWebApp.Service +{ + public class UserService + { + private readonly BaseController _baseController; + const string BaseRoute = "v1/User/"; + + public UserService(BaseController baseController) + { + _baseController = baseController; + } + public async Task AddExper(AddUserDto request) + { + var response = await _baseController.Post($"{BaseRoute}AddExper", request); + return response.IsSuccessStatusCode; + } + public async Task?> GetExpersCompany(int CompanyID, int PageIndex = 1, int PageSize = 10) + { + string route = $"{BaseRoute}GetExpersCompany?CompanyID={CompanyID}&PageIndex={PageIndex}&PageSize={PageSize}"; + + var response = await _baseController.Get(route); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return null; + } + public async Task?> GetOnlineExpersCompany(int CompanyID) + { + string route = $"{BaseRoute}GetOnlineExpersCompany?CompanyID={CompanyID}"; + + var response = await _baseController.Get(route); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return null; + } + //-------------------------------------------------------------------------------------------------------------- + public async Task?> GetUsersCompanyFromManager(int PageIndex = 1, int PageSize = 10) + { + string route = $"{BaseRoute}GetUsersCompany?PageIndex={PageIndex}&PageSize={PageSize}"; + + var response = await _baseController.Get(route); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync>(); + } + return null; + } + public async Task EditUserYourself(EditUserFromUserDto request) //ویرایش کاربران توسط خود + { + var response = await _baseController.Put($"{BaseRoute}EditUserYourself", request); + return response.IsSuccessStatusCode; + } + public async Task GetCurrentUser() //ویرایش کاربران توسط خود + { + var response = await _baseController.Get($"{BaseRoute}GetCurrentUser"); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync(); + } + return null; + } + public async Task ExperEditingFromManager(EditUserFromUserDto request) //ویرایش کاربران توسط مدیرش + { + var response = await _baseController.Put($"{BaseRoute}ExperEditingFromManager", request); + return response.IsSuccessStatusCode; + } + + public async Task ChangePasswordYourself(ChangePasswordFromUserDto request) //تغییر کلمه عبور کاربران توسط خود + { + var response = await _baseController.Put($"{BaseRoute}ChangePasswordYourself", request); + return response.IsSuccessStatusCode; + } + public async Task CheckAvailableExperInCompany(string? ExperID=null) + { + string route = $"{BaseRoute}CheckAvailableExperInCompany"; + if (!string.IsNullOrEmpty(ExperID)) + route += $"?ExperID={ExperID}"; + var response = await _baseController.Get(route); + return response.IsSuccessStatusCode; + } + + + public async Task ChangeAvailableExperFromManager(string ExperID,bool Available) + { + var response = await _baseController.Put($"{BaseRoute}ChangeAvailableExperFromManager/{ExperID}?Available={Available}"); + return response.IsSuccessStatusCode; + } + + public async TaskDeleteExperFromManager(string ExperID) + { + var response = await _baseController.Delete($"{BaseRoute}DeleteExperFromManager/{ExperID}"); + return response.IsSuccessStatusCode; + } + + public async Task FreeExper() + { + var response = await _baseController.Delete($"{BaseRoute}FreeExper"); + return response.IsSuccessStatusCode; + } + + + } +} diff --git a/Presentation/HushianWebApp/Service/VerificationService.cs b/Presentation/HushianWebApp/Service/VerificationService.cs new file mode 100644 index 0000000..3023cb9 --- /dev/null +++ b/Presentation/HushianWebApp/Service/VerificationService.cs @@ -0,0 +1,52 @@ +using Common.Dtos.User; +using Common.Enums; +using System.Net.Http.Json; + +namespace HushianWebApp.Service +{ + public class VerificationService + { + private readonly BaseController _baseController; + + public VerificationService(BaseController baseController) + { + _baseController = baseController; + } + + public async Task FromUserName(string mobile, VerificationCodeType type) + { + + string route = type switch + { + VerificationCodeType.PhoneNumberConfirmed => "PhoneNumberConfirmedFromUserName", + VerificationCodeType.ForgetPassword => "ForgetPasswordFromUserName", + VerificationCodeType.ChangeMobile => throw new NotImplementedException(), + VerificationCodeType.Login => throw new NotImplementedException(), + _ => throw new NotImplementedException() + }; + var response = await _baseController.Get($"v1/Verification/{route}/{mobile}"); + if (response.IsSuccessStatusCode) + { + return await response.Content.ReadFromJsonAsync(); + } + else + { + return 0; + } + + + } + public async Task ConfirmedCode(ConfirmedCodeDto dto) + { + var response = await _baseController.Post($"v1/Verification/ConfirmedCode", dto); + return response.IsSuccessStatusCode; + + } + public async Task ReSendCode(int ID) + { + var response = await _baseController.Get($"v1/Verification/ReSendCode/{ID}"); + return response.IsSuccessStatusCode; + + } + } +} diff --git a/Presentation/HushianWebApp/_Imports.razor b/Presentation/HushianWebApp/_Imports.razor new file mode 100644 index 0000000..c25964f --- /dev/null +++ b/Presentation/HushianWebApp/_Imports.razor @@ -0,0 +1,11 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.JSInterop +@using HushianWebApp +@using HushianWebApp.Layout +@using BlazorBootstrap; \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/assets/fonts/woff/IRANSansX-Regular.woff b/Presentation/HushianWebApp/wwwroot/Before/assets/fonts/woff/IRANSansX-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..5cf63c1a1163c5fb7b3753a40166fad4561f93ff GIT binary patch literal 36012 zcmZr%V{j(X(tfkCZD(WKb~d(?jqQzX+xEt`ZQI5h+q`?L?)UHOs%NJAnWyWVnIF?L zUFW#Ui;Dw50RJqi5`ggU1cKoA-{}7{QDrHKf4ZW7*P#9f5D8H+aR9(l=U<%i4<|oM zh=U{)=#%JD>W4R606<6dU*11G z;CDF7Z*(IY1N(nm8UO$~2mpZV4a&cDm|44<{+rl8o#HqEkkt4aH*MA2#K0H;P_O-$ z$Mz5G#CUIi%>R-9a!LQiME^hvrv{m2Zu7_OpY8+z0OJ7wpy4t#;jQ;7A8UJy< z|Il3i9&Bo3;P!7^Wu*V*68+c!;j=ZcG5I&GfAAXUW~*;YJFSx^;nzMu9w1{7ll=EUC-e$4wfF#|hujDZx0+e^>v08rkX7-tN~^+| z307lf;E3EEr`D8lT5vE924}B6dM91i@mXLS@$8e-%6IE)b;syIIQOg|PrJb)#?i6g^f=!^=St4>hAje~rGSCxAKzeO2YvF1Pp9U&;+M{qhSA17IDtGx z()nj&oA^0`=m0WPQ4T`wy%FR;k)B>Ojqqi?N$Olcts z9d4vs5=V-Gd1}r2Ar#$(Kd=yN>|#f5!M}6(K5;vvW1Vh;7fcjdc_~uELT$RV#YZ>> zb!8v5Jk_Q&##=+6EavNVdgdZ^^a@baz+i01`P6?d|@!Lh%TRbR3^qyD;@n#~{w9g=LwRpVxqDT?dJQT{e2Dnvheji4OkT4@h zgQM+a$TaSyrX)P+3AX{c~ zUq<)TJorSt6)kz*#pBb_F^(l##*O>4ppYeyndRS|EfYJBTCbgJ z>wgOCh-g<+m$e|XRHffr&{R?LTdRq%jE} zze!PoVrRv2Rw`x%&`X-an_=)*mz<6_d8j{;Q@-%p1`Ua=3lQl1#zqLRdQ04;v@ZaW z5QuW}JEIvjbKZ2p^_mN+Oy0z(#byKpO zu%u?nRVwv{{148?5c##8KOZ4|p7uyLA-GSyPH7n>^#`CHlm+15oT=T)2DblbeA=DD?HBPk!2B56iDU&dXs zpPBQSjr;&Zx}PpHkH(+$}zpMqQ&)#-yIw#Y9Rl$fcWO zhKVo}i|p${3^t-_&Cjnh(Y&ioQWA>gc4RYkyCLqfAA;Wpv _T>8q1|F`^-EwPA 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 z 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 literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/Before/assets/images/Hushian-logo.svg b/Presentation/HushianWebApp/wwwroot/Before/assets/images/Hushian-logo.svg new file mode 100644 index 0000000..0dd7e79 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/assets/images/Hushian-logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/Presentation/HushianWebApp/wwwroot/Before/assets/images/Patt.svg b/Presentation/HushianWebApp/wwwroot/Before/assets/images/Patt.svg new file mode 100644 index 0000000..4e44816 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/assets/images/Patt.svg @@ -0,0 +1,2354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Presentation/HushianWebApp/wwwroot/Before/assets/images/refresh-icon.svg b/Presentation/HushianWebApp/wwwroot/Before/assets/images/refresh-icon.svg new file mode 100644 index 0000000..828dfd9 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/assets/images/refresh-icon.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/assets/images/top-BG.svg b/Presentation/HushianWebApp/wwwroot/Before/assets/images/top-BG.svg new file mode 100644 index 0000000..5f52fc1 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/assets/images/top-BG.svg @@ -0,0 +1,163 @@ + + + + +bg02 +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Presentation/HushianWebApp/wwwroot/Before/assets/style/style6249.css b/Presentation/HushianWebApp/wwwroot/Before/assets/style/style6249.css new file mode 100644 index 0000000..0b47e0d --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/assets/style/style6249.css @@ -0,0 +1,4193 @@ +*, +::before, +::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +/* Chrome, Safari, Edge, Opera */ +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +/* Firefox */ +input[type=number] { + -moz-appearance: textfield; +} + +/* +! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ""; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", + "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, + "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-feature-settings: normal; + /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + letter-spacing: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type="button"]), +input:where([type="reset"]), +input:where([type="submit"]) { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, +textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + /* 1 */ + vertical-align: middle; + /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden]:where(:not([hidden="until-found"])) { + display: none; +} + +.container { + width: 100%; +} + +@media (min-width: 640px) { + .container { + max-width: 640px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} + +@media (min-width: 1024px) { + .container { + max-width: 1024px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1280px; + } +} + +@media (min-width: 1536px) { + .container { + max-width: 1536px; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.not-sr-only { + position: static; + width: auto; + height: auto; + padding: 0; + margin: 0; + overflow: visible; + clip: auto; + white-space: normal; +} + +.pointer-events-none { + pointer-events: none; +} + +.pointer-events-auto { + pointer-events: auto; +} + +.\!visible { + visibility: visible !important; +} + +.visible { + visibility: visible; +} + +.invisible { + visibility: hidden; +} + + +.static { + position: static; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.sticky { + position: sticky; +} + +.-inset-1 { + inset: -0.25rem; +} + +.end-1 { + inset-inline-end: 0.25rem; +} + +.left-0 { + left: 0px; +} + +.right-24 { + right: 6rem; +} + +.top-0 { + top: 0px; +} + +.isolate { + isolation: isolate; +} + +.isolation-auto { + isolation: auto; +} + +.z-10 { + z-index: 10; +} + +.z-20 { + z-index: 20; +} + +.order-2 { + order: 2; +} + +.row-span-1 { + grid-row: span 1 / span 1; +} + +.float-start { + float: inline-start; +} + +.float-end { + float: inline-end; +} + +.float-right { + float: right; +} + +.float-left { + float: left; +} + +.float-none { + float: none; +} + +.clear-start { + clear: inline-start; +} + +.clear-end { + clear: inline-end; +} + +.clear-left { + clear: left; +} + +.clear-right { + clear: right; +} + +.clear-both { + clear: both; +} + +.clear-none { + clear: none; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} +.lg\:mb-0 { + margin-bottom: 0; +} + +.mb-1 { + margin-bottom: 0.25rem; +} + +.mb-2 { + margin-bottom: 0.5rem; +} + +.mb-3 { + margin-bottom: 0.75rem; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.mr-4 { + margin-right: 1rem; +} + +.mt-0 { + margin-top: 0px; +} + +.mt-1 { + margin-top: 0.25rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.box-border { + box-sizing: border-box; +} + +.box-content { + box-sizing: content-box; +} + +.line-clamp-none { + overflow: visible; + display: block; + -webkit-box-orient: horizontal; + -webkit-line-clamp: none; +} + +.block { + display: block; +} + +.inline-block { + display: inline-block; +} + +.inline { + display: inline; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.table { + display: table; +} + +.inline-table { + display: inline-table; +} + +.table-caption { + display: table-caption; +} + +.table-cell { + display: table-cell; +} + +.table-column { + display: table-column; +} + +.table-column-group { + display: table-column-group; +} + +.table-footer-group { + display: table-footer-group; +} + +.table-header-group { + display: table-header-group; +} + +.table-row-group { + display: table-row-group; +} + +.table-row { + display: table-row; +} + +.flow-root { + display: flow-root; +} + +.grid { + display: grid; +} + +.inline-grid { + display: inline-grid; +} + +.contents { + display: contents; +} + +.list-item { + display: list-item; +} + +.hidden { + display: none; +} + +.h-8 { + height: 2rem; +} + +.h-\[30\%\] { + height: 30%; +} + +.h-full { + height: 100%; +} + +.min-h-\[600px\] { + min-height: 600px; +} + +.min-h-\[700px\] { + min-height: 700px; +} + +.w-\[this-is\\\\\] { + width: this-is\\; +} + +.w-\[this-is\] { + width: this-is; +} + +.w-\[weird-and-invalid\] { + width: weird-and-invalid; +} + +.w-full { + width: 100%; +} + +.w-50 { + width: 50%; +} + +.min-w-\[85px\] { + min-width: 85px; +} + +.max-w-screen-lg { + max-width: 1024px; +} + +.max-w-screen-xl { + max-width: 1280px; +} + +.max-w-\[960px\] { + max-width: 960px; +} + +.flex-1 { + flex: 1 1 0%; +} + +.flex-shrink { + flex-shrink: 1; +} + +.shrink { + flex-shrink: 1; +} + +.shrink-0 { + flex-shrink: 0; +} + +.flex-grow { + flex-grow: 1; +} + +.grow { + flex-grow: 1; +} + +.table-auto { + table-layout: auto; +} + +.table-fixed { + table-layout: fixed; +} + +.caption-top { + caption-side: top; +} + +.caption-bottom { + caption-side: bottom; +} + +.border-collapse { + border-collapse: collapse; +} + +.border-separate { + border-collapse: separate; +} + +.\!transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important; +} + +.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.transform-cpu { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.transform-gpu { + transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.transform-none { + transform: none; +} + +.cursor-pointer { + cursor: pointer; +} + +.touch-auto { + touch-action: auto; +} + +.touch-none { + touch-action: none; +} + +.touch-pan-x { + --tw-pan-x: pan-x; + touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); +} + +.touch-pan-left { + --tw-pan-x: pan-left; + touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); +} + +.touch-pan-right { + --tw-pan-x: pan-right; + touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); +} + +.touch-pan-y { + --tw-pan-y: pan-y; + touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); +} + +.touch-pan-up { + --tw-pan-y: pan-up; + touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); +} + +.touch-pan-down { + --tw-pan-y: pan-down; + touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); +} + +.touch-pinch-zoom { + --tw-pinch-zoom: pinch-zoom; + touch-action: var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom); +} + +.touch-manipulation { + touch-action: manipulation; +} + +.select-none { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.select-text { + -webkit-user-select: text; + -moz-user-select: text; + user-select: text; +} + +.select-all { + -webkit-user-select: all; + -moz-user-select: all; + user-select: all; +} + +.select-auto { + -webkit-user-select: auto; + -moz-user-select: auto; + user-select: auto; +} + +.resize-none { + resize: none; +} + +.resize-y { + resize: vertical; +} + +.resize-x { + resize: horizontal; +} + +.resize { + resize: both; +} + +.snap-none { + scroll-snap-type: none; +} + +.snap-x { + scroll-snap-type: x var(--tw-scroll-snap-strictness); +} + +.snap-y { + scroll-snap-type: y var(--tw-scroll-snap-strictness); +} + +.snap-both { + scroll-snap-type: both var(--tw-scroll-snap-strictness); +} + +.snap-mandatory { + --tw-scroll-snap-strictness: mandatory; +} + +.snap-proximity { + --tw-scroll-snap-strictness: proximity; +} + +.snap-start { + scroll-snap-align: start; +} + +.snap-end { + scroll-snap-align: end; +} + +.snap-center { + scroll-snap-align: center; +} + +.snap-align-none { + scroll-snap-align: none; +} + +.snap-normal { + scroll-snap-stop: normal; +} + +.snap-always { + scroll-snap-stop: always; +} + +.list-inside { + list-style-position: inside; +} + +.list-outside { + list-style-position: outside; +} + +.list-disc { + list-style-type: disc; +} + +.validation-summary-errors ui { + list-style-type: disc; +} + +.validation-summary-errors ui > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); +} + +.validation-summary-errors ui { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.appearance-none { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.appearance-auto { + -webkit-appearance: auto; + -moz-appearance: auto; + appearance: auto; +} + +.break-before-auto { + -moz-column-break-before: auto; + break-before: auto; +} + +.break-before-avoid { + -moz-column-break-before: avoid; + break-before: avoid; +} + +.break-before-all { + -moz-column-break-before: all; + break-before: all; +} + +.break-before-avoid-page { + -moz-column-break-before: avoid; + break-before: avoid-page; +} + +.break-before-page { + -moz-column-break-before: page; + break-before: page; +} + +.break-before-left { + -moz-column-break-before: left; + break-before: left; +} + +.break-before-right { + -moz-column-break-before: right; + break-before: right; +} + +.break-before-column { + -moz-column-break-before: column; + break-before: column; +} + +.break-inside-auto { + -moz-column-break-inside: auto; + break-inside: auto; +} + +.break-inside-avoid { + -moz-column-break-inside: avoid; + break-inside: avoid; +} + +.break-inside-avoid-page { + break-inside: avoid-page; +} + +.break-inside-avoid-column { + -moz-column-break-inside: avoid; + break-inside: avoid-column; +} + +.break-after-auto { + -moz-column-break-after: auto; + break-after: auto; +} + +.break-after-avoid { + -moz-column-break-after: avoid; + break-after: avoid; +} + +.break-after-all { + -moz-column-break-after: all; + break-after: all; +} + +.break-after-avoid-page { + -moz-column-break-after: avoid; + break-after: avoid-page; +} + +.break-after-page { + -moz-column-break-after: page; + break-after: page; +} + +.break-after-left { + -moz-column-break-after: left; + break-after: left; +} + +.break-after-right { + -moz-column-break-after: right; + break-after: right; +} + +.break-after-column { + -moz-column-break-after: column; + break-after: column; +} + +.grid-flow-row { + grid-auto-flow: row; +} + +.grid-flow-col { + grid-auto-flow: column; +} + +.grid-flow-dense { + grid-auto-flow: dense; +} + +.grid-flow-row-dense { + grid-auto-flow: row dense; +} + +.grid-flow-col-dense { + grid-auto-flow: column dense; +} + +.grid-rows-3 { + grid-template-rows: repeat(3, minmax(0, 1fr)); +} + +.flex-row { + flex-direction: row; +} + +.flex-row-reverse { + flex-direction: row-reverse; +} + +.flex-col { + flex-direction: column; +} + +.flex-col-reverse { + flex-direction: column-reverse; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + +.place-content-center { + place-content: center; +} + +.place-content-start { + place-content: start; +} + +.place-content-end { + place-content: end; +} + +.place-content-between { + place-content: space-between; +} + +.place-content-around { + place-content: space-around; +} + +.place-content-evenly { + place-content: space-evenly; +} + +.place-content-baseline { + place-content: baseline; +} + +.place-content-stretch { + place-content: stretch; +} + +.place-items-start { + place-items: start; +} + +.place-items-end { + place-items: end; +} + +.place-items-center { + place-items: center; +} + +.place-items-baseline { + place-items: baseline; +} + +.place-items-stretch { + place-items: stretch; +} + +.content-normal { + align-content: normal; +} + +.content-center { + align-content: center; +} + +.content-start { + align-content: flex-start; +} + +.content-end { + align-content: flex-end; +} + +.content-between { + align-content: space-between; +} + +.content-around { + align-content: space-around; +} + +.content-evenly { + align-content: space-evenly; +} + +.content-baseline { + align-content: baseline; +} + +.content-stretch { + align-content: stretch; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.items-center { + align-items: center; +} + +.items-baseline { + align-items: baseline; +} + +.items-stretch { + align-items: stretch; +} + +.justify-normal { + justify-content: normal; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.justify-evenly { + justify-content: space-evenly; +} + +.justify-stretch { + justify-content: stretch; +} + +.justify-items-start { + justify-items: start; +} + +.justify-items-end { + justify-items: end; +} + +.justify-items-center { + justify-items: center; +} + +.justify-items-stretch { + justify-items: stretch; +} + +.gap-1 { + gap: 0.25rem; +} + +.gap-2 { + gap: 0.5rem; +} + +.gap-3 { + gap: 0.75rem; +} + +.gap-4 { + gap: 1rem; +} + +.gap-5 { + gap: 1.25rem; +} + +.space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-x-3 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.75rem * var(--tw-space-x-reverse)); + margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-y-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); +} + +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} + +.space-y-3 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); +} + +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} + +.space-y-5 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.25rem * var(--tw-space-y-reverse)); +} + +.space-y-reverse > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 1; +} + +.space-x-reverse > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 1; +} + +.divide-x > :not([hidden]) ~ :not([hidden]) { + --tw-divide-x-reverse: 0; + border-right-width: calc(1px * var(--tw-divide-x-reverse)); + border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse))); +} + +.divide-y > :not([hidden]) ~ :not([hidden]) { + --tw-divide-y-reverse: 0; + border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); + border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); +} + +.divide-y-reverse > :not([hidden]) ~ :not([hidden]) { + --tw-divide-y-reverse: 1; +} + +.divide-x-reverse > :not([hidden]) ~ :not([hidden]) { + --tw-divide-x-reverse: 1; +} + +.divide-solid > :not([hidden]) ~ :not([hidden]) { + border-style: solid; +} + +.divide-dashed > :not([hidden]) ~ :not([hidden]) { + border-style: dashed; +} + +.divide-dotted > :not([hidden]) ~ :not([hidden]) { + border-style: dotted; +} + +.divide-double > :not([hidden]) ~ :not([hidden]) { + border-style: double; +} + +.divide-none > :not([hidden]) ~ :not([hidden]) { + border-style: none; +} + +.place-self-auto { + place-self: auto; +} + +.place-self-start { + place-self: start; +} + +.place-self-end { + place-self: end; +} + +.place-self-center { + place-self: center; +} + +.place-self-stretch { + place-self: stretch; +} + +.self-auto { + align-self: auto; +} + +.self-start { + align-self: flex-start; +} + +.self-end { + align-self: flex-end; +} + +.self-center { + align-self: center; +} + +.self-stretch { + align-self: stretch; +} + +.self-baseline { + align-self: baseline; +} + +.justify-self-auto { + justify-self: auto; +} + +.justify-self-start { + justify-self: start; +} + +.justify-self-end { + justify-self: end; +} + +.justify-self-center { + justify-self: center; +} + +.justify-self-stretch { + justify-self: stretch; +} + +.overflow-auto { + overflow: auto; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-clip { + overflow: clip; +} + +.overflow-visible { + overflow: visible; +} + +.overflow-scroll { + overflow: scroll; +} + +.overflow-x-auto { + overflow-x: auto; +} + +.overflow-y-auto { + overflow-y: auto; +} + +.overflow-x-hidden { + overflow-x: hidden; +} + +.overflow-y-hidden { + overflow-y: hidden; +} + +.overflow-x-clip { + overflow-x: clip; +} + +.overflow-y-clip { + overflow-y: clip; +} + +.overflow-x-visible { + overflow-x: visible; +} + +.overflow-y-visible { + overflow-y: visible; +} + +.overflow-x-scroll { + overflow-x: scroll; +} + +.overflow-y-scroll { + overflow-y: scroll; +} + +.overscroll-auto { + overscroll-behavior: auto; +} + +.overscroll-contain { + overscroll-behavior: contain; +} + +.overscroll-none { + overscroll-behavior: none; +} + +.overscroll-y-auto { + overscroll-behavior-y: auto; +} + +.overscroll-y-contain { + overscroll-behavior-y: contain; +} + +.overscroll-y-none { + overscroll-behavior-y: none; +} + +.overscroll-x-auto { + overscroll-behavior-x: auto; +} + +.overscroll-x-contain { + overscroll-behavior-x: contain; +} + +.overscroll-x-none { + overscroll-behavior-x: none; +} + +.scroll-auto { + scroll-behavior: auto; +} + +.scroll-smooth { + scroll-behavior: smooth; +} + +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.overflow-ellipsis { + text-overflow: ellipsis; +} + +.text-ellipsis { + text-overflow: ellipsis; +} + +.text-clip { + text-overflow: clip; +} + +.hyphens-none { + -webkit-hyphens: none; + hyphens: none; +} + +.hyphens-manual { + -webkit-hyphens: manual; + hyphens: manual; +} + +.hyphens-auto { + -webkit-hyphens: auto; + hyphens: auto; +} + +.whitespace-normal { + white-space: normal; +} + +.whitespace-nowrap { + white-space: nowrap; +} + +.whitespace-pre { + white-space: pre; +} + +.whitespace-pre-line { + white-space: pre-line; +} + +.whitespace-pre-wrap { + white-space: pre-wrap; +} + +.whitespace-break-spaces { + white-space: break-spaces; +} + +.text-wrap { + text-wrap: wrap; +} + +.text-nowrap { + text-wrap: nowrap; +} + +.text-balance { + text-wrap: balance; +} + +.text-pretty { + text-wrap: pretty; +} + +.break-normal { + overflow-wrap: normal; + word-break: normal; +} + +.break-words { + overflow-wrap: break-word; +} + +.break-all { + word-break: break-all; +} + +.break-keep { + word-break: keep-all; +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-lg { + border-radius: 0.5rem; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.rounded-b { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.rounded-e { + border-start-end-radius: 0.25rem; + border-end-end-radius: 0.25rem; +} + +.rounded-l { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.rounded-r { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.rounded-s { + border-start-start-radius: 0.25rem; + border-end-start-radius: 0.25rem; +} + +.rounded-t { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.rounded-bl { + border-bottom-left-radius: 0.25rem; +} + +.rounded-br { + border-bottom-right-radius: 0.25rem; +} + +.rounded-ee { + border-end-end-radius: 0.25rem; +} + +.rounded-es { + border-end-start-radius: 0.25rem; +} + +.rounded-se { + border-start-end-radius: 0.25rem; +} + +.rounded-ss { + border-start-start-radius: 0.25rem; +} + +.rounded-tl { + border-top-left-radius: 0.25rem; +} + +.rounded-tr { + border-top-right-radius: 0.25rem; +} + +.border { + border-width: 1px; +} + +.border-0 { + border-width: 0px; +} + +.border-x { + border-left-width: 1px; + border-right-width: 1px; +} + +.border-y { + border-top-width: 1px; + border-bottom-width: 1px; +} + +.border-b { + border-bottom-width: 1px; +} + +.border-e { + border-inline-end-width: 1px; +} + +.border-l { + border-left-width: 1px; +} + +.border-r { + border-right-width: 1px; +} + +.border-s { + border-inline-start-width: 1px; +} + +.border-t { + border-top-width: 1px; +} + +.border-solid { + border-style: solid; +} + +.border-dashed { + border-style: dashed; +} + +.border-dotted { + border-style: dotted; +} + +.border-double { + border-style: double; +} + +.border-hidden { + border-style: hidden; +} + +.border-none { + border-style: none; +} + +.border-gray-200 { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity, 1)); +} + +.border-primary { + --tw-border-opacity: 1; + border-color: rgb(0 77 107 / var(--tw-border-opacity, 1)); +} + +.border-slate-300 { + --tw-border-opacity: 1; + border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); +} + +.border-transparent { + border-color: transparent; +} + +.bg-\[rgb\(255\2c 0\2c 0\)\] { + --tw-bg-opacity: 1; + background-color: rgb(255 0 0 / var(--tw-bg-opacity, 1)); +} + +.bg-gray-100 { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} + +.bg-gray-300 { + --tw-bg-opacity: 1; + background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1)); +} + +.bg-gray-50 { + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); +} + +.bg-green-100 { + --tw-bg-opacity: 1; + background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1)); +} + +.bg-green-200 { + --tw-bg-opacity: 1; + background-color: rgb(187 247 208 / var(--tw-bg-opacity, 1)); +} + +.bg-main-500 { + --tw-bg-opacity: 1; + background-color: rgb(237 240 242 / var(--tw-bg-opacity, 1)); +} + +.bg-primary { + --tw-bg-opacity: 1; + background-color: rgb(0 77 107 / var(--tw-bg-opacity, 1)); +} + +.bg-red-100 { + --tw-bg-opacity: 1; + background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1)); +} + +.bg-red-200 { + --tw-bg-opacity: 1; + background-color: rgb(254 202 202 / var(--tw-bg-opacity, 1)); +} + +.bg-red-400 { + --tw-bg-opacity: 1; + background-color: rgb(248 113 113 / var(--tw-bg-opacity, 1)); +} + +.bg-slate-50 { + --tw-bg-opacity: 1; + background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); +} + +.bg-transparent { + background-color: transparent; +} + +.bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} + +.bg-yellow-300 { + --tw-bg-opacity: 1; + background-color: rgb(253 224 71 / var(--tw-bg-opacity, 1)); +} + +.bg-yellow-400 { + --tw-bg-opacity: 1; + background-color: rgb(250 204 21 / var(--tw-bg-opacity, 1)); +} + +.bg-opacity-20 { + --tw-bg-opacity: 0.2; +} + +.bg-opacity-30 { + --tw-bg-opacity: 0.3; +} + +.decoration-slice { + -webkit-box-decoration-break: slice; + box-decoration-break: slice; +} + +.decoration-clone { + -webkit-box-decoration-break: clone; + box-decoration-break: clone; +} + +.box-decoration-slice { + -webkit-box-decoration-break: slice; + box-decoration-break: slice; +} + +.box-decoration-clone { + -webkit-box-decoration-break: clone; + box-decoration-break: clone; +} + +.bg-fixed { + background-attachment: fixed; +} + +.bg-local { + background-attachment: local; +} + +.bg-scroll { + background-attachment: scroll; +} + +.bg-clip-border { + background-clip: border-box; +} + +.bg-clip-padding { + background-clip: padding-box; +} + +.bg-clip-content { + background-clip: content-box; +} + +.bg-clip-text { + -webkit-background-clip: text; + background-clip: text; +} + +.bg-repeat { + background-repeat: repeat; +} + +.bg-no-repeat { + background-repeat: no-repeat; +} + +.bg-repeat-x { + background-repeat: repeat-x; +} + +.bg-repeat-y { + background-repeat: repeat-y; +} + +.bg-repeat-round { + background-repeat: round; +} + +.bg-repeat-space { + background-repeat: space; +} + +.bg-origin-border { + background-origin: border-box; +} + +.bg-origin-padding { + background-origin: padding-box; +} + +.bg-origin-content { + background-origin: content-box; +} + +.object-contain { + -o-object-fit: contain; + object-fit: contain; +} + +.object-cover { + -o-object-fit: cover; + object-fit: cover; +} + +.object-fill { + -o-object-fit: fill; + object-fit: fill; +} + +.object-none { + -o-object-fit: none; + object-fit: none; +} + +.object-scale-down { + -o-object-fit: scale-down; + object-fit: scale-down; +} + +.p-1 { + padding: 0.25rem; +} + +.p-2 { + padding: 0.5rem; +} + +.p-3 { + padding: 0.75rem; +} + +.p-5 { + padding: 1.25rem; +} + +.pl-1 { + padding-left: 0.25rem; +} + +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} + +.px-1\.5 { + padding-left: 0.375rem; + padding-right: 0.375rem; +} + +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.py-2\.5 { + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} + +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} + +.pl-1 { + padding-left: 0.25rem; +} + +.pl-2 { + padding-left: 0.5rem; +} + +.pt-1 { + padding-top: 0.25rem; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + +.text-start { + text-align: start; +} + +.text-end { + text-align: end; +} + +.align-baseline { + vertical-align: baseline; +} + +.align-top { + vertical-align: top; +} + +.align-middle { + vertical-align: middle; +} + +.align-bottom { + vertical-align: bottom; +} + +.align-text-top { + vertical-align: text-top; +} + +.align-text-bottom { + vertical-align: text-bottom; +} + +.align-sub { + vertical-align: sub; +} + +.align-super { + vertical-align: super; +} + +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-xs { + font-size: 0.75rem; + line-height: 1.5rem; +} + +.font-bold { + font-weight: 700; +} + +.font-extrabold { + font-weight: 800; +} + +.font-light { + font-weight: 300; +} + +.font-medium { + font-weight: 500; +} + +.uppercase { + text-transform: uppercase; +} + +.lowercase { + text-transform: lowercase; +} + +.capitalize { + text-transform: capitalize; +} + +.normal-case { + text-transform: none; +} + +.italic { + font-style: italic; +} + +.not-italic { + font-style: normal; +} + +.normal-nums { + font-variant-numeric: normal; +} + +.ordinal { + --tw-ordinal: ordinal; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.slashed-zero { + --tw-slashed-zero: slashed-zero; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.lining-nums { + --tw-numeric-figure: lining-nums; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.oldstyle-nums { + --tw-numeric-figure: oldstyle-nums; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.proportional-nums { + --tw-numeric-spacing: proportional-nums; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.tabular-nums { + --tw-numeric-spacing: tabular-nums; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.diagonal-fractions { + --tw-numeric-fraction: diagonal-fractions; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.stacked-fractions { + --tw-numeric-fraction: stacked-fractions; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) + var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} + +.text-\[\#336699\]\/\[\.35\] { + color: rgb(51 102 153 / 0.35); +} + +.text-black { + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity, 1)); +} + +.text-blue-500 { + --tw-text-opacity: 1; + color: rgb(59 130 246 / var(--tw-text-opacity, 1)); +} + +.text-gray-400 { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity, 1)); +} + +.text-gray-500 { + --tw-text-opacity: 1; + color: rgb(107 114 128 / var(--tw-text-opacity, 1)); +} + +.text-gray-600 { + --tw-text-opacity: 1; + color: rgb(75 85 99 / var(--tw-text-opacity, 1)); +} + +.text-green-500 { + --tw-text-opacity: 1; + color: rgb(0 167 150 / var(--tw-text-opacity, 1)); +} + +.text-green-600 { + --tw-text-opacity: 1; + color: rgb(22 163 74 / var(--tw-text-opacity, 1)); +} + +.text-primary { + --tw-text-opacity: 1; + color: rgb(0 77 107 / var(--tw-text-opacity, 1)); +} + +.text-red-600 { + --tw-text-opacity: 1; + color: rgb(220 38 38 / var(--tw-text-opacity, 1)); +} + +.text-slate-500 { + --tw-text-opacity: 1; + color: rgb(100 116 139 / var(--tw-text-opacity, 1)); +} + +.text-slate-600 { + --tw-text-opacity: 1; + color: rgb(71 85 105 / var(--tw-text-opacity, 1)); +} + +.text-slate-700 { + --tw-text-opacity: 1; + color: rgb(51 65 85 / var(--tw-text-opacity, 1)); +} + +.text-slate-900 { + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity, 1)); +} + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} + +.text-yellow-800 { + --tw-text-opacity: 1; + color: rgb(133 77 14 / var(--tw-text-opacity, 1)); +} + +.underline { + text-decoration-line: underline; +} + +.overline { + text-decoration-line: overline; +} + +.line-through { + text-decoration-line: line-through; +} + +.no-underline { + text-decoration-line: none; +} + +.decoration-solid { + text-decoration-style: solid; +} + +.decoration-double { + text-decoration-style: double; +} + +.decoration-dotted { + text-decoration-style: dotted; +} + +.decoration-dashed { + text-decoration-style: dashed; +} + +.decoration-wavy { + text-decoration-style: wavy; +} + +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} + +.bg-blend-normal { + background-blend-mode: normal; +} + +.bg-blend-multiply { + background-blend-mode: multiply; +} + +.bg-blend-screen { + background-blend-mode: screen; +} + +.bg-blend-overlay { + background-blend-mode: overlay; +} + +.bg-blend-darken { + background-blend-mode: darken; +} + +.bg-blend-lighten { + background-blend-mode: lighten; +} + +.bg-blend-color-dodge { + background-blend-mode: color-dodge; +} + +.bg-blend-color-burn { + background-blend-mode: color-burn; +} + +.bg-blend-hard-light { + background-blend-mode: hard-light; +} + +.bg-blend-soft-light { + background-blend-mode: soft-light; +} + +.bg-blend-difference { + background-blend-mode: difference; +} + +.bg-blend-exclusion { + background-blend-mode: exclusion; +} + +.bg-blend-hue { + background-blend-mode: hue; +} + +.bg-blend-saturation { + background-blend-mode: saturation; +} + +.bg-blend-color { + background-blend-mode: color; +} + +.bg-blend-luminosity { + background-blend-mode: luminosity; +} + +.mix-blend-normal { + mix-blend-mode: normal; +} + +.mix-blend-multiply { + mix-blend-mode: multiply; +} + +.mix-blend-screen { + mix-blend-mode: screen; +} + +.mix-blend-overlay { + mix-blend-mode: overlay; +} + +.mix-blend-darken { + mix-blend-mode: darken; +} + +.mix-blend-lighten { + mix-blend-mode: lighten; +} + +.mix-blend-color-dodge { + mix-blend-mode: color-dodge; +} + +.mix-blend-color-burn { + mix-blend-mode: color-burn; +} + +.mix-blend-hard-light { + mix-blend-mode: hard-light; +} + +.mix-blend-soft-light { + mix-blend-mode: soft-light; +} + +.mix-blend-difference { + mix-blend-mode: difference; +} + +.mix-blend-exclusion { + mix-blend-mode: exclusion; +} + +.mix-blend-hue { + mix-blend-mode: hue; +} + +.mix-blend-saturation { + mix-blend-mode: saturation; +} + +.mix-blend-color { + mix-blend-mode: color; +} + +.mix-blend-luminosity { + mix-blend-mode: luminosity; +} + +.mix-blend-plus-darker { + mix-blend-mode: plus-darker; +} + +.mix-blend-plus-lighter { + mix-blend-mode: plus-lighter; +} + +.\!shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1) !important; + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), + 0 1px 2px -1px var(--tw-shadow-color) !important; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), + var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important; +} + +.shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), + 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), + var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.outline { + outline-style: solid; +} + +.outline-dashed { + outline-style: dashed; +} + +.outline-dotted { + outline-style: dotted; +} + +.outline-double { + outline-style: double; +} + +.ring { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 + var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 + calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + var(--tw-shadow, 0 0 #0000); +} + +.ring-inset { + --tw-ring-inset: inset; +} + +.blur { + --tw-blur: blur(8px); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) + var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) + var(--tw-sepia) var(--tw-drop-shadow); +} + +.drop-shadow { + --tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / 0.1)) + drop-shadow(0 1px 1px rgb(0 0 0 / 0.06)); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) + var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) + var(--tw-sepia) var(--tw-drop-shadow); +} + +.grayscale { + --tw-grayscale: grayscale(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) + var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) + var(--tw-sepia) var(--tw-drop-shadow); +} + +.invert { + --tw-invert: invert(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) + var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) + var(--tw-sepia) var(--tw-drop-shadow); +} + +.sepia { + --tw-sepia: sepia(100%); + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) + var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) + var(--tw-sepia) var(--tw-drop-shadow); +} + +.\!filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) + var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) + var(--tw-sepia) var(--tw-drop-shadow) !important; +} + +.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) + var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) + var(--tw-sepia) var(--tw-drop-shadow); +} + +.filter-none { + filter: none; +} + +.backdrop-blur { + --tw-backdrop-blur: blur(8px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); +} + +.backdrop-grayscale { + --tw-backdrop-grayscale: grayscale(100%); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); +} + +.backdrop-invert { + --tw-backdrop-invert: invert(100%); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); +} + +.backdrop-sepia { + --tw-backdrop-sepia: sepia(100%); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); +} + +.backdrop-filter { + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) + var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); +} + +.backdrop-filter-none { + -webkit-backdrop-filter: none; + backdrop-filter: none; +} + +.transition { + transition-property: color, background-color, border-color, + text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, + -webkit-backdrop-filter; + transition-property: color, background-color, border-color, + text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, + backdrop-filter; + transition-property: color, background-color, border-color, + text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, + backdrop-filter, -webkit-backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.ease-in { + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} + +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.ease-out { + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); +} + +.contain-none { + contain: none; +} + +.contain-content { + contain: content; +} + +.contain-strict { + contain: strict; +} + +.contain-size { + --tw-contain-size: size; + contain: var(--tw-contain-size) var(--tw-contain-layout) + var(--tw-contain-paint) var(--tw-contain-style); +} + +.contain-inline-size { + --tw-contain-size: inline-size; + contain: var(--tw-contain-size) var(--tw-contain-layout) + var(--tw-contain-paint) var(--tw-contain-style); +} + +.contain-layout { + --tw-contain-layout: layout; + contain: var(--tw-contain-size) var(--tw-contain-layout) + var(--tw-contain-paint) var(--tw-contain-style); +} + +.contain-paint { + --tw-contain-paint: paint; + contain: var(--tw-contain-size) var(--tw-contain-layout) + var(--tw-contain-paint) var(--tw-contain-style); +} + +.contain-style { + --tw-contain-style: style; + contain: var(--tw-contain-size) var(--tw-contain-layout) + var(--tw-contain-paint) var(--tw-contain-style); +} + +.content-\[\'this-is-also-valid\]-weirdly-enough\'\] { + --tw-content: "this-is-also-valid]-weirdly-enough"; + content: var(--tw-content); +} + +.forced-color-adjust-auto { + forced-color-adjust: auto; +} + +.forced-color-adjust-none { + forced-color-adjust: none; +} + +@font-face { + font-family: iranSans; + font-style: normal; + font-weight: 100; + src: url("../fonts/woff/IRANSansX-Regular.woff") format("woff"); +} + +* { + font-family: iranSans; +} + +html { + height: 100%; +} + +.main .bg-main { + background-image: url(../images/top-BG.svg); + background-position: top; + background-repeat: no-repeat; + background-size: contain; +} + +@media (min-width: 1024px) { + .main .bg-main { + background-image: url(../images/Patt.svg); + background-position: left; + } +} + +.hide-arrow[type="number"]::-webkit-inner-spin-button, +.hide-arrow[type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0; +} + +input:-webkit-autofill, +input:-webkit-autofill:hover, +input:-webkit-autofill:focus, +input:-webkit-autofill:active { + -webkit-box-shadow: 0 0 0 30px rgb(248 250 252 / var(--tw-bg-opacity, 1)) + inset !important; +} + +.main { + display: flex; + height: 100%; + align-items: center; + justify-content: center; +} + +.container { + display: flex; + flex-direction: column; + gap: 2rem; + border-radius: 0.5rem; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); + padding: 2rem; + text-align: center; + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), + 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), + var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.main .container { + background-image: url(../images/top-BG.svg); + background-position: top; + background-repeat: no-repeat; + background-size: contain; +} + +@media (min-width: 1024px) { + .main .container { + background-image: url(../images/Patt.svg); + background-position: left; + } +} + +@media (min-width: 500px) { + .container { + max-width: 400px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 400px; + overflow: hidden; + } +} + +@media (min-width: 1024px) { + .container { + min-height: 600px; + max-width: 960px; + flex-direction: row; + } +} + +.right-side { + display: flex; + width: 100%; + flex-direction: column; + gap: 1.25rem; +} + +@media (min-width: 1024px) { + .right-side { + max-width: 320px; + flex: 1 1 0%; + } +} + +.left-side { + display: flex; + height: 100%; + width: 100%; + flex: 1 1 0%; + flex-direction: column; + align-items: center; + justify-content: flex-end; + align-self: flex-end; + overflow: hidden; +} + +.form { + display: flex; + width: 100%; + flex-direction: column; +} + +.form > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.25rem * var(--tw-space-y-reverse)); +} + +.form { + text-align: start; + font-size: 0.75rem; + line-height: 1rem; +} + +.form-result { + display: flex; + width: 100%; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 1.25rem; +} + +@media (min-width: 1024px) { + .form-result { + max-width: 320px; + flex: 1 1 0%; + } +} + +.header-form { + display: flex; + width: 100%; + flex-direction: column; + align-items: center; + justify-content: center; + border-bottom-width: 1px; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + font-size: 1.25rem; + line-height: 1.75rem; + font-weight: 800; + --tw-text-opacity: 1; +} + +.input-form { + display: block; + width: 100%; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); + --tw-bg-opacity: 1; + background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); + padding: 0.625rem; + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity, 1)); +} + +.input-form:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.input-form-otp { + display: block; + width: 100%; + border-radius: 0.375rem; + --tw-border-opacity: 1; + border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); + --tw-bg-opacity: 1; + background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); + padding: 0.625rem; + text-align: center; + font-size: 0.875rem; + line-height: 1.25rem; + letter-spacing: 10px; + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity, 1)); +} + +.input-form-otp:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.btn-primary { + display: flex; + align-items: center; + justify-content: center; + border-color: rgb(0 77 107 / var(--tw-border-opacity, 1)); + background-color: rgb(0 77 107 / var(--tw-border-opacity, 1)); + border-radius: 0.375rem; + border-width: 1px; + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.625rem; + padding-bottom: 0.625rem; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.btn-primary:hover { + --tw-bg-opacity: 1; + background-color: rgb(0 55 77 / var(--tw-bg-opacity, 1)); + --tw-text-opacity: 1; +} + +@media (min-width: 1024px) { + .btn-primary { + --tw-border-opacity: 1; + border-color: rgb(0 77 107 / var(--tw-border-opacity, 1)); + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.625rem; + padding-bottom: 0.625rem; + } +} + +@media (min-width: 1024px) { + .text-xs { + font-size: 0.75rem !important; + } +} + +.btn-primary-profile { + border-color: #e5e7eb !important; + padding: 0.25rem !important; + --tw-text-opacity: 1; + color: rgb(0 77 107 / var(--tw-border-opacity, 1)) !important; + background-color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important; +} + +.btn-primary-profile:hover { + color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important; + background-color: rgb(0 77 107 / var(--tw-border-opacity, 1)) !important; +} + +@media (min-width: 1024px) { + .btn-primary-profile { + --tw-border-opacity: 1; + border-color: rgb(0 77 107 / var(--tw-border-opacity, 1)) !important; + padding-left: 0.75rem !important; + padding-right: 0.75rem !important; + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } +} + +.btn-red { + border-radius: 0.375rem; + border-width: 1px; + padding: 0.25rem; + font-size: 0.875rem; + line-height: 1.25rem; + --tw-bg-opacity: 1; + font-weight: 500; + --tw-text-opacity: 1; + background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)); + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.btn-red:hover { + --tw-bg-opacity: 0.87; + background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)); +} + +.btn-red-profile { + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-bg-opacity, 1)) !important; + background-color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important; +} + +.btn-red-profile:hover { + color: rgb(255 255 255 / var(--tw-text-opacity, 1)) !important; + background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1)) !important; +} + +@media (min-width: 1024px) { + .btn-red { + --tw-border-opacity: 1; + border-color: rgb(239 68 68 / var(--tw-border-opacity, 1)); + padding-left: 0.75rem; + padding-right: 0.75rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } +} + +.btn-outline { + display: flex; + width: 100%; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); + padding-left: 1.25rem; + padding-right: 1.25rem; + padding-top: 0.625rem; + padding-bottom: 0.625rem; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 500; + --tw-text-opacity: 1; + color: rgb(17 24 39 / var(--tw-text-opacity, 1)); +} + +.btn-outline:hover { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} + +.btn-outline:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.container-input { + display: flex; + width: 100%; + gap: 4px; + align-items: center; + justify-content: center; + border-radius: 0.375rem; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); + --tw-bg-opacity: 1; + background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity, 1)); +} + +.container-input:hover { + --tw-border-opacity: 1; + border-color: rgb(31 41 55 / var(--tw-border-opacity, 1)); +} + +.input-validation-error { + border: 1px solid; + --tw-border-opacity: 1; + border-color: rgb(239 68 68 / var(--tw-border-opacity, 1)); +} + +.dntCaptcha { + position: relative; + display: flex; + margin-bottom: 15px; + width: 100%; + height: 38px; + border-radius: 0.375rem; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); + --tw-bg-opacity: 1; + background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); + --tw-text-opacity: 1; + align-items: center; + color: rgb(15 23 42 / var(--tw-text-opacity, 1)); + justify-content: space-between; + padding: 0px 0px 0px 4px; +} + +.btn-refresh { + order: 3; + padding: 12px !important; + width: 20px; + height: 20px; + background-image: url("../images/refresh-icon.svg"); + background-repeat: no-repeat; + background-position: center; + cursor: pointer; + border-radius: 0.25rem; + padding: 0.25rem; + --tw-text-opacity: 1; + color: rgb(100 116 139 / var(--tw-text-opacity, 1)); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + fill: rgba(0, 77, 107, 0.1); +} + +.btn-refresh:hover { + background-color: rgba(0, 77, 107, 0.1); + color: rgb(0 0 0 / var(--tw-text-opacity, 1)); +} + +#dntCaptchaImg { + height: 100%; + order: 2; + margin: 0 0 0 5px !important; +} + +.rtl { + direction: rtl; +} + +.justify-between { + justify-content: space-between !important; +} + +.profile { + display: flex; + height: 100%; + width: 100%; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.5rem; + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); + padding: 0.5rem; +} + +@media (min-width: 1024px) { + .profile { + padding: 0 0 20px 0; + } +} + +.profile-list { + width: 100%; + border-radius: 0.375rem; + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), + 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), + var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +@media (min-width: 500px) { + .profile-list { + max-width: 700px; + } +} + +@media (min-width: 768px) { + .profile-list { + max-width: 700px; + overflow: hidden; + } +} + +@media (min-width: 1024px) { + .profile-list { + max-width: 960px; + } +} + +.profile-title { + display: flex; + border-top-left-radius: 0.375rem; + border-top-right-radius: 0.375rem; + border-bottom-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(243 244 246 / var(--tw-border-opacity, 1)); + --tw-bg-opacity: 1; + background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1)); + padding-left: 0.75rem; + padding-right: 0.75rem; + padding-top: 1rem; + padding-bottom: 1rem; + justify-content: space-between; +} + +.profile-item { + display: flex; + min-height: 70px; + align-items: center; + gap: 0.75rem; + padding: 0.75rem; + font-size: 0.875rem; + line-height: 1.25rem; + justify-content: space-between; +} + +.password-list div { + margin: 0 0 0 -10px; +} + +div::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px #f5f5f5; + border-radius: 10px; + background-color: #f5f5f5; +} + +div::-webkit-scrollbar { + width: 5px; +} + +div::-webkit-scrollbar-thumb { + border-radius: 10px; + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); +} + +@media (min-width: 640px) { + .sm\:container { + width: 100%; + } + + @media (min-width: 640px) { + .sm\:container { + max-width: 640px; + } + } + + @media (min-width: 768px) { + .sm\:container { + max-width: 768px; + } + } + + @media (min-width: 1024px) { + .sm\:container { + max-width: 1024px; + } + } + + @media (min-width: 1280px) { + .sm\:container { + max-width: 1280px; + } + } + + @media (min-width: 1536px) { + .sm\:container { + max-width: 1536px; + } + } +} + +.hover\:border-gray-800:hover { + --tw-border-opacity: 1; + border-color: rgb(31 41 55 / var(--tw-border-opacity, 1)); +} + +.hover\:bg-gray-100:hover { + --tw-bg-opacity: 1; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); +} + +.hover\:bg-primary:hover { + --tw-bg-opacity: 1; + background-color: rgb(0 77 107 / var(--tw-bg-opacity, 1)); +} + +.hover\:bg-primary-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(0 55 77 / var(--tw-bg-opacity, 1)); +} + +.hover\:bg-opacity-10:hover { + --tw-bg-opacity: 0.1; +} + +.hover\:font-bold:hover { + font-weight: 700; +} + +.hover\:text-black:hover { + --tw-text-opacity: 1; + color: rgb(0 0 0 / var(--tw-text-opacity, 1)); +} + +.hover\:text-gray-700:hover { + --tw-text-opacity: 1; + color: rgb(55 65 81 / var(--tw-text-opacity, 1)); +} + +.hover\:text-primary:hover { + --tw-text-opacity: 1; + color: rgb(0 77 107 / var(--tw-text-opacity, 1)); +} + +.hover\:underline:hover { + text-decoration-line: underline; +} + +.before\:hover\:text-center:hover::before { + content: var(--tw-content); + text-align: center; +} + +.hover\:before\:text-center:hover::before { + content: var(--tw-content); + text-align: center; +} + +.focus\:border-blue-500:focus { + --tw-border-opacity: 1; + border-color: rgb(59 130 246 / var(--tw-border-opacity, 1)); +} + +.focus\:border-gray-800:focus { + --tw-border-opacity: 1; + border-color: rgb(31 41 55 / var(--tw-border-opacity, 1)); +} + +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.focus\:ring-0:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 + var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 + calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + var(--tw-shadow, 0 0 #0000); +} + +.focus\:ring-4:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 + var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 + calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + var(--tw-shadow, 0 0 #0000); +} + +.focus\:ring-blue-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1)); +} + +.focus\:hover\:text-center:hover:focus { + text-align: center; +} + +.hover\:focus\:text-center:focus:hover { + text-align: center; +} + +.field-validation-error { + display: block; +} + +.group.otp-error .group-\[\.otp-error\]\:flex { + display: flex; +} + +.group.otp-resend .group-\[\.otp-resend\]\:flex { + display: flex; +} + +.group.register-invalid .group-\[\.register-invalid\]\:flex { + display: flex; +} + +.container-input .input-validation-error { + border: solid 1px !important; + --tw-border-opacity: 1 !important; + border-color: rgb(239 68 68 / var(--tw-border-opacity, 1)) !important; +} + +.field-validation-error { + bottom: -18px; + right: 0; + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity, 1)); +} + +@media not all and (min-width: 1024px) { + .max-lg\:w-full { + width: 100%; + } +} + +@media (max-width: 500px) { + .max-\[500px\]\:w-full { + width: 100%; + } +} + +@media (min-width: 500px) { + .min-\[500px\]\:block { + display: block; + } + + .min-\[500px\]\:min-w-\[400px\] { + min-width: 400px; + } + + .min-\[500px\]\:p-5 { + padding: 1.25rem; + } + + .min-\[500px\]\:py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } +} + +@media (min-width: 640px) { + .sm\:underline { + text-decoration-line: underline; + } +} + +@media (min-width: 768px) { + .md\:order-1 { + order: 1; + } + + .md\:me-0 { + margin-inline-end: 0px; + } + + .md\:flex { + display: flex; + } + + .md\:h-screen { + height: 100vh; + } + + .md\:w-auto { + width: auto; + } + + .md\:flex-row { + flex-direction: row; + } + + .md\:space-x-0 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0px * var(--tw-space-x-reverse)); + margin-left: calc(0px * calc(1 - var(--tw-space-x-reverse))); + } + + .md\:p-5 { + padding: 1.25rem; + } +} + +@media (min-width: 1024px) { + .lg\:mt-10 { + margin-top: 2.5rem; + } + + .lg\:block { + display: block; + } + + .lg\:flex { + display: flex; + } + + .lg\:hidden { + display: none; + } + + .lg\:h-screen { + height: 100vh; + } + + .lg\:max-h-\[700px\] { + max-height: 700px; + } + + .lg\:min-w-\[95px\] { + min-width: 95px; + } + + .lg\:max-w-\[320px\] { + max-width: 320px; + } + + .lg\:max-w-\[960px\] { + max-width: 960px; + } + + .lg\:flex-1 { + flex: 1 1 0%; + } + + .lg\:flex-none { + flex: none; + } + + .lg\:flex-row { + flex-direction: row; + } + + .lg\:gap-6 { + gap: 1.5rem; + } + + .lg\:overflow-hidden { + overflow: hidden; + } + + .lg\:border-b-0 { + border-bottom-width: 0px; + } + + .lg\:py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + + .lg\:px-0 { + padding-left: 0px; + padding-right: 0px; + } + + .lg\:transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + } +} + +.rtl\:space-x-reverse:where([dir="rtl"], [dir="rtl"] *) + > :not([hidden]) + ~ :not([hidden]) { + --tw-space-x-reverse: 1; +} + +.dark\:bg-gray-900:where(.dark, .dark *) { + --tw-bg-opacity: 1; + background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1)); +} + +.dark\:text-white:where(.dark, .dark *) { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} + +.dark\:placeholder-slate-400:where(.dark, .dark *)::-moz-placeholder { + --tw-placeholder-opacity: 1; + color: rgb(148 163 184 / var(--tw-placeholder-opacity, 1)); +} + +.dark\:placeholder-slate-400:where(.dark, .dark *)::placeholder { + --tw-placeholder-opacity: 1; + color: rgb(148 163 184 / var(--tw-placeholder-opacity, 1)); +} + +.dark\:focus\:border-blue-500:focus:where(.dark, .dark *) { + --tw-border-opacity: 1; + border-color: rgb(59 130 246 / var(--tw-border-opacity, 1)); +} + +.dark\:focus\:ring-blue-500:focus:where(.dark, .dark *) { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1)); +} + +@media (min-width: 1024px) { + .dark\:lg\:hover\:\[paint-order\:markers\]:hover:where(.dark, .dark *) { + paint-order: markers; + } +} + +.peer:checked ~ .peer-checked\:bg-primary { + --tw-bg-opacity: 1; + background-color: rgb(0 77 107 / var(--tw-bg-opacity, 1)); +} + +.peer:checked ~ .peer-checked\:after\:translate-x-full::after { + content: var(--tw-content); + --tw-translate-x: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.peer:checked ~ .peer-checked\:after\:border-white::after { + content: var(--tw-content); + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity, 1)); +} + +.peer:focus ~ .peer-focus\:outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.peer:focus ~ .peer-focus\:ring-4 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 + var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 + calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + var(--tw-shadow, 0 0 #0000); +} + +.peer:focus ~ .peer-focus\:ring-blue-300 { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity, 1)); +} + +.peer:checked + ~ .rtl\:peer-checked\:after\:-translate-x-full:where( + [dir="rtl"], + [dir="rtl"] * + )::after { + content: var(--tw-content); + --tw-translate-x: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.not-sr-only { + position: static; + width: auto; + height: auto; + padding: 0; + margin: 0; + overflow: visible; + clip: auto; + white-space: normal; +} + +.w-11 { + width: 2.75rem; +} + +.h-6 { + height: 1.5rem; +} + +.bg-gray-200 { + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} + +.rounded-full { + border-radius: 9999px; +} + +.after\:rounded-full::after { + content: var(--tw-content); + border-radius: 9999px; +} + +.after\:h-5::after { + content: var(--tw-content); + height: 1.25rem; +} + +.after\:w-5::after { + content: var(--tw-content); + width: 1.25rem; +} + +.after\:border::after { + content: var(--tw-content); + border-width: 1px; +} + +.after\:bg-white::after { + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} + +.after\:start-\[2px\]::after { + content: var(--tw-content); + inset-inline-start: 2px; +} + +.after\:top-\[2px\]::after { + content: var(--tw-content); + top: 2px; +} + +.after\:absolute::after { + content: var(--tw-content); + position: absolute; +} + +.after\:content-\[\'\'\]::after { + --tw-content: ""; + content: var(--tw-content); +} + +.after\:transition-all::after { + content: var(--tw-content); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.leading-5 { + line-height: 1.25rem; +} + +.leading-6 { + line-height: 1.5rem; +} + +.bg-blue-400 { + background-color: rgb(96 165 250 / var(--tw-bg-opacity, 1)); +} + +.text-blue-900 { + --tw-text-opacity: 1; + color: rgb(30 58 138 / var(--tw-text-opacity, 1)); +} + +.pr-5 { + padding: 0 32px 0 0; +} + +.checkbox { + position: relative; + height: 1.5rem; + width: 2.75rem; + border-radius: 9999px; + --tw-bg-opacity: 1; + background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)); +} + +.checkbox::after { + position: absolute; + top: 2px; + inset-inline-start: 2px; + height: 1.25rem; + width: 1.25rem; + border-radius: 9999px; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity, 1)); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); + content: var(--tw-content); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.peer:focus ~ .checkbox { + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 + var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 + calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), + var(--tw-shadow, 0 0 #0000); + --tw-ring-opacity: 1; + --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity, 1)); +} + +.checkbox-active { + --tw-bg-opacity: 1; + background-color: rgb(0 77 107 / var(--tw-bg-opacity, 1)); +} + +.checkbox-active::after { + --tw-translate-x: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); + --tw-border-opacity: 1; + border-color: rgb(255 255 255 / var(--tw-border-opacity, 1)); + --tw-content: ""; + content: var(--tw-content); +} + +.checkbox-active:where([dir="rtl"], [dir="rtl"] *)::after { + content: var(--tw-content); + --tw-translate-x: -100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) + rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) + scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.checkbox-disable { + position: relative; + height: 1.5rem; + width: 2.75rem; + border-radius: 9999px; + background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1)); + --tw-bg-opacity: 0.6; +} + +.checkbox-disable::after { + position: absolute; + top: 2px; + inset-inline-start: 2px; + height: 1.25rem; + width: 1.25rem; + border-radius: 9999px; + border-width: 1px; + --tw-border-opacity: 1; + border-color: rgb(243 244 246 / var(--tw-border-opacity, 1)); + content: var(--tw-content); + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} + +.mx-1 { + margin-left: 0.25rem; + margin-right: 0.25rem; +} + +.text-red-500 { + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity, 1)); +} diff --git a/Presentation/HushianWebApp/wwwroot/Before/favicon.ico b/Presentation/HushianWebApp/wwwroot/Before/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0e7e666560f06bf1cfa503dd80b76a16327eb3fb GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYJyK}&Ji9e)e9|DiTK|05iQ z|F2y*x#`}GYuuZb%`#d(yVL62(fz#WdXV|Y_igiyag+KVV$1VC*oOOmqPN2ThTMSb z$$qN;LE?@1A;&HpKO~8)2c12$t8`-k&<)`Z0{=tpc>f1lvO~}s0 zWd5zo7bNO(0TLU7Xa!J1Y?k!l6;gt?A^Rf0a-mZ_L;+b-QbgY~7|NWcSbfK$7=ij(^Ua-3=@oX?K z9zfv$vOg5)mRNV$KL@vM$U#?+&R;sMqc_-^7wCV8-7xnjdMkcEuytMT#gm8S4)5B? zjjnIS?C#WslN#!P;q(<0f3UDarsF(h{%3~heX7pzez0I-?cp737N%c0eS!;QR=9%@ z*uS87gXsyg=Lg3jC{96f>2J>R-_MNkzmEySe@{b(|Ng*u>a9sUdhOg9Nst;4hUo|C zjdhp&-&PuRbNlaVs0pV?H7I0lYeO#@xBH>_tZs;qJ z{N>XpS=Y?#4@vM+`W0x&@jnb0Z!vC?f0_$JPVL{a+6ANr9o)KlN$AYs{cgzOdpE7f zPxe*)2QtIYjOo9Z5ySrkFNL3TdMlRQy>?X;SuHO1nZtYBCN^fTYs?S4S`cgTKh$3E zzqbj~|N7j(yXQ|Fkiw-8UHsblGpy&29k!Y`p+0Kq^w!e(6B~}~-?~Z@T^;*>28M=u rAhu^ ? | \\ / : ; , .', + '{numbers} {space} {abc}' + ] + }, + display: { + "{numbers}": "123", + "{escape}": "esc ⎋", + "{tab}": "tab ⇥", + "{backspace}": "⌫", + "{capslock}": "caps lock ⇪", + "{shift}": "⇧", + "{controlleft}": "ctrl ⌃", + "{controlright}": "ctrl ⌃", + "{altleft}": "alt ⌥", + "{altright}": "alt ⌥", + "{metaleft}": "cmd ⌘", + "{metaright}": "cmd ⌘", + "{abc}": "abc", + "{space}": "␣", + "{ent}": "↵", + "{spchars}": "#@$" + } + }); +} + +let selectedElem; + +function onChange(input) { + selectedElem.value = input; +} + +function onKeyPress(button) { + if (button === '{clear}') { + keyboard.setInput(''); + selectedElem.value = ''; + return; + } + let currentLayout = keyboard.options.layoutName; + if (currentLayout === 'numeric') { + return; + } + if (button === "{shift}") { + handleShift(); + } + if (button === "{numbers}") { + handleNumbers(); + } + if (button === "{abc}") { + handleAbc(); + } + if (button === "{spchars}") { + handleSpecialChars(); + } +} + +function handleShift() { + let currentLayout = keyboard.options.layoutName; + let shiftToggle = currentLayout === "default" ? "shift" : "default"; + + keyboard.setOptions({ + layoutName: shiftToggle + }); +} + +function handleNumbers() { + let currentLayout = keyboard.options.layoutName; + let numbersToggle = currentLayout !== "numbers" ? "numbers" : "default"; + + keyboard.setOptions({ + layoutName: numbersToggle + }); +} + +function handleAbc() { + keyboard.setOptions({ + layoutName: "default" + }); +} + +function handleSpecialChars() { + let currentLayout = keyboard.options.layoutName; + let spCharsToggle = currentLayout !== "spchars" ? "spchars" : "default"; + + keyboard.setOptions({ + layoutName: spCharsToggle + }); +} + +function toggleKeyboard(e, inputElemClassName, maxLength) { + + for (let item of document.getElementsByClassName('vr-keyboard-section')) { + item.innerHTML = ''; + } + document.getElementById(inputElemClassName + "_con").innerHTML = '
'; + + if (selectedElem) { + selectedElem.removeEventListener('input', () => { }); + } + if (currentInputClass === inputElemClassName) { + currentInputClass = ''; + } + else { + currentInputClass = inputElemClassName; + + keyboard = new Keyboard({ + onChange: input => onChange(input), + onKeyPress: button => onKeyPress(button) + }); + setOptions(); + keyboard.setOptions({ + maxLength: maxLength + }); + + selectedElem = document.querySelector(`.${inputElemClassName}`); + keyboard.setInput(selectedElem.value); + selectedElem.addEventListener("input", event => { + keyboard.setInput(event.target.value); + }); + } + + let keyboardConElem = document.querySelector('.simple-keyboard-con'); + if (e.target.classList.contains('mdi')) { + if (e.target.classList.contains('mdi-keyboard')) { + document.querySelectorAll('.mdi-keyboard-off').forEach(e => { + e.classList.remove('mdi-keyboard-off'); + e.classList.add('mdi-keyboard'); + }); + keyboardConElem.style.display = 'block'; + e.target.classList.add('mdi-keyboard-off'); + e.target.classList.remove('mdi-keyboard'); + } + else { + keyboardConElem.style.display = 'none'; + e.target.classList.add('mdi-keyboard'); + e.target.classList.remove('mdi-keyboard-off'); + } + } + else { + let child = e.target.children[0]; + if (child) { + if (child.classList.contains('mdi-keyboard')) { + child.classList.add('mdi-keyboard-off'); + child.classList.remove('mdi-keyboard'); + } + else { + child.classList.add('mdi-keyboard'); + child.classList.remove('mdi-keyboard-off'); + } + } + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js new file mode 100644 index 0000000..d8d803c --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js @@ -0,0 +1,8 @@ +/** + * @license + * Unobtrusive validation support library for jQuery and jQuery Validate + * Copyright (c) .NET Foundation. All rights reserved. + * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + * @version v4.0.0 + */ +!function(a){"function"==typeof define&&define.amd?define("jquery.validate.unobtrusive",["jquery-validation"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery-validation")):jQuery.validator.unobtrusive=a(jQuery)}(function(s){var a,o=s.validator,d="unobtrusiveValidation";function l(a,e,n){a.rules[e]=n,a.message&&(a.messages[e]=a.message)}function u(a){return a.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g,"\\$1")}function n(a){return a.substr(0,a.lastIndexOf(".")+1)}function m(a,e){return a=0===a.indexOf("*.")?a.replace("*.",e):a}function f(a){var e=s(this),n="__jquery_unobtrusive_validation_form_reset";if(!e.data(n)){e.data(n,!0);try{e.data("validator").resetForm()}finally{e.removeData(n)}e.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors"),e.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")}}function p(n){function a(a,e){(a=r[a])&&s.isFunction(a)&&a.apply(n,e)}var e=s(n),t=e.data(d),i=s.proxy(f,n),r=o.unobtrusive.options||{};return t||(t={options:{errorClass:r.errorClass||"input-validation-error",errorElement:r.errorElement||"span",errorPlacement:function(){!function(a,e){var e=s(this).find("[data-valmsg-for='"+u(e[0].name)+"']"),n=(n=e.attr("data-valmsg-replace"))?!1!==s.parseJSON(n):null;e.removeClass("field-validation-valid").addClass("field-validation-error"),a.data("unobtrusiveContainer",e),n?(e.empty(),a.removeClass("input-validation-error").appendTo(e)):a.hide()}.apply(n,arguments),a("errorPlacement",arguments)},invalidHandler:function(){!function(a,e){var n=s(this).find("[data-valmsg-summary=true]"),t=n.find("ul");t&&t.length&&e.errorList.length&&(t.empty(),n.addClass("validation-summary-errors").removeClass("validation-summary-valid"),s.each(e.errorList,function(){s("
  • ").html(this.message).appendTo(t)}))}.apply(n,arguments),a("invalidHandler",arguments)},messages:{},rules:{},success:function(){!function(a){var e,n=a.data("unobtrusiveContainer");n&&(e=(e=n.attr("data-valmsg-replace"))?s.parseJSON(e):null,n.addClass("field-validation-valid").removeClass("field-validation-error"),a.removeData("unobtrusiveContainer"),e&&n.empty())}.apply(n,arguments),a("success",arguments)}},attachValidation:function(){e.off("reset."+d,i).on("reset."+d,i).validate(this.options)},validate:function(){return e.validate(),e.valid()}},e.data(d,t)),t}return o.unobtrusive={adapters:[],parseElement:function(t,a){var e,i,r,o=s(t),d=o.parents("form")[0];d&&((e=p(d)).options.rules[t.name]=i={},e.options.messages[t.name]=r={},s.each(this.adapters,function(){var a="data-val-"+this.name,e=o.attr(a),n={};void 0!==e&&(a+="-",s.each(this.params,function(){n[this]=o.attr(a+this)}),this.adapt({element:t,form:d,message:e,params:n,rules:i,messages:r}))}),s.extend(i,{__dummy__:!0}),a||e.attachValidation())},parse:function(a){var a=s(a),e=a.parents().addBack().filter("form").add(a.find("form")).has("[data-val=true]");a.find("[data-val=true]").each(function(){o.unobtrusive.parseElement(this,!0)}),e.each(function(){var a=p(this);a&&a.attachValidation()})}},(a=o.unobtrusive.adapters).add=function(a,e,n){return n||(n=e,e=[]),this.push({name:a,params:e,adapt:n}),this},a.addBool=function(e,n){return this.add(e,function(a){l(a,n||e,!0)})},a.addMinMax=function(a,t,i,r,e,n){return this.add(a,[e||"min",n||"max"],function(a){var e=a.params.min,n=a.params.max;e&&n?l(a,r,[e,n]):e?l(a,t,e):n&&l(a,i,n)})},a.addSingleVal=function(e,n,t){return this.add(e,[n||"val"],function(a){l(a,t||e,a.params[n])})},o.addMethod("__dummy__",function(a,e,n){return!0}),o.addMethod("regex",function(a,e,n){return!!this.optional(e)||(e=new RegExp(n).exec(a))&&0===e.index&&e[0].length===a.length}),o.addMethod("nonalphamin",function(a,e,n){var t;return t=n?(t=a.match(/\W/g))&&t.length>=n:t}),o.methods.extension?(a.addSingleVal("accept","mimtype"),a.addSingleVal("extension","extension")):a.addSingleVal("extension","extension","accept"),a.addSingleVal("regex","pattern"),a.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url"),a.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range"),a.addMinMax("minlength","minlength").addMinMax("maxlength","minlength","maxlength"),a.add("equalto",["other"],function(a){var e=n(a.element.name),e=m(a.params.other,e);l(a,"equalTo",s(a.form).find(":input").filter("[name='"+u(e)+"']")[0])}),a.add("required",function(a){"INPUT"===a.element.tagName.toUpperCase()&&"CHECKBOX"===a.element.type.toUpperCase()||l(a,"required",!0)}),a.add("remote",["url","type","additionalfields"],function(t){var i={url:t.params.url,type:t.params.type||"GET",data:{}},r=n(t.element.name);s.each((t.params.additionalfields||t.element.name).replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g),function(a,e){var n=m(e,r);i.data[n]=function(){var a=s(t.form).find(":input").filter("[name='"+u(n)+"']");return a.is(":checkbox")?a.filter(":checked").val()||a.filter(":hidden").val()||"":a.is(":radio")?a.filter(":checked").val()||"":a.val()}}),l(t,"remote",i)}),a.add("password",["min","nonalphamin","regex"],function(a){a.params.min&&l(a,"minlength",a.params.min),a.params.nonalphamin&&l(a,"nonalphamin",a.params.nonalphamin),a.params.regex&&l(a,"regex",a.params.regex)}),a.add("fileextensions",["extensions"],function(a){l(a,"extension",a.params.extensions)}),s(function(){o.unobtrusive.parse(document)}),o.unobtrusive}); \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation/dist/jquery.validate.min.js b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation/dist/jquery.validate.min.js new file mode 100644 index 0000000..442a413 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery-validation/dist/jquery.validate.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.19.5 - 7/1/2022 + * https://jqueryvalidation.org/ + * Copyright (c) 2022 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!(c.settings.submitHandler&&!c.settings.debug)||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0],k="undefined"!=typeof this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=j&&(!j.form&&k&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}});var b=function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};a.extend(a.expr.pseudos||a.expr[":"],{blank:function(c){return!b(""+a(c).val())},filled:function(c){var d=a(c).val();return null!==d&&!!b(""+d)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");if(!this.form&&c&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name")),d===this.form){var e=a.data(this.form,"validator"),f="on"+b.type.replace(/^validate/,""),g=e.settings;g[f]&&!a(this).is(g.ignore)&&g[f].call(e,this,b)}}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.currentForm,e=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){e[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name"),e="undefined"!=typeof a(this).attr("contenteditable")&&"false"!==a(this).attr("contenteditable");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),e&&(this.form=a(this).closest("form")[0],this.name=d),this.form===b.currentForm&&(!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0))})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type,g="undefined"!=typeof e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=g?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);"function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f&&(j=f.call(b,j),delete g.normalizer);for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return void 0===a?"":a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()&&0===this.pendingRequest?(a(this.currentForm).trigger("submit"),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a["date"===b?"dateISO":c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),""===d&&(d=!0),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(a,d){b[a]="function"==typeof d&&"normalizer"!==a?d(c):d}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var a;b[this]&&(Array.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(a=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(a[0]),Number(a[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:void 0!==b&&null!==b&&b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(a)},date:function(){var a=!1;return function(b,c){return a||(a=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(c)||!/Invalid|NaN/.test(new Date(b).toString())}}(),dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c},maxlength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d<=c},rangelength:function(a,b,c){var d=Array.isArray(a)?a.length:this.getLength(a,b);return this.optional(b)||d>=c[0]&&d<=c[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var c,d={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,c){var e=a.port;"abort"===a.mode&&(d[e]&&d[e].abort(),d[e]=c)}):(c=a.ajax,a.ajax=function(b){var e=("mode"in b?b:a.ajaxSettings).mode,f=("port"in b?b:a.ajaxSettings).port;return"abort"===e?(d[f]&&d[f].abort(),d[f]=c.apply(this,arguments),d[f]):c.apply(this,arguments)}),a}); \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/jquery.unobtrusive-ajax/jquery.unobtrusive-ajax.min.js b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery.unobtrusive-ajax/jquery.unobtrusive-ajax.min.js new file mode 100644 index 0000000..ae780ac --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery.unobtrusive-ajax/jquery.unobtrusive-ajax.min.js @@ -0,0 +1,16 @@ +// Unobtrusive Ajax support library for jQuery +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +// @version v3.2.6 +// +// Microsoft grants you the right to use these script files for the sole +// purpose of either: (i) interacting through your browser with the Microsoft +// website or online service, subject to the applicable licensing or use +// terms; or (ii) using the files as included with a Microsoft product subject +// to that product's license terms. Microsoft reserves all other rights to the +// files not expressly granted by Microsoft, whether by implication, estoppel +// or otherwise. Insofar as a script file is dual licensed under GPL, +// Microsoft neither took the code under GPL nor distributes it thereunder but +// under the terms set out in this paragraph. All notices and licenses +// below are for informational purposes only. +!function(t){function a(t,a){for(var e=window,r=(t||"").split(".");e&&r.length;)e=e[r.shift()];return"function"==typeof e?e:(a.push(t),Function.constructor.apply(null,a))}function e(t){return"GET"===t||"POST"===t}function r(t,a){e(a)||t.setRequestHeader("X-HTTP-Method-Override",a)}function n(a,e,r){var n;r.indexOf("application/x-javascript")===-1&&(n=(a.getAttribute("data-ajax-mode")||"").toUpperCase(),t(a.getAttribute("data-ajax-update")).each(function(a,r){switch(n){case"BEFORE":t(r).prepend(e);break;case"AFTER":t(r).append(e);break;case"REPLACE-WITH":t(r).replaceWith(e);break;default:t(r).html(e)}}))}function i(i,u){var o,c,d,s;if(o=i.getAttribute("data-ajax-confirm"),!o||window.confirm(o)){c=t(i.getAttribute("data-ajax-loading")),s=parseInt(i.getAttribute("data-ajax-loading-duration"),10)||0,t.extend(u,{type:i.getAttribute("data-ajax-method")||void 0,url:i.getAttribute("data-ajax-url")||void 0,cache:"true"===(i.getAttribute("data-ajax-cache")||"").toLowerCase(),beforeSend:function(t){var e;return r(t,d),e=a(i.getAttribute("data-ajax-begin"),["xhr"]).apply(i,arguments),e!==!1&&c.show(s),e},complete:function(){c.hide(s),a(i.getAttribute("data-ajax-complete"),["xhr","status"]).apply(i,arguments)},success:function(t,e,r){n(i,t,r.getResponseHeader("Content-Type")||"text/html"),a(i.getAttribute("data-ajax-success"),["data","status","xhr"]).apply(i,arguments)},error:function(){a(i.getAttribute("data-ajax-failure"),["xhr","status","error"]).apply(i,arguments)}}),u.data.push({name:"X-Requested-With",value:"XMLHttpRequest"}),d=u.type.toUpperCase(),e(d)||(u.type="POST",u.data.push({name:"X-HTTP-Method-Override",value:d}));var p=t(i);if(p.is("form")&&"multipart/form-data"==p.attr("enctype")){var f=new FormData;t.each(u.data,function(t,a){f.append(a.name,a.value)}),t("input[type=file]",p).each(function(){var a=this;t.each(a.files,function(t,e){f.append(a.name,e)})}),t.extend(u,{processData:!1,contentType:!1,data:f})}t.ajax(u)}}function u(a){var e=t(a).data(d);return!e||!e.validate||e.validate()}var o="unobtrusiveAjaxClick",c="unobtrusiveAjaxClickTarget",d="unobtrusiveValidation";t(document).on("click","a[data-ajax=true]",function(t){t.preventDefault(),i(this,{url:this.href,type:"GET",data:[]})}),t(document).on("click","form[data-ajax=true] input[type=image]",function(a){var e=a.target.name,r=t(a.target),n=t(r.parents("form")[0]),i=r.offset();n.data(o,[{name:e+".x",value:Math.round(a.pageX-i.left)},{name:e+".y",value:Math.round(a.pageY-i.top)}]),setTimeout(function(){n.removeData(o)},0)}),t(document).on("click","form[data-ajax=true] :submit",function(a){var e=a.currentTarget.name,r=t(a.target),n=t(r.parents("form")[0]);n.data(o,e?[{name:e,value:a.currentTarget.value}]:[]),n.data(c,r),setTimeout(function(){n.removeData(o),n.removeData(c)},0)}),t(document).on("submit","form[data-ajax=true]",function(a){var e=t(this).data(o)||[],r=t(this).data(c),n=r&&(r.hasClass("cancel")||void 0!==r.attr("formnovalidate"));a.preventDefault(),(n||u(this))&&i(this,{url:this.action,type:this.method||"GET",data:e.concat(t(this).serializeArray())})})}(jQuery); \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/jquery/dist/jquery.min7b85.js b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery/dist/jquery.min7b85.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/jquery/dist/jquery.min7b85.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function I(e,r,o){return r===H?N(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):N(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function _(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&C(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=I(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),I(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function F(e){return e.split("-")[0]}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?F(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=_(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=N(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[F(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=F(v),g=f||(y===v||!h?[fe(v)]:function(e){if(F(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(F(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var C=fe(q),N=[];if(i&&N.push(V[H]<=0),s&&N.push(V[q]<=0,V[C]<=0),N.every((function(e){return e}))){E=B,j=!1;break}O.set(B,N)}if(j)for(var I=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},_=h?3:1;_>0;_--){if("break"===I(_))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=F(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,C="y"===j?D:P,N="y"===j?A:L,I="y"===j?"height":"width",_=k[j],X=_+b[C],Y=_-b[N],G=m?-H[I]/2:0,K=w===W?B[I]:H[I],Q=w===W?-H[I]:-B[I],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[C],ne=ee[N],re=de(0,B[I],$[I]),oe=O?B[I]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[I]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=_+ie-fe,pe=de(m?a(X,_+oe-fe-se):X,_,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-_}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=F(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&C(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); +//# sourceMappingURL=popper.min.js.map diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/index9ade.js b/Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/index9ade.js new file mode 100644 index 0000000..d6c8918 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/index9ade.js @@ -0,0 +1,13 @@ +/*! + * + * simple-keyboard v2.28.46 + * https://github.com/hodgef/simple-keyboard + * + * Copyright (c) Francisco Hodge (https://github.com/hodgef) + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ +!function(t,e){"object"===typeof exports&&"object"===typeof module?module.exports=e():"function"===typeof define&&define.amd?define("SimpleKeyboard",[],e):"object"===typeof exports?exports.SimpleKeyboard=e():t.SimpleKeyboard=e()}(window,(function(){return function(t){var e={};function __webpack_require__(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,__webpack_require__),o.l=!0,o.exports}return __webpack_require__.m=t,__webpack_require__.c=e,__webpack_require__.d=function(t,e,n){__webpack_require__.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},__webpack_require__.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},__webpack_require__.t=function(t,e){if(1&e&&(t=__webpack_require__(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(__webpack_require__.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)__webpack_require__.d(n,o,function(e){return t[e]}.bind(null,o));return n},__webpack_require__.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return __webpack_require__.d(e,"a",e),e},__webpack_require__.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=0)}([function(t,e,n){t.exports=n(2)},function(t,e,n){},function(t,e,n){"use strict";n.r(e);n(1);function _createForOfIteratorHelper(t){if("undefined"===typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(!t)return;if("string"===typeof t)return _arrayLikeToArray(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(t,e)}(t))){var e=0,F=function(){};return{s:F,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var n,o,i=!0,s=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return i=t.done,t},e:function(t){s=!0,o=t},f:function(){try{i||null==n.return||n.return()}finally{if(s)throw o}}}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n0?s=this.removeAt(s,n,o):"{space}"===t?s=this.addStringAt(s," ",n,o):"{tab}"!==t||"boolean"===typeof i.tabCharOnTab&&!1===i.tabCharOnTab?"{enter}"!==t&&"{numpadenter}"!==t||!i.newLineOnEnter?t.includes("numpad")&&Number.isInteger(Number(t[t.length-2]))?s=this.addStringAt(s,t[t.length-2],n,o):"{numpaddivide}"===t?s=this.addStringAt(s,"/",n,o):"{numpadmultiply}"===t?s=this.addStringAt(s,"*",n,o):"{numpadsubtract}"===t?s=this.addStringAt(s,"-",n,o):"{numpadadd}"===t?s=this.addStringAt(s,"+",n,o):"{numpaddecimal}"===t?s=this.addStringAt(s,".",n,o):"{"===t||"}"===t?s=this.addStringAt(s,t,n,o):t.includes("{")||t.includes("}")||(s=this.addStringAt(s,t,n,o)):s=this.addStringAt(s,"\n",n,o):s=this.addStringAt(s,"\t",n,o),s}},{key:"updateCaretPos",value:function(t,e){var n=this.updateCaretPosAction(t,e);this.dispatch((function(t){t.caretPosition=n}))}},{key:"updateCaretPosAction",value:function(t,e){var n=this.getOptions(),o=this.getCaretPosition();return e?o>0&&(o-=t):o+=t,n.debug&&console.log("Caret at:",o,"(".concat(this.keyboardDOMClass,")")),o}},{key:"addStringAt",value:function(t,e,n,o){var i;return n||0===n?(i=[t.slice(0,n),e,t.slice(n)].join(""),this.isMaxLengthReached()||o&&this.updateCaretPos(e.length)):i=t+e,i}},{key:"removeAt",value:function(t,e,n){var o;if(0===this.getCaretPosition())return t;var i=/([\uD800-\uDBFF][\uDC00-\uDFFF])/g;return e&&e>=0?t.substring(e-2,e).match(i)?(o=t.substr(0,e-2)+t.substr(e),n&&this.updateCaretPos(2,!0)):(o=t.substr(0,e-1)+t.substr(e),n&&this.updateCaretPos(1,!0)):t.slice(-2).match(i)?(o=t.slice(0,-2),n&&this.updateCaretPos(2,!0)):(o=t.slice(0,-1),n&&this.updateCaretPos(1,!0)),o}},{key:"handleMaxLength",value:function(t,e){var n=this.getOptions(),o=n.maxLength,i=t[n.inputName],s=e.length-1>=o;if(e.length<=i.length)return!1;if(Number.isInteger(o))return n.debug&&console.log("maxLength (num) reached:",s),s?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1);if("object"===_typeof(o)){var a=i.length===o[n.inputName];return n.debug&&console.log("maxLength (obj) reached:",a),a?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1)}}},{key:"isMaxLengthReached",value:function(){return Boolean(this.maxLengthReached)}},{key:"isTouchDevice",value:function(){return"ontouchstart"in window||navigator.maxTouchPoints}},{key:"pointerEventsSupported",value:function(){return window.PointerEvent}},{key:"camelCase",value:function(t){return!!t&&t.toLowerCase().trim().split(/[.\-_\s]/g).reduce((function(t,e){return e.length?t+e[0].toUpperCase()+e.slice(1):t}))}}])&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),Utilities}();function PhysicalKeyboard_defineProperties(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,o=new Array(e);n1?n:n[0]),e}},{key:"inputPatternIsValid",value:function(t){var e,n=this.options.inputPattern;if((e=n instanceof RegExp?n:n[this.options.inputName])&&t){var o=e.test(t);return this.options.debug&&console.log('inputPattern ("'.concat(e,'"): ').concat(o?"passed":"did not pass!")),o}return!0}},{key:"setEventListeners",value:function(){!this.isFirstKeyboardInstance&&this.allKeyboardInstances||(this.options.debug&&console.log("Caret handling started (".concat(this.keyboardDOMClass,")")),document.addEventListener("keyup",this.handleKeyUp),document.addEventListener("keydown",this.handleKeyDown),document.addEventListener("mouseup",this.handleMouseUp),document.addEventListener("touchend",this.handleTouchEnd))}},{key:"handleKeyUp",value:function(t){this.caretEventHandler(t),this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyUp(t)}},{key:"handleKeyDown",value:function(t){this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyDown(t)}},{key:"handleMouseUp",value:function(t){this.caretEventHandler(t)}},{key:"handleTouchEnd",value:function(t){this.caretEventHandler(t)}},{key:"caretEventHandler",value:function(t){var e;t.target.tagName&&(e=t.target.tagName.toLowerCase()),this.dispatch((function(n){n.isMouseHold&&(n.isMouseHold=!1),"textarea"!==e&&"input"!==e||n.options.disableCaretPositioning?n.options.disableCaretPositioning&&(n.caretPosition=null):(n.caretPosition=t.target.selectionStart,n.options.debug&&console.log("Caret at: ",t.target.selectionStart,t.target.tagName.toLowerCase(),"(".concat(n.keyboardDOMClass,")")))}))}},{key:"recurseButtons",value:function(t){var e=this;if(!t)return!1;Object.keys(this.buttonElements).forEach((function(n){return e.buttonElements[n].forEach(t)}))}},{key:"destroy",value:function(){this.options.debug&&console.log("Destroying simple-keyboard instance: ".concat(this.currentInstanceName)),document.removeEventListener("keyup",this.handleKeyUp),document.removeEventListener("keydown",this.handleKeyDown),document.removeEventListener("mouseup",this.handleMouseUp),document.removeEventListener("touchend",this.handleTouchEnd),document.onpointerup=null,document.ontouchend=null,document.ontouchcancel=null,document.onmouseup=null;var deleteButton=function(t){t.onpointerdown=null,t.onpointerup=null,t.onpointercancel=null,t.ontouchstart=null,t.ontouchend=null,t.ontouchcancel=null,t.onclick=null,t.onmousedown=null,t.onmouseup=null,t.remove(),t=null};this.recurseButtons(deleteButton),this.recurseButtons=null,deleteButton=null,this.keyboardDOM.onpointerdown=null,this.keyboardDOM.ontouchstart=null,this.keyboardDOM.onmousedown=null,this.clear(),window.SimpleKeyboardInstances[this.currentInstanceName]=null,delete window.SimpleKeyboardInstances[this.currentInstanceName],this.initialized=!1}},{key:"getButtonThemeClasses",value:function(t){var e=this.options.buttonTheme,n=[];return Array.isArray(e)&&e.forEach((function(e){if(e.class&&"string"===typeof e.class&&e.buttons&&"string"===typeof e.buttons){var o=e.class.split(" ");e.buttons.split(" ").includes(t)&&(n=[].concat(_toConsumableArray(n),_toConsumableArray(o)))}else console.warn('Incorrect "buttonTheme". Please check the documentation.',e)})),n}},{key:"setDOMButtonAttributes",value:function(t,e){var n=this.options.buttonAttributes;Array.isArray(n)&&n.forEach((function(n){n.attribute&&"string"===typeof n.attribute&&n.value&&"string"===typeof n.value&&n.buttons&&"string"===typeof n.buttons?n.buttons.split(" ").includes(t)&&e(n.attribute,n.value):console.warn('Incorrect "buttonAttributes". Please check the documentation.',n)}))}},{key:"onTouchDeviceDetected",value:function(){this.processAutoTouchEvents(),this.disableContextualWindow()}},{key:"disableContextualWindow",value:function(){window.oncontextmenu=function(t){if(t.target.classList.contains("hg-button"))return t.preventDefault(),t.stopPropagation(),!1}}},{key:"processAutoTouchEvents",value:function(){this.options.autoUseTouchEvents&&(this.options.useTouchEvents=!0,this.options.debug&&console.log("autoUseTouchEvents: Touch device detected, useTouchEvents enabled."))}},{key:"onInit",value:function(){this.options.debug&&console.log("".concat(this.keyboardDOMClass," Initialized")),this.setEventListeners(),"function"===typeof this.options.onInit&&this.options.onInit()}},{key:"beforeFirstRender",value:function(){this.utilities.isTouchDevice()&&this.onTouchDeviceDetected(),"function"===typeof this.options.beforeFirstRender&&this.options.beforeFirstRender(),this.isFirstKeyboardInstance&&this.utilities.pointerEventsSupported()&&!this.options.useTouchEvents&&!this.options.useMouseEvents&&this.options.debug&&console.log("Using PointerEvents as it is supported by this browser"),this.options.useTouchEvents&&this.options.debug&&console.log("useTouchEvents has been enabled. Only touch events will be used.")}},{key:"beforeRender",value:function(){"function"===typeof this.options.beforeRender&&this.options.beforeRender()}},{key:"onRender",value:function(){"function"===typeof this.options.onRender&&this.options.onRender()}},{key:"onModulesLoaded",value:function(){"function"===typeof this.options.onModulesLoaded&&this.options.onModulesLoaded()}},{key:"loadModules",value:function(){var t=this;Array.isArray(this.options.modules)&&(this.options.modules.forEach((function(e){var n=new e;if(n.constructor.name&&"Function"!==n.constructor.name){var o="module-".concat(t.utilities.camelCase(n.constructor.name));t.keyboardPluginClasses=t.keyboardPluginClasses+" ".concat(o)}n.init(t)})),this.keyboardPluginClasses=this.keyboardPluginClasses+" modules-loaded",this.render(),this.onModulesLoaded())}},{key:"getModuleProp",value:function(t,e){return!!this.modules[t]&&this.modules[t][e]}},{key:"getModulesList",value:function(){return Object.keys(this.modules)}},{key:"parseRowDOMContainers",value:function(t,e,n,o){var i=this,s=Array.from(t.children),a=0;return s.length&&n.forEach((function(n,r){var u=o[r];if(!u||!(u>n))return!1;var c=n-a,l=u-a,h=document.createElement("div");h.className+="hg-button-container";var d="".concat(i.options.layoutName,"-r").concat(e,"c").concat(r);h.setAttribute("data-skUID",d);var p=s.splice(c,l-c+1);a=l-c,p.forEach((function(t){return h.appendChild(t)})),s.splice(c,0,h),t.innerHTML="",s.forEach((function(e){return t.appendChild(e)})),i.options.debug&&console.log("rowDOMContainer",p,c,l,a+1)})),t}},{key:"render",value:function(){var t=this;this.clear(),this.initialized||this.beforeFirstRender(),this.beforeRender();var e="hg-layout-".concat(this.options.layoutName),n=this.options.layout||{default:["` 1 2 3 4 5 6 7 8 9 0 - = {bksp}","{tab} q w e r t y u i o p [ ] \\","{lock} a s d f g h j k l ; ' {enter}","{shift} z x c v b n m , . / {shift}",".com @ {space}"],shift:["~ ! @ # $ % ^ & * ( ) _ + {bksp}","{tab} Q W E R T Y U I O P { } |",'{lock} A S D F G H J K L : " {enter}',"{shift} Z X C V B N M < > ? {shift}",".com @ {space}"]},o=this.options.useTouchEvents||!1,i=o?"hg-touch-events":"",s=this.options.useMouseEvents||!1,a=this.options.disableRowButtonContainers;this.keyboardDOM.className=this.getKeyboardClassString(this.options.theme,e,this.keyboardPluginClasses,i),n[this.options.layoutName].forEach((function(e,n){var i=e.split(" "),r=document.createElement("div");r.className+="hg-row";var u=[],c=[];i.forEach((function(e,i){var l,h=!a&&e.includes("[")&&e.length>1,d=!a&&e.includes("]")&&e.length>1;h&&(u.push(i),e=e.replace(/\[/g,"")),d&&(c.push(i),e=e.replace(/\]/g,""));var p=t.utilities.getButtonClass(e),f=t.utilities.getButtonDisplayName(e,t.options.display,t.options.mergeDisplay),y=t.options.useButtonTag?"button":"div",b=document.createElement(y);b.className+="hg-button ".concat(p),(l=b.classList).add.apply(l,_toConsumableArray(t.getButtonThemeClasses(e))),t.setDOMButtonAttributes(e,(function(t,e){b.setAttribute(t,e)})),t.activeButtonClass="hg-activeButton",!t.utilities.pointerEventsSupported()||o||s?o?(b.ontouchstart=function(n){t.handleButtonClicked(e),t.handleButtonMouseDown(e,n)},b.ontouchend=function(){t.handleButtonMouseUp(e)},b.ontouchcancel=function(){t.handleButtonMouseUp(e)}):(b.onclick=function(){t.isMouseHold=!1,t.handleButtonClicked(e)},b.onmousedown=function(n){t.handleButtonMouseDown(e,n)},b.onmouseup=function(){t.handleButtonMouseUp(e)}):(b.onpointerdown=function(n){t.handleButtonClicked(e),t.handleButtonMouseDown(e,n)},b.onpointerup=function(){t.handleButtonMouseUp(e)},b.onpointercancel=function(){t.handleButtonMouseUp(e)}),b.setAttribute("data-skBtn",e);var m="".concat(t.options.layoutName,"-r").concat(n,"b").concat(i);b.setAttribute("data-skBtnUID",m);var g=document.createElement("span");g.innerHTML=f,b.appendChild(g),t.buttonElements[e]||(t.buttonElements[e]=[]),t.buttonElements[e].push(b),r.appendChild(b)})),r=t.parseRowDOMContainers(r,n,u,c),t.keyboardDOM.appendChild(r)})),this.onRender(),this.initialized||(this.initialized=!0,!this.utilities.pointerEventsSupported()||o||s?o?(document.ontouchend=function(){return t.handleButtonMouseUp()},document.ontouchcancel=function(){return t.handleButtonMouseUp()},this.keyboardDOM.ontouchstart=function(e){return t.handleKeyboardContainerMouseDown(e)}):o||(document.onmouseup=function(){return t.handleButtonMouseUp()},this.keyboardDOM.onmousedown=function(e){return t.handleKeyboardContainerMouseDown(e)}):(document.onpointerup=function(){return t.handleButtonMouseUp()},this.keyboardDOM.onpointerdown=function(e){return t.handleKeyboardContainerMouseDown(e)}),this.onInit())}}])&&Keyboard_defineProperties(t.prototype,e),n&&Keyboard_defineProperties(t,n),SimpleKeyboard}();e.default=s}])})); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/indexb10f.css b/Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/indexb10f.css new file mode 100644 index 0000000..898fdc0 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/simple-keyboard/indexb10f.css @@ -0,0 +1,12 @@ +/*! + * + * simple-keyboard v2.28.46 + * https://github.com/hodgef/simple-keyboard + * + * Copyright (c) Francisco Hodge (https://github.com/hodgef) + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */.hg-theme-default{width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box;overflow:hidden;touch-action:manipulation}.hg-theme-default .hg-button span{pointer-events:none}.hg-theme-default button.hg-button{border-width:0;outline:0;font-size:inherit}.hg-theme-default{font-family:HelveticaNeue-Light,Helvetica Neue Light,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif;background-color:#ececec;padding:5px;border-radius:5px}.hg-theme-default .hg-button{display:inline-block;flex-grow:1}.hg-theme-default .hg-row{display:flex}.hg-theme-default .hg-row:not(:last-child){margin-bottom:5px}.hg-theme-default .hg-row .hg-button-container,.hg-theme-default .hg-row .hg-button:not(:last-child){margin-right:5px}.hg-theme-default .hg-row>div:last-child{margin-right:0}.hg-theme-default .hg-row .hg-button-container{display:flex}.hg-theme-default .hg-button{box-shadow:0 0 3px -1px rgba(0,0,0,.3);height:40px;border-radius:5px;box-sizing:border-box;padding:5px;background:#fff;border-bottom:1px solid #b5b5b5;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.hg-theme-default .hg-button.hg-activeButton{background:#efefef}.hg-theme-default.hg-layout-numeric .hg-button{width:33.3%;height:60px;align-items:center;display:flex;justify-content:center}.hg-theme-default .hg-button.hg-button-numpadadd,.hg-theme-default .hg-button.hg-button-numpadenter{height:85px}.hg-theme-default .hg-button.hg-button-numpad0{width:105px}.hg-theme-default .hg-button.hg-button-com{max-width:85px}.hg-theme-default .hg-button.hg-standardBtn.hg-button-at{max-width:45px}.hg-theme-default .hg-button.hg-selectedButton{background:rgba(5,25,70,.53);color:#fff}.hg-theme-default .hg-button.hg-standardBtn[data-skbtn=".com"]{max-width:82px}.hg-theme-default .hg-button.hg-standardBtn[data-skbtn="@"]{max-width:60px} +/*# sourceMappingURL=index.css.map */ \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/sweetalert2/sweetalert.min.css b/Presentation/HushianWebApp/wwwroot/Before/lib/sweetalert2/sweetalert.min.css new file mode 100644 index 0000000..7b0bf53 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/sweetalert2/sweetalert.min.css @@ -0,0 +1,943 @@ +body.swal2-shown { + overflow-y: hidden +} + +body.swal2-iosfix { + position: fixed; + left: 0; + right: 0 +} + +.swal2-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + padding: 10px; + background-color: transparent; + z-index: 1060 +} + + .swal2-container.swal2-fade { + -webkit-transition: background-color .1s; + transition: background-color .1s + } + + .swal2-container.swal2-shown { + background-color: rgba(0,0,0,.4) + } + +.swal2-modal { + background-color: #fff; + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + border-radius: 5px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + margin: auto; + overflow-x: hidden; + overflow-y: auto; + display: none; + position: relative; + max-width: 100% +} + + .swal2-modal:focus { + outline: 0 + } + + .swal2-modal.swal2-loading { + overflow-y: hidden + } + + .swal2-modal .swal2-title { + color: #595959; + font-size: 30px; + text-align: center; + font-weight: 600; + text-transform: none; + position: relative; + margin: 0 0 .4em; + padding: 0; + display: block; + word-wrap: break-word + } + + .swal2-modal .swal2-buttonswrapper { + margin-top: 15px + } + + .swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled] { + opacity: .4; + cursor: no-drop + } + + .swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm { + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 4px solid transparent; + border-color: transparent; + width: 40px; + height: 40px; + padding: 0; + margin: 7.5px; + vertical-align: top; + background-color: transparent !important; + color: transparent; + cursor: default; + border-radius: 100%; + -webkit-animation: rotate-loading 1.5s linear 0s infinite normal; + animation: rotate-loading 1.5s linear 0s infinite normal; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none + } + + .swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel { + margin-left: 30px; + margin-right: 30px + } + + .swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after { + display: inline-block; + content: ''; + margin-left: 5px; + vertical-align: -1px; + height: 15px; + width: 15px; + border: 3px solid #999; + -webkit-box-shadow: 1px 1px 1px #fff; + box-shadow: 1px 1px 1px #fff; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: rotate-loading 1.5s linear 0s infinite normal; + animation: rotate-loading 1.5s linear 0s infinite normal + } + + .swal2-modal .swal2-styled { + border: 0; + border-radius: 3px; + -webkit-box-shadow: none; + box-shadow: none; + color: #fff; + cursor: pointer; + font-size: 17px; + font-weight: 500; + margin: 15px 5px 0; + padding: 10px 32px + } + + .swal2-modal .swal2-styled:focus { + outline: 0; + -webkit-box-shadow: 0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4); + box-shadow: 0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4) + } + + .swal2-modal .swal2-image { + margin: 20px auto; + max-width: 100% + } + + .swal2-modal .swal2-close { + background: 0 0; + border: 0; + margin: 0; + padding: 0; + width: 38px; + height: 40px; + font-size: 36px; + line-height: 40px; + font-family: serif; + position: absolute; + top: 5px; + right: 8px; + cursor: pointer; + color: #ccc; + -webkit-transition: color .1s ease; + transition: color .1s ease + } + + .swal2-modal .swal2-close:hover { + color: #d55 + } + + .swal2-modal > .swal2-checkbox, .swal2-modal > .swal2-file, .swal2-modal > .swal2-input, .swal2-modal > .swal2-radio, .swal2-modal > .swal2-select, .swal2-modal > .swal2-textarea { + display: none + } + + .swal2-modal .swal2-content { + font-size: 18px; + text-align: center; + font-weight: 300; + position: relative; + float: none; + margin: 0; + padding: 0; + line-height: normal; + color: #545454; + word-wrap: break-word + } + + .swal2-modal .swal2-checkbox, .swal2-modal .swal2-file, .swal2-modal .swal2-input, .swal2-modal .swal2-radio, .swal2-modal .swal2-select, .swal2-modal .swal2-textarea { + margin: 20px auto + } + + .swal2-modal .swal2-file, .swal2-modal .swal2-input, .swal2-modal .swal2-textarea { + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + font-size: 18px; + border-radius: 3px; + border: 1px solid #d9d9d9; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.06); + box-shadow: inset 0 1px 1px rgba(0,0,0,.06); + -webkit-transition: border-color .3s,-webkit-box-shadow .3s; + transition: border-color .3s,-webkit-box-shadow .3s; + transition: border-color .3s,box-shadow .3s; + transition: border-color .3s,box-shadow .3s,-webkit-box-shadow .3s + } + + .swal2-modal .swal2-file.swal2-inputerror, .swal2-modal .swal2-input.swal2-inputerror, .swal2-modal .swal2-textarea.swal2-inputerror { + border-color: #f27474 !important; + -webkit-box-shadow: 0 0 2px #f27474 !important; + box-shadow: 0 0 2px #f27474 !important + } + + .swal2-modal .swal2-file:focus, .swal2-modal .swal2-input:focus, .swal2-modal .swal2-textarea:focus { + outline: 0; + border: 1px solid #b4dbed; + -webkit-box-shadow: 0 0 3px #c4e6f5; + box-shadow: 0 0 3px #c4e6f5 + } + + .swal2-modal .swal2-file::-webkit-input-placeholder, .swal2-modal .swal2-input::-webkit-input-placeholder, .swal2-modal .swal2-textarea::-webkit-input-placeholder { + color: #ccc + } + + .swal2-modal .swal2-file:-ms-input-placeholder, .swal2-modal .swal2-input:-ms-input-placeholder, .swal2-modal .swal2-textarea:-ms-input-placeholder { + color: #ccc + } + + .swal2-modal .swal2-file::placeholder, .swal2-modal .swal2-input::placeholder, .swal2-modal .swal2-textarea::placeholder { + color: #ccc + } + + .swal2-modal .swal2-range input { + float: left; + width: 80% + } + + .swal2-modal .swal2-range output { + float: right; + width: 20%; + font-size: 20px; + font-weight: 600; + text-align: center + } + + .swal2-modal .swal2-range input, .swal2-modal .swal2-range output { + height: 43px; + line-height: 43px; + vertical-align: middle; + margin: 20px auto; + padding: 0 + } + + .swal2-modal .swal2-input { + height: 43px; + padding: 0 12px + } + + .swal2-modal .swal2-input[type=number] { + max-width: 150px + } + + .swal2-modal .swal2-file { + font-size: 20px + } + + .swal2-modal .swal2-textarea { + height: 108px; + padding: 12px + } + + .swal2-modal .swal2-select { + color: #545454; + font-size: inherit; + padding: 5px 10px; + min-width: 40%; + max-width: 100% + } + + .swal2-modal .swal2-radio { + border: 0 + } + + .swal2-modal .swal2-radio label:not(:first-child) { + margin-left: 20px + } + + .swal2-modal .swal2-radio input, .swal2-modal .swal2-radio span { + vertical-align: middle + } + + .swal2-modal .swal2-radio input { + margin: 0 3px 0 0 + } + + .swal2-modal .swal2-checkbox { + color: #545454 + } + + .swal2-modal .swal2-checkbox input, .swal2-modal .swal2-checkbox span { + vertical-align: middle + } + + .swal2-modal .swal2-validationerror { + background-color: #f0f0f0; + margin: 0 -20px; + overflow: hidden; + padding: 10px; + color: gray; + font-size: 16px; + font-weight: 300; + display: none + } + + .swal2-modal .swal2-validationerror::before { + content: '!'; + display: inline-block; + width: 24px; + height: 24px; + border-radius: 50%; + background-color: #ea7d7d; + color: #fff; + line-height: 24px; + text-align: center; + margin-right: 10px + } + +@supports (-ms-accelerator:true) { + .swal2-range input { + width: 100% !important + } + + .swal2-range output { + display: none + } +} + +@media all and (-ms-high-contrast:none),(-ms-high-contrast:active) { + .swal2-range input { + width: 100% !important + } + + .swal2-range output { + display: none + } +} + +.swal2-icon { + width: 80px; + height: 80px; + border: 4px solid transparent; + border-radius: 50%; + margin: 20px auto 30px; + padding: 0; + position: relative; + -webkit-box-sizing: content-box; + box-sizing: content-box; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + + .swal2-icon.swal2-error { + border-color: #f27474 + } + + .swal2-icon.swal2-error .swal2-x-mark { + position: relative; + display: block + } + + .swal2-icon.swal2-error [class^=swal2-x-mark-line] { + position: absolute; + height: 5px; + width: 47px; + background-color: #f27474; + display: block; + top: 37px; + border-radius: 2px + } + + .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 17px + } + + .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + right: 16px + } + + .swal2-icon.swal2-warning { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + color: #f8bb86; + border-color: #facea8; + font-size: 60px; + line-height: 80px; + text-align: center + } + + .swal2-icon.swal2-info { + font-family: 'Open Sans',sans-serif; + color: #3fc3ee; + border-color: #9de0f6; + font-size: 60px; + line-height: 80px; + text-align: center + } + + .swal2-icon.swal2-question { + font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; + color: #87adbd; + border-color: #c9dae1; + font-size: 60px; + line-height: 80px; + text-align: center + } + + .swal2-icon.swal2-success { + border-color: #a5dc86 + } + + .swal2-icon.swal2-success [class^=swal2-success-circular-line] { + border-radius: 50%; + position: absolute; + width: 60px; + height: 120px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg) + } + + .swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left] { + border-radius: 120px 0 0 120px; + top: -7px; + left: -33px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 60px 60px; + transform-origin: 60px 60px + } + + .swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right] { + border-radius: 0 120px 120px 0; + top: -11px; + left: 30px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-transform-origin: 0 60px; + transform-origin: 0 60px + } + + .swal2-icon.swal2-success .swal2-success-ring { + width: 80px; + height: 80px; + border: 4px solid rgba(165,220,134,.2); + border-radius: 50%; + -webkit-box-sizing: content-box; + box-sizing: content-box; + position: absolute; + left: -4px; + top: -4px; + z-index: 2 + } + + .swal2-icon.swal2-success .swal2-success-fix { + width: 7px; + height: 90px; + position: absolute; + left: 28px; + top: 8px; + z-index: 1; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) + } + + .swal2-icon.swal2-success [class^=swal2-success-line] { + height: 5px; + background-color: #a5dc86; + display: block; + border-radius: 2px; + position: absolute; + z-index: 2 + } + + .swal2-icon.swal2-success [class^=swal2-success-line][class$=tip] { + width: 25px; + left: 14px; + top: 46px; + -webkit-transform: rotate(45deg); + transform: rotate(45deg) + } + + .swal2-icon.swal2-success [class^=swal2-success-line][class$=long] { + width: 47px; + right: 8px; + top: 38px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) + } + +.swal2-progresssteps { + font-weight: 600; + margin: 0 0 20px; + padding: 0 +} + + .swal2-progresssteps li { + display: inline-block; + position: relative + } + + .swal2-progresssteps .swal2-progresscircle { + background: #3085d6; + border-radius: 2em; + color: #fff; + height: 2em; + line-height: 2em; + text-align: center; + width: 2em; + z-index: 20 + } + + .swal2-progresssteps .swal2-progresscircle:first-child { + margin-left: 0 + } + + .swal2-progresssteps .swal2-progresscircle:last-child { + margin-right: 0 + } + + .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep { + background: #3085d6 + } + + .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progresscircle { + background: #add8e6 + } + + .swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep ~ .swal2-progressline { + background: #add8e6 + } + + .swal2-progresssteps .swal2-progressline { + background: #3085d6; + height: .4em; + margin: 0 -1px; + z-index: 10 + } + +[class^=swal2] { + -webkit-tap-highlight-color: transparent +} + +@-webkit-keyframes showSweetAlert { + 0% { + -webkit-transform: scale(.7); + transform: scale(.7) + } + + 45% { + -webkit-transform: scale(1.05); + transform: scale(1.05) + } + + 80% { + -webkit-transform: scale(.95); + transform: scale(.95) + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1) + } +} + +@keyframes showSweetAlert { + 0% { + -webkit-transform: scale(.7); + transform: scale(.7) + } + + 45% { + -webkit-transform: scale(1.05); + transform: scale(1.05) + } + + 80% { + -webkit-transform: scale(.95); + transform: scale(.95) + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1) + } +} + +@-webkit-keyframes hideSweetAlert { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1 + } + + 100% { + -webkit-transform: scale(.5); + transform: scale(.5); + opacity: 0 + } +} + +@keyframes hideSweetAlert { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1 + } + + 100% { + -webkit-transform: scale(.5); + transform: scale(.5); + opacity: 0 + } +} + +.swal2-show { + -webkit-animation: showSweetAlert .3s; + animation: showSweetAlert .3s +} + + .swal2-show.swal2-noanimation { + -webkit-animation: none; + animation: none + } + +.swal2-hide { + -webkit-animation: hideSweetAlert .15s forwards; + animation: hideSweetAlert .15s forwards +} + + .swal2-hide.swal2-noanimation { + -webkit-animation: none; + animation: none + } + +@-webkit-keyframes animate-success-tip { + 0% { + width: 0; + left: 1px; + top: 19px + } + + 54% { + width: 0; + left: 1px; + top: 19px + } + + 70% { + width: 50px; + left: -8px; + top: 37px + } + + 84% { + width: 17px; + left: 21px; + top: 48px + } + + 100% { + width: 25px; + left: 14px; + top: 45px + } +} + +@keyframes animate-success-tip { + 0% { + width: 0; + left: 1px; + top: 19px + } + + 54% { + width: 0; + left: 1px; + top: 19px + } + + 70% { + width: 50px; + left: -8px; + top: 37px + } + + 84% { + width: 17px; + left: 21px; + top: 48px + } + + 100% { + width: 25px; + left: 14px; + top: 45px + } +} + +@-webkit-keyframes animate-success-long { + 0% { + width: 0; + right: 46px; + top: 54px + } + + 65% { + width: 0; + right: 46px; + top: 54px + } + + 84% { + width: 55px; + right: 0; + top: 35px + } + + 100% { + width: 47px; + right: 8px; + top: 38px + } +} + +@keyframes animate-success-long { + 0% { + width: 0; + right: 46px; + top: 54px + } + + 65% { + width: 0; + right: 46px; + top: 54px + } + + 84% { + width: 55px; + right: 0; + top: 35px + } + + 100% { + width: 47px; + right: 8px; + top: 38px + } +} + +@-webkit-keyframes rotatePlaceholder { + 0% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) + } + + 5% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) + } + + 12% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg) + } + + 100% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg) + } +} + +@keyframes rotatePlaceholder { + 0% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) + } + + 5% { + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) + } + + 12% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg) + } + + 100% { + -webkit-transform: rotate(-405deg); + transform: rotate(-405deg) + } +} + +.swal2-animate-success-line-tip { + -webkit-animation: animate-success-tip .75s; + animation: animate-success-tip .75s +} + +.swal2-animate-success-line-long { + -webkit-animation: animate-success-long .75s; + animation: animate-success-long .75s +} + +.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right { + -webkit-animation: rotatePlaceholder 4.25s ease-in; + animation: rotatePlaceholder 4.25s ease-in +} + +@-webkit-keyframes animate-error-icon { + 0% { + -webkit-transform: rotateX(100deg); + transform: rotateX(100deg); + opacity: 0 + } + + 100% { + -webkit-transform: rotateX(0); + transform: rotateX(0); + opacity: 1 + } +} + +@keyframes animate-error-icon { + 0% { + -webkit-transform: rotateX(100deg); + transform: rotateX(100deg); + opacity: 0 + } + + 100% { + -webkit-transform: rotateX(0); + transform: rotateX(0); + opacity: 1 + } +} + +.swal2-animate-error-icon { + -webkit-animation: animate-error-icon .5s; + animation: animate-error-icon .5s +} + +@-webkit-keyframes animate-x-mark { + 0% { + -webkit-transform: scale(.4); + transform: scale(.4); + margin-top: 26px; + opacity: 0 + } + + 50% { + -webkit-transform: scale(.4); + transform: scale(.4); + margin-top: 26px; + opacity: 0 + } + + 80% { + -webkit-transform: scale(1.15); + transform: scale(1.15); + margin-top: -6px + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + margin-top: 0; + opacity: 1 + } +} + +@keyframes animate-x-mark { + 0% { + -webkit-transform: scale(.4); + transform: scale(.4); + margin-top: 26px; + opacity: 0 + } + + 50% { + -webkit-transform: scale(.4); + transform: scale(.4); + margin-top: 26px; + opacity: 0 + } + + 80% { + -webkit-transform: scale(1.15); + transform: scale(1.15); + margin-top: -6px + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + margin-top: 0; + opacity: 1 + } +} + +.swal2-animate-x-mark { + -webkit-animation: animate-x-mark .5s; + animation: animate-x-mark .5s +} + +@-webkit-keyframes rotate-loading { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0) + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes rotate-loading { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0) + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} diff --git a/Presentation/HushianWebApp/wwwroot/Before/lib/tippyjs/tippy-bundle.umd.min1222.js b/Presentation/HushianWebApp/wwwroot/Before/lib/tippyjs/tippy-bundle.umd.min1222.js new file mode 100644 index 0000000..9f4f8bc --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/Before/lib/tippyjs/tippy-bundle.umd.min1222.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t=t||self).tippy=e(t.Popper)}(this,(function(t){"use strict";var e="undefined"!=typeof window&&"undefined"!=typeof document,n=!!e&&!!window.msCrypto,r={passive:!0,capture:!0},o=function(){return document.body};function i(t,e,n){if(Array.isArray(t)){var r=t[e];return null==r?Array.isArray(n)?n[e]:n:r}return t}function a(t,e){var n={}.toString.call(t);return 0===n.indexOf("[object")&&n.indexOf(e+"]")>-1}function s(t,e){return"function"==typeof t?t.apply(void 0,e):t}function u(t,e){return 0===e?t:function(r){clearTimeout(n),n=setTimeout((function(){t(r)}),e)};var n}function p(t,e){var n=Object.assign({},t);return e.forEach((function(t){delete n[t]})),n}function c(t){return[].concat(t)}function f(t,e){-1===t.indexOf(e)&&t.push(e)}function l(t){return t.split("-")[0]}function d(t){return[].slice.call(t)}function v(t){return Object.keys(t).reduce((function(e,n){return void 0!==t[n]&&(e[n]=t[n]),e}),{})}function m(){return document.createElement("div")}function g(t){return["Element","Fragment"].some((function(e){return a(t,e)}))}function h(t){return a(t,"MouseEvent")}function b(t){return!(!t||!t._tippy||t._tippy.reference!==t)}function y(t){return g(t)?[t]:function(t){return a(t,"NodeList")}(t)?d(t):Array.isArray(t)?t:d(document.querySelectorAll(t))}function w(t,e){t.forEach((function(t){t&&(t.style.transitionDuration=e+"ms")}))}function x(t,e){t.forEach((function(t){t&&t.setAttribute("data-state",e)}))}function E(t){var e,n=c(t)[0];return null!=n&&null!=(e=n.ownerDocument)&&e.body?n.ownerDocument:document}function O(t,e,n){var r=e+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(e){t[r](e,n)}))}function C(t,e){for(var n=e;n;){var r;if(t.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var T={isTouch:!1},A=0;function L(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",D))}function D(){var t=performance.now();t-A<20&&(T.isTouch=!1,document.removeEventListener("mousemove",D)),A=t}function k(){var t=document.activeElement;if(b(t)){var e=t._tippy;t.blur&&!e.state.isVisible&&t.blur()}}var R=Object.assign({appendTo:o,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),P=Object.keys(R);function j(t){var e=(t.plugins||[]).reduce((function(e,n){var r,o=n.name,i=n.defaultValue;o&&(e[o]=void 0!==t[o]?t[o]:null!=(r=R[o])?r:i);return e}),{});return Object.assign({},t,e)}function M(t,e){var n=Object.assign({},e,{content:s(e.content,[t])},e.ignoreAttributes?{}:function(t,e){return(e?Object.keys(j(Object.assign({},R,{plugins:e}))):P).reduce((function(e,n){var r=(t.getAttribute("data-tippy-"+n)||"").trim();if(!r)return e;if("content"===n)e[n]=r;else try{e[n]=JSON.parse(r)}catch(t){e[n]=r}return e}),{})}(t,e.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?e.interactive:n.aria.expanded,content:"auto"===n.aria.content?e.interactive?null:"describedby":n.aria.content},n}function V(t,e){t.innerHTML=e}function I(t){var e=m();return!0===t?e.className="tippy-arrow":(e.className="tippy-svg-arrow",g(t)?e.appendChild(t):V(e,t)),e}function S(t,e){g(e.content)?(V(t,""),t.appendChild(e.content)):"function"!=typeof e.content&&(e.allowHTML?V(t,e.content):t.textContent=e.content)}function B(t){var e=t.firstElementChild,n=d(e.children);return{box:e,content:n.find((function(t){return t.classList.contains("tippy-content")})),arrow:n.find((function(t){return t.classList.contains("tippy-arrow")||t.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(t){return t.classList.contains("tippy-backdrop")}))}}function N(t){var e=m(),n=m();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=m();function o(n,r){var o=B(e),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||S(a,t.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(I(r.arrow))):i.appendChild(I(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),S(r,t.props),e.appendChild(n),n.appendChild(r),o(t.props,t.props),{popper:e,onUpdate:o}}N.$$tippy=!0;var H=1,U=[],_=[];function z(e,a){var p,g,b,y,A,L,D,k,P=M(e,Object.assign({},R,j(v(a)))),V=!1,I=!1,S=!1,N=!1,z=[],F=u(wt,P.interactiveDebounce),W=H++,X=(k=P.plugins).filter((function(t,e){return k.indexOf(t)===e})),Y={id:W,reference:e,popper:m(),popperInstance:null,props:P,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:X,clearDelayTimeouts:function(){clearTimeout(p),clearTimeout(g),cancelAnimationFrame(b)},setProps:function(t){if(Y.state.isDestroyed)return;at("onBeforeUpdate",[Y,t]),bt();var n=Y.props,r=M(e,Object.assign({},n,v(t),{ignoreAttributes:!0}));Y.props=r,ht(),n.interactiveDebounce!==r.interactiveDebounce&&(pt(),F=u(wt,r.interactiveDebounce));n.triggerTarget&&!r.triggerTarget?c(n.triggerTarget).forEach((function(t){t.removeAttribute("aria-expanded")})):r.triggerTarget&&e.removeAttribute("aria-expanded");ut(),it(),J&&J(n,r);Y.popperInstance&&(Ct(),At().forEach((function(t){requestAnimationFrame(t._tippy.popperInstance.forceUpdate)})));at("onAfterUpdate",[Y,t])},setContent:function(t){Y.setProps({content:t})},show:function(){var t=Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=T.isTouch&&!Y.props.touch,a=i(Y.props.duration,0,R.duration);if(t||e||n||r)return;if(et().hasAttribute("disabled"))return;if(at("onShow",[Y],!1),!1===Y.props.onShow(Y))return;Y.state.isVisible=!0,tt()&&($.style.visibility="visible");it(),dt(),Y.state.isMounted||($.style.transition="none");if(tt()){var u=rt(),p=u.box,c=u.content;w([p,c],0)}L=function(){var t;if(Y.state.isVisible&&!N){if(N=!0,$.offsetHeight,$.style.transition=Y.props.moveTransition,tt()&&Y.props.animation){var e=rt(),n=e.box,r=e.content;w([n,r],a),x([n,r],"visible")}st(),ut(),f(_,Y),null==(t=Y.popperInstance)||t.forceUpdate(),at("onMount",[Y]),Y.props.animation&&tt()&&function(t,e){mt(t,e)}(a,(function(){Y.state.isShown=!0,at("onShown",[Y])}))}},function(){var t,e=Y.props.appendTo,n=et();t=Y.props.interactive&&e===o||"parent"===e?n.parentNode:s(e,[n]);t.contains($)||t.appendChild($);Y.state.isMounted=!0,Ct()}()},hide:function(){var t=!Y.state.isVisible,e=Y.state.isDestroyed,n=!Y.state.isEnabled,r=i(Y.props.duration,1,R.duration);if(t||e||n)return;if(at("onHide",[Y],!1),!1===Y.props.onHide(Y))return;Y.state.isVisible=!1,Y.state.isShown=!1,N=!1,V=!1,tt()&&($.style.visibility="hidden");if(pt(),vt(),it(!0),tt()){var o=rt(),a=o.box,s=o.content;Y.props.animation&&(w([a,s],r),x([a,s],"hidden"))}st(),ut(),Y.props.animation?tt()&&function(t,e){mt(t,(function(){!Y.state.isVisible&&$.parentNode&&$.parentNode.contains($)&&e()}))}(r,Y.unmount):Y.unmount()},hideWithInteractivity:function(t){nt().addEventListener("mousemove",F),f(U,F),F(t)},enable:function(){Y.state.isEnabled=!0},disable:function(){Y.hide(),Y.state.isEnabled=!1},unmount:function(){Y.state.isVisible&&Y.hide();if(!Y.state.isMounted)return;Tt(),At().forEach((function(t){t._tippy.unmount()})),$.parentNode&&$.parentNode.removeChild($);_=_.filter((function(t){return t!==Y})),Y.state.isMounted=!1,at("onHidden",[Y])},destroy:function(){if(Y.state.isDestroyed)return;Y.clearDelayTimeouts(),Y.unmount(),bt(),delete e._tippy,Y.state.isDestroyed=!0,at("onDestroy",[Y])}};if(!P.render)return Y;var q=P.render(Y),$=q.popper,J=q.onUpdate;$.setAttribute("data-tippy-root",""),$.id="tippy-"+Y.id,Y.popper=$,e._tippy=Y,$._tippy=Y;var G=X.map((function(t){return t.fn(Y)})),K=e.hasAttribute("aria-expanded");return ht(),ut(),it(),at("onCreate",[Y]),P.showOnCreate&&Lt(),$.addEventListener("mouseenter",(function(){Y.props.interactive&&Y.state.isVisible&&Y.clearDelayTimeouts()})),$.addEventListener("mouseleave",(function(){Y.props.interactive&&Y.props.trigger.indexOf("mouseenter")>=0&&nt().addEventListener("mousemove",F)})),Y;function Q(){var t=Y.props.touch;return Array.isArray(t)?t:[t,0]}function Z(){return"hold"===Q()[0]}function tt(){var t;return!(null==(t=Y.props.render)||!t.$$tippy)}function et(){return D||e}function nt(){var t=et().parentNode;return t?E(t):document}function rt(){return B($)}function ot(t){return Y.state.isMounted&&!Y.state.isVisible||T.isTouch||y&&"focus"===y.type?0:i(Y.props.delay,t?0:1,R.delay)}function it(t){void 0===t&&(t=!1),$.style.pointerEvents=Y.props.interactive&&!t?"":"none",$.style.zIndex=""+Y.props.zIndex}function at(t,e,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[t]&&n[t].apply(n,e)})),n)&&(r=Y.props)[t].apply(r,e)}function st(){var t=Y.props.aria;if(t.content){var n="aria-"+t.content,r=$.id;c(Y.props.triggerTarget||e).forEach((function(t){var e=t.getAttribute(n);if(Y.state.isVisible)t.setAttribute(n,e?e+" "+r:r);else{var o=e&&e.replace(r,"").trim();o?t.setAttribute(n,o):t.removeAttribute(n)}}))}}function ut(){!K&&Y.props.aria.expanded&&c(Y.props.triggerTarget||e).forEach((function(t){Y.props.interactive?t.setAttribute("aria-expanded",Y.state.isVisible&&t===et()?"true":"false"):t.removeAttribute("aria-expanded")}))}function pt(){nt().removeEventListener("mousemove",F),U=U.filter((function(t){return t!==F}))}function ct(t){if(!T.isTouch||!S&&"mousedown"!==t.type){var n=t.composedPath&&t.composedPath()[0]||t.target;if(!Y.props.interactive||!C($,n)){if(c(Y.props.triggerTarget||e).some((function(t){return C(t,n)}))){if(T.isTouch)return;if(Y.state.isVisible&&Y.props.trigger.indexOf("click")>=0)return}else at("onClickOutside",[Y,t]);!0===Y.props.hideOnClick&&(Y.clearDelayTimeouts(),Y.hide(),I=!0,setTimeout((function(){I=!1})),Y.state.isMounted||vt())}}}function ft(){S=!0}function lt(){S=!1}function dt(){var t=nt();t.addEventListener("mousedown",ct,!0),t.addEventListener("touchend",ct,r),t.addEventListener("touchstart",lt,r),t.addEventListener("touchmove",ft,r)}function vt(){var t=nt();t.removeEventListener("mousedown",ct,!0),t.removeEventListener("touchend",ct,r),t.removeEventListener("touchstart",lt,r),t.removeEventListener("touchmove",ft,r)}function mt(t,e){var n=rt().box;function r(t){t.target===n&&(O(n,"remove",r),e())}if(0===t)return e();O(n,"remove",A),O(n,"add",r),A=r}function gt(t,n,r){void 0===r&&(r=!1),c(Y.props.triggerTarget||e).forEach((function(e){e.addEventListener(t,n,r),z.push({node:e,eventType:t,handler:n,options:r})}))}function ht(){var t;Z()&&(gt("touchstart",yt,{passive:!0}),gt("touchend",xt,{passive:!0})),(t=Y.props.trigger,t.split(/\s+/).filter(Boolean)).forEach((function(t){if("manual"!==t)switch(gt(t,yt),t){case"mouseenter":gt("mouseleave",xt);break;case"focus":gt(n?"focusout":"blur",Et);break;case"focusin":gt("focusout",Et)}}))}function bt(){z.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),z=[]}function yt(t){var e,n=!1;if(Y.state.isEnabled&&!Ot(t)&&!I){var r="focus"===(null==(e=y)?void 0:e.type);y=t,D=t.currentTarget,ut(),!Y.state.isVisible&&h(t)&&U.forEach((function(e){return e(t)})),"click"===t.type&&(Y.props.trigger.indexOf("mouseenter")<0||V)&&!1!==Y.props.hideOnClick&&Y.state.isVisible?n=!0:Lt(t),"click"===t.type&&(V=!n),n&&!r&&Dt(t)}}function wt(t){var e=t.target,n=et().contains(e)||$.contains(e);"mousemove"===t.type&&n||function(t,e){var n=e.clientX,r=e.clientY;return t.every((function(t){var e=t.popperRect,o=t.popperState,i=t.props.interactiveBorder,a=l(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,p="top"===a?s.bottom.y:0,c="right"===a?s.left.x:0,f="left"===a?s.right.x:0,d=e.top-r+u>i,v=r-e.bottom-p>i,m=e.left-n+c>i,g=n-e.right-f>i;return d||v||m||g}))}(At().concat($).map((function(t){var e,n=null==(e=t._tippy.popperInstance)?void 0:e.state;return n?{popperRect:t.getBoundingClientRect(),popperState:n,props:P}:null})).filter(Boolean),t)&&(pt(),Dt(t))}function xt(t){Ot(t)||Y.props.trigger.indexOf("click")>=0&&V||(Y.props.interactive?Y.hideWithInteractivity(t):Dt(t))}function Et(t){Y.props.trigger.indexOf("focusin")<0&&t.target!==et()||Y.props.interactive&&t.relatedTarget&&$.contains(t.relatedTarget)||Dt(t)}function Ot(t){return!!T.isTouch&&Z()!==t.type.indexOf("touch")>=0}function Ct(){Tt();var n=Y.props,r=n.popperOptions,o=n.placement,i=n.offset,a=n.getReferenceClientRect,s=n.moveTransition,u=tt()?B($).arrow:null,p=a?{getBoundingClientRect:a,contextElement:a.contextElement||et()}:e,c=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(t){var e=t.state;if(tt()){var n=rt().box;["placement","reference-hidden","escaped"].forEach((function(t){"placement"===t?n.setAttribute("data-placement",e.placement):e.attributes.popper["data-popper-"+t]?n.setAttribute("data-"+t,""):n.removeAttribute("data-"+t)})),e.attributes.popper={}}}}];tt()&&u&&c.push({name:"arrow",options:{element:u,padding:3}}),c.push.apply(c,(null==r?void 0:r.modifiers)||[]),Y.popperInstance=t.createPopper(p,$,Object.assign({},r,{placement:o,onFirstUpdate:L,modifiers:c}))}function Tt(){Y.popperInstance&&(Y.popperInstance.destroy(),Y.popperInstance=null)}function At(){return d($.querySelectorAll("[data-tippy-root]"))}function Lt(t){Y.clearDelayTimeouts(),t&&at("onTrigger",[Y,t]),dt();var e=ot(!0),n=Q(),r=n[0],o=n[1];T.isTouch&&"hold"===r&&o&&(e=o),e?p=setTimeout((function(){Y.show()}),e):Y.show()}function Dt(t){if(Y.clearDelayTimeouts(),at("onUntrigger",[Y,t]),Y.state.isVisible){if(!(Y.props.trigger.indexOf("mouseenter")>=0&&Y.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(t.type)>=0&&V)){var e=ot(!1);e?g=setTimeout((function(){Y.state.isVisible&&Y.hide()}),e):b=requestAnimationFrame((function(){Y.hide()}))}}else vt()}}function F(t,e){void 0===e&&(e={});var n=R.plugins.concat(e.plugins||[]);document.addEventListener("touchstart",L,r),window.addEventListener("blur",k);var o=Object.assign({},e,{plugins:n}),i=y(t).reduce((function(t,e){var n=e&&z(e,o);return n&&t.push(n),t}),[]);return g(t)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(t){Object.keys(t).forEach((function(e){R[e]=t[e]}))},F.currentInput=T;var W=Object.assign({},t.applyStyles,{effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(t){var e;if(null==(e=t.props.render)||!e.$$tippy)return{};var n=B(t.popper),r=n.box,o=n.content,i=t.props.animateFill?function(){var t=m();return t.className="tippy-backdrop",x([t],"hidden"),t}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var t=r.style.transitionDuration,e=Number(t.replace("ms",""));o.style.transitionDelay=Math.round(e/10)+"ms",i.style.transitionDuration=t,x([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&x([i],"hidden")}}}};var q={clientX:0,clientY:0},$=[];function J(t){var e=t.clientX,n=t.clientY;q={clientX:e,clientY:n}}var G={name:"followCursor",defaultValue:!1,fn:function(t){var e=t.reference,n=E(t.props.triggerTarget||e),r=!1,o=!1,i=!0,a=t.props;function s(){return"initial"===t.props.followCursor&&t.state.isVisible}function u(){n.addEventListener("mousemove",f)}function p(){n.removeEventListener("mousemove",f)}function c(){r=!0,t.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||e.contains(n.target),o=t.props.followCursor,i=n.clientX,a=n.clientY,s=e.getBoundingClientRect(),u=i-s.left,p=a-s.top;!r&&t.props.interactive||t.setProps({getReferenceClientRect:function(){var t=e.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=t.left+u,r=t.top+p);var s="horizontal"===o?t.top:r,c="vertical"===o?t.right:n,f="horizontal"===o?t.bottom:r,l="vertical"===o?t.left:n;return{width:c-l,height:f-s,top:s,right:c,bottom:f,left:l}}})}function l(){t.props.followCursor&&($.push({instance:t,doc:n}),function(t){t.addEventListener("mousemove",J)}(n))}function d(){0===($=$.filter((function(e){return e.instance!==t}))).filter((function(t){return t.doc===n})).length&&function(t){t.removeEventListener("mousemove",J)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=t.props},onAfterUpdate:function(e,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!t.state.isMounted||o||s()||u()):(p(),c()))},onMount:function(){t.props.followCursor&&!o&&(i&&(f(q),i=!1),s()||u())},onTrigger:function(t,e){h(e)&&(q={clientX:e.clientX,clientY:e.clientY}),o="focus"===e.type},onHidden:function(){t.props.followCursor&&(c(),p(),i=!0)}}}};var K={name:"inlinePositioning",defaultValue:!1,fn:function(t){var e,n=t.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;t.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),e!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),t.setProps({getReferenceClientRect:function(){return function(t){return function(t,e,n,r){if(n.length<2||null===t)return e;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||e;switch(t){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===t,s=o.top,u=i.bottom,p=a?o.left:i.left,c=a?o.right:i.right;return{top:s,bottom:u,left:p,right:c,width:c-p,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(t){return t.left}))),l=Math.max.apply(Math,n.map((function(t){return t.right}))),d=n.filter((function(e){return"left"===t?e.left===f:e.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return e}}(l(t),n.getBoundingClientRect(),d(n.getClientRects()),r)}(a.placement)}})),e=a.placement)}};function s(){var e;o||(e=function(t,e){var n;return{popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat(((null==(n=t.popperOptions)?void 0:n.modifiers)||[]).filter((function(t){return t.name!==e.name})),[e])})}}(t.props,a),o=!0,t.setProps(e),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(e,n){if(h(n)){var o=d(t.reference.getClientRects()),i=o.find((function(t){return t.left-2<=n.clientX&&t.right+2>=n.clientX&&t.top-2<=n.clientY&&t.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var Q={name:"sticky",defaultValue:!1,fn:function(t){var e=t.reference,n=t.popper;function r(e){return!0===t.props.sticky||t.props.sticky===e}var o=null,i=null;function a(){var s=r("reference")?(t.popperInstance?t.popperInstance.state.elements.reference:e).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Z(o,s)||u&&Z(i,u))&&t.popperInstance&&t.popperInstance.update(),o=s,i=u,t.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){t.props.sticky&&a()}}}};function Z(t,e){return!t||!e||(t.top!==e.top||t.right!==e.right||t.bottom!==e.bottom||t.left!==e.left)}return e&&function(t){var e=document.createElement("style");e.textContent=t,e.setAttribute("data-tippy-stylesheet","");var n=document.head,r=document.querySelector("head>style,head>link");r?n.insertBefore(e,r):n.appendChild(e)}('.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}'),F.setDefaultProps({plugins:[Y,G,K,Q],render:N}),F.createSingleton=function(t,e){var n;void 0===e&&(e={});var r,o=t,i=[],a=[],s=e.overrides,u=[],f=!1;function l(){a=o.map((function(t){return c(t.props.triggerTarget||t.reference)})).reduce((function(t,e){return t.concat(e)}),[])}function d(){i=o.map((function(t){return t.reference}))}function v(t){o.forEach((function(e){t?e.enable():e.disable()}))}function g(t){return o.map((function(e){var n=e.setProps;return e.setProps=function(o){n(o),e.reference===r&&t.setProps(o)},function(){e.setProps=n}}))}function h(t,e){var n=a.indexOf(e);if(e!==r){r=e;var u=(s||[]).concat("content").reduce((function(t,e){return t[e]=o[n].props[e],t}),{});t.setProps(Object.assign({},u,{getReferenceClientRect:"function"==typeof u.getReferenceClientRect?u.getReferenceClientRect:function(){var t;return null==(t=i[n])?void 0:t.getBoundingClientRect()}}))}}v(!1),d(),l();var b={fn:function(){return{onDestroy:function(){v(!0)},onHidden:function(){r=null},onClickOutside:function(t){t.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(t){t.props.showOnCreate&&!f&&(f=!0,h(t,i[0]))},onTrigger:function(t,e){h(t,e.currentTarget)}}}},y=F(m(),Object.assign({},p(e,["overrides"]),{plugins:[b].concat(e.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat((null==(n=e.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(t){if(w(),!r&&null==t)return h(y,i[0]);if(!r||null!=t){if("number"==typeof t)return i[t]&&h(y,i[t]);if(o.indexOf(t)>=0){var e=t.reference;return h(y,e)}return i.indexOf(t)>=0?h(y,t):void 0}},y.showNext=function(){var t=i[0];if(!r)return y.show(0);var e=i.indexOf(r);y.show(i[e+1]||t)},y.showPrevious=function(){var t=i[i.length-1];if(!r)return y.show(t);var e=i.indexOf(r),n=i[e-1]||t;y.show(n)};var x=y.setProps;return y.setProps=function(t){s=t.overrides||s,x(t)},y.setInstances=function(t){v(!0),u.forEach((function(t){return t()})),o=t,v(!1),d(),l(),u=g(y),y.setProps({triggerTarget:a})},u=g(y),y},F.delegate=function(t,e){var n=[],o=[],i=!1,a=e.target,s=p(e,["target"]),u=Object.assign({},s,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},s,{showOnCreate:!0}),l=F(t,u);function d(t){if(t.target&&!i){var n=t.target.closest(a);if(n){var r=n.getAttribute("data-tippy-trigger")||e.trigger||R.trigger;if(!n._tippy&&!("touchstart"===t.type&&"boolean"==typeof f.touch||"touchstart"!==t.type&&r.indexOf(X[t.type])<0)){var s=F(n,f);s&&(o=o.concat(s))}}}}function v(t,e,r,o){void 0===o&&(o=!1),t.addEventListener(e,r,o),n.push({node:t,eventType:e,handler:r,options:o})}return c(l).forEach((function(t){var e=t.destroy,a=t.enable,s=t.disable;t.destroy=function(t){void 0===t&&(t=!0),t&&o.forEach((function(t){t.destroy()})),o=[],n.forEach((function(t){var e=t.node,n=t.eventType,r=t.handler,o=t.options;e.removeEventListener(n,r,o)})),n=[],e()},t.enable=function(){a(),o.forEach((function(t){return t.enable()})),i=!1},t.disable=function(){s(),o.forEach((function(t){return t.disable()})),i=!0},function(t){var e=t.reference;v(e,"touchstart",d,r),v(e,"mouseover",d),v(e,"focusin",d),v(e,"click",d)}(t)})),l},F.hideAll=function(t){var e=void 0===t?{}:t,n=e.exclude,r=e.duration;_.forEach((function(t){var e=!1;if(n&&(e=b(n)?t.reference===n:t.popper===n.popper),!e){var o=t.props.duration;t.setProps({duration:r}),t.hide(),t.state.isDestroyed||t.setProps({duration:o})}}))},F.roundArrow='',F})); +//# sourceMappingURL=tippy-bundle.umd.min.js.map diff --git a/Presentation/HushianWebApp/wwwroot/background.jpg b/Presentation/HushianWebApp/wwwroot/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92f47340e5874b88d0db86217523f433ab33412e GIT binary patch literal 29077 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 .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder { + color: var(--bs-secondary-color); + text-align: end; +} + +.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder { + text-align: start; +} + +.loader { + --r1: 154%; + --r2: 68.5%; + width: 60px; + aspect-ratio: 1; + border-radius: 50%; + background: radial-gradient(var(--r1) var(--r2) at top,#0000 79.5%,#269af2 80%), radial-gradient(var(--r1) var(--r2) at bottom,#269af2 79.5%,#0000 80%), radial-gradient(var(--r1) var(--r2) at top,#0000 79.5%,#269af2 80%), #ccc; + background-size: 50.5% 220%; + background-position: -100% 0%,0% 0%,100% 0%; + background-repeat: no-repeat; + animation: l9 2s infinite linear; + position: relative; + display: block; + margin: 20vh auto 1rem auto; +} + +@keyframes l9 { + 33% { + background-position: 0% 33%,100% 33%,200% 33% + } + + 66% { + background-position: -100% 66%,0% 66%,100% 66% + } + + 100% { + background-position: 0% 100%,100% 100%,200% 100% + } +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/defprofile.jpg b/Presentation/HushianWebApp/wwwroot/defprofile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d7f3abee5533342d3abcf09be98ee5a390a22c5 GIT binary patch literal 976 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�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 literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 b/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2d7b215136a471c9a1644966be6e5af672806eea GIT binary patch literal 18536 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�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 literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 b/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a4962e9b425730ba136b544273ff2bf03c0503ea GIT binary patch literal 9852 zcmV-?CWF~`Pew8T0RR910496@5&!@I09srC045j!0RR9100000000000000000000 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 ip5Q3{p1bO#^| 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�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 G0002&1Enzl literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 b/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..20c87e676ea8cca21679bc8886fd9566172771de GIT binary patch literal 12456 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 literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 b/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cfd043dbaaefbe81712f30912f9403405061703d GIT binary patch literal 5796 zcmV;V7F+3ePew8T0RR9102ZVG5&!@I05~`R02V_40RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 b/Presentation/HushianWebApp/wwwroot/fonts/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..47ce460fa9a827bd143a2cc1d70f6dd4b97352cf GIT binary patch literal 1496 zcmV;}1t1bO#^|f=L^k2vJm! zG68-Z0c>{d3teP$ehh!!R+zFi z-JPU2hiMtv&=% zoF#>G^mfu~?)EXT^#44%xYAf+PnzyRmrfXD`z+1P>BAPo{4DhHA0USWz_LS89mQb? zABjS9#>o$>WHQzW8;R`BAe^NUHzF)3jbtMQNT!1(r-dG4kAs(wv4FO-CDQ4kIzP2~ zoSY#@;vE6a3VVtBUB42^YNV-nntzi@nTPr4(7b z59jed?NA~bd7Y}>KJF3~Ly^xHX1dH0Z&7@&IhOvo9qFePuBDm#m=uoj{)JKSiP}pj z`Dx3gYwO=W+Q&7)OucTu? zKY$Z%c(~@@)6o3`{dGU3wq;7;q*k#MzDcI?Ydq)Gt=;QT+yA6}9BR$ZXuHSB4+E3Y0P{Ga%dcgsuHfaSoh{j~ScdZM zypF1!y;U|kWMy(gm+@FCZgEay8QRxcdXoKpt1l4nBG$_Ad7G+>>zh~*0QK9dIvv2P zXV)#BJhk%JZwCnIR7FaRc^V4>;^gT2r~_Ye``*8aR+RuBe^8TvZ&2cwU+&*Km9eY? zP>CQ=T=q{!b?`5%f030DBK)f4PUk6yfBJ#!T300m)?Uu1{~Q6Ka*yR`d;#=`;uL{^ z(gnCeTHy@)Y)8=Xq9f{gcro!Urp=L=VRGcwqVqkp0xnW7Ehe5Q-t?VF`AqT^D#akN zYL%c=DpQD2tq!9OC0c|aAz~#7v7954Q6g3WRz22oi5MjsRLWN?1*2A-GOTJu)J6wR z+;}0(c#a#N&G~o`mPw0RWlEH)XK{rS!mwB+*E0wasudy;0#wQ#A+e|G5cwvurXSUa zQG~<=noFRFxVG*rtu4Yq6_*A)MA|cs3_Z6_uNe?6IugRY$nmA-hPPu{xcj0>lEfhA z`O8U~6XU&f70FyTPOR#aye2!;(TWr^S7&+7C1qzxyoV*J=n&ThOG&FSFUr+s-0nLs z_AKcfZ0ApggUE9pgI7>)Xd2M literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.eot b/Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..1359456073c9ba1038c848bbc3f8fafd1653ec93 GIT binary patch literal 100434 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

      DZYj=e^4j&0;9 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Presentation/HushianWebApp/wwwroot/manifest.webmanifest b/Presentation/HushianWebApp/wwwroot/manifest.webmanifest new file mode 100644 index 0000000..10ac6d5 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/manifest.webmanifest @@ -0,0 +1,22 @@ +{ + "name": "HushianWebApp", + "short_name": "HushianWebApp", + "id": "./", + "start_url": "./", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#03173d", + "prefer_related_applications": false, + "icons": [ + { + "src": "icon-512.png", + "type": "image/png", + "sizes": "512x512" + }, + { + "src": "icon-192.png", + "type": "image/png", + "sizes": "192x192" + } + ] +} diff --git a/Presentation/HushianWebApp/wwwroot/sample-data/weather.json b/Presentation/HushianWebApp/wwwroot/sample-data/weather.json new file mode 100644 index 0000000..b745973 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/sample-data/weather.json @@ -0,0 +1,27 @@ +[ + { + "date": "2022-01-06", + "temperatureC": 1, + "summary": "Freezing" + }, + { + "date": "2022-01-07", + "temperatureC": 14, + "summary": "Bracing" + }, + { + "date": "2022-01-08", + "temperatureC": -13, + "summary": "Freezing" + }, + { + "date": "2022-01-09", + "temperatureC": -16, + "summary": "Balmy" + }, + { + "date": "2022-01-10", + "temperatureC": -2, + "summary": "Chilly" + } +] diff --git a/Presentation/HushianWebApp/wwwroot/scroll-visibility.js b/Presentation/HushianWebApp/wwwroot/scroll-visibility.js new file mode 100644 index 0000000..63156b8 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/scroll-visibility.js @@ -0,0 +1,16 @@ +window.observeVisibility = (dotNetRef) => { + const elements = document.querySelectorAll(".chat-bubble[data-id]"); + const observer = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + const id = entry.target.getAttribute("data-id"); + dotNetRef.invokeMethodAsync("MarkAsRead", parseInt(id)); + observer.unobserve(entry.target); // دیگه دوباره نخونه + } + }); + }, { + threshold: 0.6 // 60٪ از پیام دیده بشه + }); + + elements.forEach(el => observer.observe(el)); +}; diff --git a/Presentation/HushianWebApp/wwwroot/service-worker.js b/Presentation/HushianWebApp/wwwroot/service-worker.js new file mode 100644 index 0000000..fe614da --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/service-worker.js @@ -0,0 +1,4 @@ +// In development, always fetch from the network and do not enable offline support. +// This is because caching would make development more difficult (changes would not +// be reflected on the first load after each change). +self.addEventListener('fetch', () => { }); diff --git a/Presentation/HushianWebApp/wwwroot/service-worker.published.js b/Presentation/HushianWebApp/wwwroot/service-worker.published.js new file mode 100644 index 0000000..1f7f543 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/service-worker.published.js @@ -0,0 +1,55 @@ +// Caution! Be sure you understand the caveats before publishing an application with +// offline support. See https://aka.ms/blazor-offline-considerations + +self.importScripts('./service-worker-assets.js'); +self.addEventListener('install', event => event.waitUntil(onInstall(event))); +self.addEventListener('activate', event => event.waitUntil(onActivate(event))); +self.addEventListener('fetch', event => event.respondWith(onFetch(event))); + +const cacheNamePrefix = 'offline-cache-'; +const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`; +const offlineAssetsInclude = [ /\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/, /\.blat$/, /\.dat$/ ]; +const offlineAssetsExclude = [ /^service-worker\.js$/ ]; + +// Replace with your base path if you are hosting on a subfolder. Ensure there is a trailing '/'. +const base = "/"; +const baseUrl = new URL(base, self.origin); +const manifestUrlList = self.assetsManifest.assets.map(asset => new URL(asset.url, baseUrl).href); + +async function onInstall(event) { + console.info('Service worker: Install'); + + // Fetch and cache all matching items from the assets manifest + const assetsRequests = self.assetsManifest.assets + .filter(asset => offlineAssetsInclude.some(pattern => pattern.test(asset.url))) + .filter(asset => !offlineAssetsExclude.some(pattern => pattern.test(asset.url))) + .map(asset => new Request(asset.url, { integrity: asset.hash, cache: 'no-cache' })); + await caches.open(cacheName).then(cache => cache.addAll(assetsRequests)); +} + +async function onActivate(event) { + console.info('Service worker: Activate'); + + // Delete unused caches + const cacheKeys = await caches.keys(); + await Promise.all(cacheKeys + .filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName) + .map(key => caches.delete(key))); +} + +async function onFetch(event) { + let cachedResponse = null; + if (event.request.method === 'GET') { + // For all navigation requests, try to serve index.html from cache, + // unless that request is for an offline resource. + // If you need some URLs to be server-rendered, edit the following check to exclude those URLs + const shouldServeIndexHtml = event.request.mode === 'navigate' + && !manifestUrlList.some(url => url === event.request.url); + + const request = shouldServeIndexHtml ? 'index.html' : event.request; + const cache = await caches.open(cacheName); + cachedResponse = await cache.match(request); + } + + return cachedResponse || fetch(event.request); +}

      |LQ_Dw;>WOEtJmq1jRQFG?UrxRUVsIcJztU;< zB41#uAnX?Y^j?)QlX4K-Be822?pU?@j^~tzS@$1*RL`|(%gWm_b6-hKp$L}_HV3}n z#Q1Ou0S9N;N7=PC&)u$uy~VoMEa}Wn9OSk>CD#` zC0NNu*3>k2a;hCdHQ;-qLlO0%6MCU*SPn!xk>V^;t~A@zQj+N!@^#5<$p#h3quxP* ze@o~1#pH}*zAm?Tz|Fy89=R{|C%B)`dFXt5$gR7gabA4c^ZJVywy(P5%|$L( za7Oyv1Ar!-K72z(c|oJdI?QSuY+XBL{Db}UCv<(wSI1F*L}Zl_WP|+a|KJ;CgwJYx zqtWF=LII6kgYzZ(2y$}Z_aA@v`L2yQXYO6PYRCE&JLFHlQKw&e=A-v7Y-MQ|oNEuL z-_`wP_RRUS8JD2=emX8UA%+Tb5CE10fg6TE&ak3O&~afANi;?W5u5HvqLXAzLdF4Y zh4OGQf@O$Cj=?{oVngK)Gm8eFtQvk|NbOU@WmB^C04rsqE&;VN_Jz2Zgc$V`wWGRn zFXkRX05DdZ(EA{!ATR(}3JTvdbQtg~*d9evxA4>kMxc^H+X5;VSMv3m?NeXR%YAL? z_BCI1XLpP9uMB+3b3=WZxkTlufmb~Ds&}C}+Hd+d+K)m*&`|~j!v3Lv9frv@jGwfe zXqYdOL`ln`Aja+M{uLU2EjRCVH2k#^rQYSa7cGl$t59F@Tt~~|eAE_&N!T-e6+39K zUC4H4l3viDDN!iqmb|rKP=T{4wmsL0Mq1)yE%r#e(~R2~0*ja7w!ofe%aF8LWX(*s zD?^+#Y{%H;TYBgN4a!0It;%B5@Geh1&4%XnYhOD%sV+*1=_~CWeSF5E4_E(Fop?Uy z(dUom=#9JC^x`pjJWQR?PvM`8O_;pTPk2Z)_aToYyLcLj~bR-W&%et;FJ+QuF z9jGDdZf1W0R^VaKROkh;XM0f^3y2Km7_uEJpFOTB#@qDLmTUdcq|z#(Q(mh{Q&NZT+jZl z>nbFWJqbbcxP}stDk=Cj_N4G+Zld7!B+ZZ+&sAjbiSgc&u*NERuO*~eOwqlQQ?g^2 zE611?7Q@TKc?>DgqvP~PJ9o1snXP^MYu-?XkxneQR14qz)}drKMVv}|u(MuM$K94K~d zda!kwrU!jxNWZUpo5m@GHASP0SHCZwZi@DmQU68u1sW$ZVt?c<<45EBh>D=kTz|h$ zF;P2B-+6``n)UaXFRs7lWi}yWa42u*xu$#2&Qaf-Hr=B=tLfU!F=R`?*xzi@UwgKt z3_E@8Szj5CPTYbrN#dX$XGn{~4tw&wC5>bmX*z?FWDfG=x9;DQ^20P=!Upk!mj1!6 z^nunc>COD}B>Oub<`;R1`e~Keq}~vNq9eB(fsY+H^JsnPd@AY6DC_}ZvN_FDM)}SN?RVXNW0G)|+g=BV z56K^*jEH^mVM`f(ux?UVrU(opbx8MxEiJLr>JWY;H9ALn>N+~>LX^4yrJmBBhf)i8 zDeO5Fx>|7vG!uwZ34y~KUE^46?j&AIt6r7jr2ByJ`})szJ-PVN%+x*V=cl-(iVSzK zW{K@O&-rTV1@({R+Rax?cOuMIcs!@SPE9||cC#0o$S(D?ZyuU7yOacZNl>Opr29@4 z@`VGvk8Q*r2oDAfh8+yJf@Ev(G6GN&Vl3N!4Rj3tHFjD(s*r~%xBvyxK3LOQq7U#a z1H}L*KprO8bks5>_U6Svt`UdXri8m)^N(O#IXqoUeL?_9?&wH%W)VB#B37bV-hpC9 zlS8-`F^y?TR??F}(WF3m#=Wp0n`AEUHrnMb9<^gchO=h{8_EX1cdXl{Tj)l=S(_hK*g=EsVb0-4Kzom!R$gn~S6nBLm?Qkg_bb(* zyW(?UY18Yi>omRIy3YUdOCY}s`Ct6bnW*Z~PK)1#-q#NI%@~d{FAB$-uC$cFJ$a>d z8TloYd8=u>=aZH)xQIS!Q)VN^*Idhv;ghub=Yjf7I8fsUO=BW&OW( z_6aO;>4uqy?)2^*vQtPNzJA|$A~0VxCw%XCB7Adt%5+BtH=xnE5xEB)&P;-x+?lK(<4`Av zt}am5#)%fmk}|e1AvwiXTw&e%>q=x{eE1&S9JNyYe9raD_oS2#ZeLdF%4}ahsx*YX zkiQ}~)7?3>q9iKJS&)!rIuVu{UO0VtZqMS%f{}AN_L(*=THE*NrvlDL_?(SynrG6n zK;L+q<~5H+5Y7L?&YA-|YaMI!+F4tjErB&zrJtk+b>jt>(1r8t z3$DM$+(26Xld&Q#CB>HLAacVMZ9bbG+4VFj#v8>*RE7t=SiDBFW-S+eFD(oXDXZ@9 z%o~tn(;r-;UWm2~H->-sUbK0vUzlHHpNu3)ssphT6KzGofx7X|eo2GxcDo~1tYt~A znJ#igRQ%wCm}F2l7-k+&@}(9_OV1c!m8DsjwKB zR~v=j-R3|=^cS*?qF+#Yq!?;)AU~>+(Dnv`4ii^L=y(&r_5?D2z2H9~lIevYKYb7a z&HW54IK(d)UX4*uh=p1j!kG~o1+x(v1+yTV<$4HRA*R|0W->*ZU?%JTe`*euP$M+N zbo+*7**r`zo5_F4OgZ9mSFg^^UA=Mj#`SBF)bF0V7R{eKYsQ3z`muGRhYlV%psH{0 z@*X9{MY#pJ1sOIQ{!fh714WE91eSatNz2^PfMO>p{#T2*f(H!YNqccjT}jyEMi-^1 zL9no13wzKED{bCeNx=lC5+J;5&I?vzbS>l+B=V+ATJSNyXWG;>Q#hxK#Z0U0n6ZNO ze4>$+-Pb<9a#~E?gmQO)YB`{J5^4L8$EeaZJhG%T=nzq+tknI$`6-h zWOnP8nNe~*!}m^Ee&e7trH|7#aMY-QHfQgtvOH9o(mUBPXw;}dj^v7|<-U?Fb(nKL zi{H76#m!gx<0*AhCf9nOeX6lhJ+p%MsCLSfx>)MxeXR84N!Ihe%vJrWtNRVgDDgGO z|IM$M7&>45=%I(yPZorZ@6~I(VF62g=pkmCA2#v&(pw5I?mu!QBDsYipj?`py0k}0x2|pq;7v<$*i0s)$rx@74-3=Brzuv0KQmbU zk?oKEWs=p&@@$IB7R8vA8JM-Tamk^#FoUc0{$LR~)*QevTg1djrO!&b5VKW?u0``=j^dzqD}r&U*h&oHIBcJ7qF+j(=X&p@T-{zKgTcXfvP z#@3G1h}NKblN#3=RQ}kacKPVN_mHnFQ$58>*judJ^Salp_07(mEKhxLC-a)O)Kwq7 zr+$bSRauzUGz|>C5mA;A&_yK*rS1|#2sD|{fkXaC@aBT1RM5de0sgqJnOW=weXTDT zatN0|=yvLBHk;$jagk^ZkaF0^s`X=a>;sLB53n5{KchxJP+0f?`|=q! z^~QrS;=oleys*l1G)BBRV8B2KHtU45;x#FOYa$8R8XP7#TsYQ3!fG9FL!f%lKl*f} zB(M--SZn*>x&f;O4q7>2z{)`bR}I)cthjg>z1a87-{JS->gwX+p+Ezm`_5}`0k89p z?=#s?@EI^5+V5n;z~{@T!0jt?CnXb{IVAE_0u*l-jNP6X1MRcaN_FbmlzQs58O3#)bzxTwyI9u$K>@Glip)d zXG`%NJ(fM&C5g;G&esR_iBxLNF6V?^smO*C-g<37HT@pvl5wY!}A|sq;ryZ9q1Ry`3Rfwh> zVmB1-P6_?iz}h&;B}0Q~LE8Dq_4icW8EKw1?5=GMN9v0byZ4B>BdT|gyu!Ut9o=7| zluetaRF!XIRnK2lpSZh}avH-HDy>x7L;sQK zPEUZS%_^*BlQAS%kDT=Q-6yGG5g@8DAudL+F&ileyc%;$HdrMxV~gZ2+AN&#*%u>= z$9GwILXt8{dSqoT`}*nbJNi5|?6Jpcj?M2mJ;&wfBi~s*Ij`fSP%$>e5xKYPRrSM% zOP^-(L!(bj8TahMw508pBUC|dhrhs+6DXrw9)1>hI&w3DSa!2Kv(cz^AbznQe?Zh@*ZkqueefP zEhUDPvT;|0idWtA-8yll^0M~bQeoV<+kc0>6Rb{>_Ry&W?e)dPfq#V{K;8)6u-175ZEo0%hEQv?+=0#0nZPY+`h2o;YB`yiMMv07x%n() z;z;RqtQLh@WlHQM|0#Z2}4P8V%5o!^8AD_Jk=8WwW?kC*b@1Ao@O^ z6{Ag2u&eKgV})yI-5?kVABoCQBWu#-s)M-Pp51zs-FJM7oNkX`c zeISIhGkkyGdnkH*-#fMM>34}PE+8f2(n%LDV@+@Ke0!_sYsTRI`T2lI#$VzjfCRN~ zk4Se!$TfYdAELYf?!kszArE*DRl-WQ$(aQ9&cSqgu|i?`FeHfd=6p>7r=bV|$^_gJ z;1P6`eL66ZWCOVeR#c}GYsnhSA@kdVKYZN|Bn< zk%AQCj>NFX#KD;RN_TNv;F;Z0XZ? z^F0R-EZN$(V)K&2p5O!bEIqJ)>5{{2!g%rG_>)6>l?@(J-g6kcG_;)Fl?}PkZD_Ba zLk9OM8_MeMIW&L%!IeGlIW%wHftAw2dk!DIuk7x_2UgyU=_b$YcGK0je$1d=eaDU& z*sE{-xc+!Ic7XUzWqsYC^2%}b1F+r=vQ+@UH|~RAzRvf_M$yJU`|)+1ENm4Mq$jXC z&`C=C&ckZAp|K_d?Jj>fXCRq6^lIX2^$K&Y7L%}JmzsFsFku*M5kq)8uz3M`i!M*_ zQ`8c-u&;;jOn?L)CIn^s`n5e4K6Y4^fx{$45Yte7StVwSw71*cX z$FUFfh{>RRSSU=DCMt=z8@zFyE-c7Cn#rj&BfQK4#M%6=oCSa9#e0Sg4t8b@E&}o5 z;5$%`Fhv-XL6AV4$j|eC<2@rl&j{Bb!h1GB2uvW5GVB3@y}cgSYXg%HORJ}*A6AYm zykC7$4P;-Qnc{gJj3($TJo#nHX-K#XBek9+U@k=LO@66i>M11!p{h{YaY^FIfE_3g z_hWc=BLjFt>+(PlZk|<)Qlm0q1YS>oGY(EJiM)twJWItpSeNFMhb&<8)#jv!E%<>c z!YZv-*@Az7KEPkUIFRWP9)#@g4bTKbNec)61|cB8uNK*1d+@mv$ppmH`{es7;T{R_ z_Y0VCyULhu5D^}4O*I)IfSXg2oko8_1FtDf( z1*>!+#F0#V7UaMo|Emhe=nEu_zQh!m%54y&U@MMkM_#pv*lBfxgwwnL@Hc`dnCCYl z<|Gdfh9gxpT!& z#!E-HY}%qmvVYPGZ$;U2QLKji15MxQB+L!GxrLqXKp3K+JOkL6 zFE@9-;HL}J`2{Wp?Uh*oa?b?@a`+@VVkCTncmpIJ+nZmwVjZ>(C)x$g6+toJOt2U` zJW#I-#C57i%>X^^IB%2qnHx%|HY1!CV{%d=rV8-W2H?lr!Z-!@q9JQo5(XO_XKi%l zLIA=fVTvI8kV4L;sDMbe<+Ae9JMLT?{?)~o&#?Kgd>_8{>?=3w&aYf~@6t=skyfC| zr=Au)my~1YpJY1qy1HTY<}GVPY#Y$2gH7N0g(=5Cr#f;vHB26aAM~`J6v|ggyU7Wk zi7ecA1;Popp%YG0UX}>&$cmf{fE0S~x-5%1BuG?*2$La@+~=h6{(7Xykd+~!0Jj7H zQn)b;5mK_QhVC(rOO;2z2yEG(YHCHj^&47OlnJUT-IbqT;3_~Q2tRxOWyeMG9fyz# z>^Ow_+W?co|HDbdu9I?rtcodhVb{^iX_H*Gc;=wLSWYIE@W3}iFVx?AFy*bE#+@Gg z#n96Y-@Tf$Z%O_6;Xe&Nsg_N*ofc691}y^f>7!YSh={qu`wp2g>ym>)fH( zNFwamIz4QS07cM9Tn0HF5eJ8zgw)Lbf}g+N7=U?+WU}JW?%1bDWL=9LTS}0Td0GWz ze#L?;ZmtO3kWK_oq7xK<9RhFs{rvog2>$+lHPj+zIwa9*v{5=6n<0$nz6NOq04&so z*o=QpYD1J;K1%fZ#>v~|w~^vWsFB~^eDmqsCc3%t0|`60YmrkRM)@mt-U_!d5D;0f z7`x2R-8r1QDC__m=+%xV5L4KU71bdW(UO6B=uUu&3oC#a>@PAHHX8sf!UBYlfCeEf zj7L@TG^;%EXgL&<7GVV5;m!P9dpy+@Y zxAM!{NM{SQ$vYQ$oJK|1EOgFvR_4Tf(5z%LD^h5){pVlAA2I6qxB1^aFNx26F-cv; zy33v^;seE=!)(}5&keEHz+LJ=%G4=kZ63Axm!;D;XQywz#!lsq+B}SXF&NW>y^)IJ z@jK=xnnh_@E@6fSP(eF@hx0c<0RWSLJ+~9Khy#O0M41FwV3?q4u(RoY!)im2VqSds zW*9jezQd0oL`{Qdr0Eq98q0*>~7FAM(#9MkA1E70qK2?ZKU%VNWIp~vN6qwJZ^ z99WO7E^Cq#e@U-==Qg~YvBh}p1NQxAo*&pBi*`hKp3V?WS=ZFBGNql0vFb0oPBeP{ z8YE6w#3qf{^^D&xn)igJALMAvdz>)Y9pk;(Lqmdt0)v2N43-HT1Y-4|($h|76ls7- z;{j>|;!iwl9oCQI7{f#^v1KR#H5zVbFO)HU7Lm`!9fV?WLR?g|mNYVg!h?aqr_Xcc z;RU+miqJ>kWynX8a5-9Br~dYMzsbMg&-okp^UTYVH1=)v;v+_}dfJI;Tk&GU)TUV{ zW^KjG^AW)k_>)M8F~LVg{#Gu4KSLL{e?*W!j$iXh3kC~Ip!et>KSf4RWeCXlmPBu; zTPb^QLJp&qy<@>T31< zQ!jnYlmt(%_=;8i^}QEgfMfQQ#FsGxbng|{AEIu~MVz6sRIgI0A6U*&A%-*EBbbcA4>xtvA ziZ|8c&%S{_V$?UxsQ&S9bsy^s1h?w#dk?Nvf!V2k&rG{k>=dv3aOv__Yz0f&uI%_#r*tztSN9vZo$}<1uv#94v)^CT((#(#tPEz zCGw?uTx}iyR1bzwY&>!sZd>0^ulF0~t?Q?U2yGUGoDS)!4tsnYy4C{Et0^FE56uf< zI)SSwZiOF=P$0*N2e&L-uxHo8`8)0}@7A?X->yX!EbIW&9R%{g;ro4(vI>jk#R+oU z)O80}^jvae{j`EUjmGASiQb`M^qDvt<0US1uHV@lD@K6QKh{n7A<79TW-r zub42{X4$YEwxxo3ged^mp$KPI4Ma>kcL{&~6|2(U&M3RV#L@H==wNinCg3uV zoshCtiGX zqvL|Qc2eE8)#8{zzbHO?Z> zD}!Z(Z0XPZ{5WzrztwxRWP*cW@2BYe0G5jwR}n+MO+_6DJ~#;CXp)@(-Tg3*?U(T|QPo3GZ>+HUo!2?IKnn43=)N`+T z9zSzQ9C(WDSR)o~f99!uBX^#CYL8MkY2xVm+DVhf+}JKpy|DqQyw}Pzh{`ocn`O!; z8U*V?^(jAy$Z$ON4jgG#C?7KfGZ7h?b)b@{;r&S3yJ-3aWdu=a;DrRFqe3A{wdD@d zZf0Zw@uzD5%r5mFDL@R+^Yi0vl|EXPyQ+Hnx^>g5)xeFzH?bv(Rh`3DsB^_A6#xjH zuMj7QSivf^xCMOJM&!AP0D8(KcW}E%_)|t0a1fg}TpX@S>^HH2#72HR!G40y)cR<> z74~^7t>${kOJcCT%!7DCz^9=WGtv&mSYi^xlaO%$p|oJKxK$fgaCi|z4FIPE7lWR{ zYDkjJr=D8>%f0J)peT}h%vK9&D_b@#FpszPU7MV-oQ|T!@U4Uiw;tq>Tig&FlfLZcA(o6YPmGsj;c%@Q@(D z-?U@xDCr`D$Vc9$0P}~U2GY<13U-OV0vs+U8bYFF4e&ObbEcm-j%|55TyPw&vg?z}uwmh{v z?C=|Zd{7ixJ(1>#39uaCZU(ZIkf+^1bSG=z0Q{yg;8R=Qb7*i-1REI{Xf4RIXf?bf z7DyF0373EghnmvlFRgR@OKoXI>4t)U}TytV5sISmE8$+9yv_3@|-YnhY zP<^x-50#>ah8w);lyL{<`7?Ouz%V|^^OUsg#x}9m^N<{M^CFZ0T|K?FtQB7s-(I)H z(~TaX*_ued_kXfALEu4bABf@>^xw~ywa`S}!Z^^eRw=HdX@(*8iMZu)1Y3Ky@>%lb ze`b(zf!UnJjy&zTy872MFfqo+o38g0XKzD$Xrm5#>`OS;G4NmLER1jm=H)u+uTKqycNOJ*zRRYJ@>2NyiPD-~Mhol3vZM6v5 z7VJI5L+4}*Ud?kc%cG61i*Rt78_FUyOiTTxJ3n5r{)c{5->qBm(c(KlzHj~aRsH_8 z;dN&Iqu(R<%{-GE7&&u8zvYi8zdf>S*10@?^Iz8WyKlc3y0J-EfBN{zC)Xm7C2}LO zK%Y8!{ET|x=iuWXp4;b49do|+!!v%5ef;#n_|)1LMt^jg=7cpJQ+tbRbd-y6o~`iFOQDllePw;$ird0?a?|H(;v4~DM~KCVO^ekNi~Ak3dcv+7x-94P&Qex(T& z?s7oRG9dyG*;0ZT)Huxw)d28I=)jT(00<7e8Q|uQcpY5qknd&4_llycC8JN3&1Q4p zl}IaN!W!hqGoq{!=wBvF(i0qA%eN%zYTxR|W!=-Qf3GdwDwmIISXS9>Pxrpv?#W_V zOYr3b-TN&Y$LQNFz53%@X<1HzXse80{LGa20r6t@&R^sdinc!1#ZOO(ue9Ma`nW~d zF1;^bhL$7GoeeYxxfiyxP>x#ya1|ukLe9t7kpcu?*I>4BxglE%E;o}Go*YyWTigVF zgNX!ANSf07p6}PxOn!_7J^<^Jy0vER^XkW&*b{8+FNJ4z3r%~NuJF>HCa&}9f-`@& z+$C(BkSNr;g-%-ydN!`S{}w4e$WN$m`aqr_eT^p?IDeRi z7>G`=P%UsfL-e?jS+~xe^7FFVr=~dU3GwZs0mUC0=qH**p=(hlh$8LsLhN$n0*9^~ zn+$n(vCAOGYU$k|w6%PX^22;TBibKHoC^z>;OoI^;%oE9%@WDo-8XEpAu` zYcg_4OmKJ0?a!>iWdQ+Y!8d#2FT9oFy7d?vU+H-xdvHRx=pMs-_=I#=2i zT5d3uhdz~(QW;Yk*=cj((3GB;>WX4_bWV15PPDt2|3x3w*OEtcENwq4wpV(Jqf=xL zts?ZK9||Ygmr54=Ji~zaAk?xJ|#= z%KgHGGVyrdJ!Mnw8c{L)WUKfuo$wi*0mOp|Vxn#w;&u=ZW`fC*b`eDpQ7jn7Tc^cF z!S41IKQs8OpU83Nys=W^RMdc9Z%eFH(|ONCm{SOwZeY{z6i+2iyImQ{B#uTL8kjPJ zUMq=qfGO7!a|MHg!|K)pjOZ*qdGU}x~hIa8xoaa4F8$H*k zU6i>-=MrQ74(HOO4D>x4WsZAxc+2e2%8-^qzeG90{Y|z?SMjXnzA;EwTeXv`11_F; zuNHS99G3|fkK!)8xOn_opJ?qcg||a?8a`jXcC^?sVCU(CZ@hCnT$zIyu}pCwJKj{+ z`69fDzxLH?s-vg#wfoL9QT|9upm}EZ(L6KM*V^{YA>zI!D#P29`S#W_7%L9A?rl6D zztNiGGSAVyWK3c|X>%xaYYNlmrzy-kcEXoK>=x>v438tbDy6o>a-lEH{yDx_E?+zv z>U`f)M={|!C`)T42%h2EbA0h>d>s(~f;!Y5B z7I!nnb1@+?9==#+A)TdBFb|T#w2gfdEpgz8A~dcfjd^3dbP-4c>S_}LRrB)U%nqx^ z#>P&4v|GW~fBQEgp_U*LDuIcqe+q-Dc=-IhI~F$%A3CgB3xygqL_Ou(a|>u3VxqQo zm}3k7Z1c@I#pht0e>8tS)HYs+t<+Yob-WJWUkh|ou?NwvAyga;>p^w*g*1yOSKYE# z=y|*xp7)>2`C@y}j~m*2dw$mi!DbyNAdVfmy)oYwGcIRvJ;XAL^;D`BR~KCHQyf+v z=O*DW1NtP}yY`Ng_WA(pv@oEtfT_D$)VVP}=A7#B z!S!7@2)I5x$h$WabxX15D})!7V>p)`e6yk)5k_)5m~P|Be)*!U4YHY{Rpk?tsK$?A;xJe&xd=;a}MPic}I~gl>+Vm zk=r|`xa+`%!39&ZIv3XDz5Gg|-6M+g4}Xvy71ih{&tH%_woA#<$qC;v|3>x6h%C#T zD(1vIW@@ogSZ5FBMieqVpUbnQ7_Nr_vUa;rMBbr`dV%RD0N{@f7Fc~PQqo|t+Re5w zKYd)9%bIV*-A<5<@JhF|?wnn+IXHS0c=}9c@-JSuc)_Zk3w8{09QE~5Jy!f9TV8p0 zpTdkm0~(Jo%OgiuR3BYAPJ5EXi?jKmv{UeQb%fCsdaE`LIb3}70#o%*} zcYpAB5#((M)IO_ey3RslSc6z4zbpuSR=I^Rod{;1?g{z{#$)l^@yZW33CPWKmJnEwe zLKolB?0-Qr8x7b@W<#_w8r8#W8tfu@7=q^~4LV6*0Qe^4MXub%Lh0Z13(<{A9iG## zo~ezh%GkmgsrJlCF6By4q(3{MzS%x+Oz#)RuE{Gm?x-S=5Pm*Npc zE6#&nyiGi!Mz=J7PT_0v=Op@t69YcN=g&!HWJ{Yepj~at;O-=R-r-n7NqaUvKdZEg z2@~_QI)91@`xok9UsM07PU~1RUmZ};wy|c5PzQ!tU!B(RV7@x7TH=Nt^{PP&kAG&mQ6#Uy+*zJ3YRmwg= zh?(oAy3eX5#D`%WI4>mjZ@Q^YBdR2xR=pU(RHh9d_NOwC9_Ojk2;Xc%&lF3x3i0q7R!8AvMm}K9hcnPRTP#~TT4G$OE^UZ!YK+w&|ePpzuj7DYm#bhAL+DpYHy}B zF(u_&WD}MJGfJL7Q0#=$`iPM75J&C8`Zx`_SQe2XA2Zg27Rrew{ zqN~DQJ@gn{@;oh$2bTes@7Pk}HaM+05O|s}$;JM<57brg>v@Xm3P=41Hobso^2hYU zs10^mA>If$3ZMzAs0|5F4KLsg+9;Hsgk|ZdK_@(CdY9-fXz06I`$VV2vC2`jU&U~I z(MMbc%_V^_u9f68s*|J>_sG}r>+@+Vz3r@|b~JuoJiyLFU%|0w`JKi@@~i@jW=#b4 zEWmy8fKp?HKS4s>S?2CNNDX6$%~3x$(m2aJ4~k(;tI+me6Jj*UHHJ5h-#STe!%yTF z%+w1)aMNshG6u&HJ*Z#W8023tEBtrgSPXEi#hkP%jke0A5>Zw<<2f(ppY@L6Y@500 z?5p2A7g|Z03tp1XMWH%X6r0weor|XN)L(XtmQL#rej5v3C5e9XwdUD8jzy;QRzojK@T)Z^eS}0Yp%km>=>t&&T)1BUt-FZt}!12|7 z|8rXy9WRZxy!i)kH|^l#nG78@aslA;PX764?3r@qGTM5j=_}!R-1)sR&wOOhd*=YU zXpYa1I&e2Yn=z=9r~}rphS%S^4q^54GG2^+)Oo1+^Ruln`&;hWTQU1lXE(1i%JZ;j z(=hx6@sDE2ua|v$;8qNO)PbamzVW+PI*#?GyB8d$@9xEHe$IM(reiim-0jn;quPFB zKPXn*$0R49OcT-)p$tiC-dJ?LC!d#}L>b)oR7Qwa|Kct47p)y%o&fY?FZxJ%0|e?j z$TFQFf=kBn5o+-pLXvEz1Uf@jy2QZq5yqNmi#qk}p^0On&Rvl%-0X5!Eym)_CxAA= zKWLx5dY(a28s!)8=~~cNAMfxT6j3d5k6s)k%+UCYwq-c~;vLWJ$_RCYGXOjQo$#>s zY+O)@N)`56e^x1v!LvdCw4EuB@y4uQEKqu_?)zMFszM?wfR`HLP{sQOckCyot z$ICk~w_bioa7&NT+#=5Zv6eEDNiIj388rW5f1#`7)k$cW?=&~`Y~(}G36HcqTi$_Z z4-hwt@3cG{I5zLJv@4EK?r47Y0HLFFlAaBI@nlOG=%u2YpFKb*kgB|8s9>nS4`Nhxq;P=JhB^sVh<6=YrdbCR_5apy`NQO~U8H+gO!MCMmBE>Y4pe#`&pxc}ZLDSv@^?fDzypmkfu1s81ViUV0Gv>Uc(sgnYl@X( zYqcaENlwXSYTl@{tC7!R_DD7$GHB2CHw){FQd38)bd|iYr~Blrw_*-O4TxnA^z?lH zKtp5qQT?hy0y%9#Ka}<8#}OZGk#m%le0&ecTQI(#&_8~M%UitX+nehHb&gWsNzW>! zLT88gBzFSt19UwoP!xJWfy2tFL@mC=(pxhLq{jixjW;O>rQ6U>nONsP|Jx_ae|^W1 zvbRh0fKq2nmm#_L{PaZ1rp_$z(BLzp3tp)#X-q(4SOfli=?^^rQQv1NwRPSQpDq{> zT|93HjgxS_#EYo&81;xg2Ly|w5f{_VU0jd{L>;)`rSm)@I*IZkLXB6C0gzLPUI$+p zy4#Qmzy(Z|jOJ`2g{;sYy59eLHW6T5Sa2hHwZM=>{trn-Dk@hhNG=leXk1L)z0pZC z1|R*uBo}!jacoKWZ%;IqmY0_zy$G!n=!$Y$d|o@RM!4@{p;F@G2vQSkrNbCmEi9sZ zt(ai5Mw;POABrR}=`5X+rZ_nEv<8Vt`B13){LpHkuUJfPm;kM-eD})qha+Q<3kBUh za*7nqLpsZcnIDAetAe6559oL*BMeDb24c01K zD0Fv>3@2~_R*~tjgUs~O>zE(39i%OUbx>2pr#Rzc+C^E=`QX3+KOviC(;`vt|2+LR zBs}?VWBAj|A9=}r`=PX*aB=l*2jitPJkJaE;^V&00l}^FzA)(I>CEA-_TlF7wbROo zHIy5MUB6u!-I_LKNT=SW9exgwKL*b}hTouP#5pKMKA9|7ZM(X=q$Gzz`>JF5_(*I7 z+^aB4K`ToDcCsSZ11y3(lf1+zyMrsQL#OOcDUMugveO@6FI*GvODBU=a=zmY&=;6x zTjiGV>E@er%#f14Fxkxpv%WKq)MnTsM-PmPop&g&uX?C$o*7MTFLw1NXd(SQPcu`q ze?rlmOuc_&c3N6?>vS`~^@28^W%-iMh;$Bg;TUr}T$;e-jDlBNBz!Iq?IuYyVg-J2 z6M)!Co}b=ZD>f!EA;unSx7u^9lt0HIw91%6gCkTe@BUJn^XB}U4PliS4kgPu_i;x4 zeRGnTb6K@cd>Bq(4|qrLme>t_SF7ouHr7vSKP4mlw`G}HZ?(Qsz8@!62pNwYOfT5s zd#{f)VtsgT`TF?jkSY%=gP1FR2vU+W(v!1NvaB{Njg>Er*5g|jC4nyuF5cVqekk=G z@HvKtfpKy34)VoNH;$ljIG6u<7^C-3ESl|Gg0(c7iJ6mIjYhk3k-tds$NoFsy!T66 z=l>yNwfDX;`}j#(FRcvFZGgpw+wpc~&@SCu-ZCI(ZQCI}n(_$Y*(dND_C7veha3}& zxHV9ga03EUD2*Mqy#h;wf^9F$mOg$+KM2z3V_@Rr?1^zn@kzFD_%Ul!>!awv$3d>o z7G*bwJ!;+#N>KQ@xY(t;vMbeJ_jxXVWK1#~8gqHh^dq(HJ=J33q#?6zEPp<Q+jVjMdvm588tv(zhV3>b84nHd?ocsu;o{Nz$0PkwY(b2id1JJ% zJIKFBbgAtByE&ArF^BO>cVG^$?Nh_{7}3r8_hwH!GCG6ikSCzR9Ofk_=e5is`ra~! znmpy*2Pd^XsO0*&+H1!F*X*F=38Tq9`GmWnj}tp&VXtP0?4`21`!BmRzI@BweMhYB zHT=#0r?)QwjH<}iuBv-G3E9ZXmJmAW>>F7-3lNg-bh8RsSdy@%vj;*Fl0XO`BBCN9 zDx#v|jtc5H9f*RC`!3@?&Wti{<2dR#45QAthtB`i(n$x=dGG!I`#W5!>ejiZPMzAT zPMy;?efrg|)BE=S`omW$?^}{q@xt2sTwmV+-P}=*=J@xtr(WU*K48WLb{q+99n1 z?GEb(e!nWr8x=Mj>o?>VJ800uy^RB6nCC4}jz_1{L&B<+<+|p=h9cX1KfiE#{b^U-3#~LM*-Bq;cCOjDx2mvi+N_QeuQda6 zZ3DSC@i`^xv3?o*0(&cuVs8cK8amGRf`2HMeU`9$g))0k^;sx0gN2tf9nu$~KMDr9 za*n)kq|ee08O#Fa9^DF2#kK2{;q%-)cyvTP&bVBHwnZ0C~o@-X}ix5At$1r z=tS8y^Tvp(eVU_ArI)Uh(Xx$qaW+=7(T9I}Zy`Z-bYZ zuiym1hs#WkKaat94AC6eAmG)A5=%*LPIgv&+=TF;zyREvC9%}xD`to|KjwQ@Bhwa^ zLPwPG{%6x(6Dt>+qIX{qS+e)-`~F)Nz8u?22CA3MS}?^!q3wS#^Cjl<8e}|hQj2{! zoOB4is6u4`U#vvO2$iT%N67aB&Jsq^*dM9uTh}{}JUmMDglpfW4M+QbB4@(Y?Sl7m zZvt{8B!l>&9i*^<#mo6dx z1a>(k38=#E88pcDCw^gA(oaykHlqG{nZn9zYN8JR>a~Ha`nlROgGDdAB5|=>fD3lF zi(z?-jThPk2r9N%okp8NqlJMem;{qc8h+^R&JkUnxoz9blHS$yaP?Ya)Y=_a+UE?k zwrFn*PHkx&n8W$0Y`KA-=mXKt5H`fZwp%QuH!6x3rcvtcCv7C?UJSF0ZT!mECH#`3 zn1kYyD~?sYMhU&d$58^sZ&Tx^MobD19UCwPlEG+hvAntQs|Id%^O0%9;+u)9rw!p+ zkGXB|crGUpMK%BH@0y&nDKfICH7=p6YQ*@PQyGPOL>PcesJV>C~+^ro_*vDxPRLyn4;8OK-f&aW}JUopHHivAy}Ks|M_= z^Y-pq?Oc7}SBp;1pLKcN`Me94wCHOy0MP~ zwMar-49&k4l(_ew5=_yFQZb!5F2Q5t3>z8g6q~}~VSL{dW*_Q)KvloB!f#c@6w~E5 zPujF^+5Q?9-v7`I`E9dxdf=Lm7N$j?Ia;x7U~^aNv@LW;$)yXoq?Q*%MeuUe#9RV0 zLzv%iz0h|_8HLbD$Ya7XA2ax3g`v%#3>qPe>-iSbAO3b&E3~>)hxw2?U4d3;OqA4a z+OSq=_uV@_VS-j@4~XKCi+R{1p6cmGdhaxg#s9CPruy|`W16GQLQNX*kL!);s~fD0I+ zKQ;=+`V*Kzj>kI=cs?GwjeM-|h%?!bImzJN&>-gGkBx%ict*jH)-(5LZ>#gu z^n7noeFb3j$40>n(<5OpXW&a_;6eRLD^B*qE(#-1KPqPpe0&{gFCZa`OoDxTSQx}^ zVm#xQ2F8WJ0FazD1`+6erU}B561_G$e`e+MYo{-=OpBS*WjX9}x(3FUEuEZGF?nYH zJ(T?AUpJQDHblO3edP>aeCtIT860vwgDZnfyH{*BfG+R=bS03cdCo3ekO+vK66KGP zJ{0pB2E79#VQA5rk3NF~@ioSH^b#JMbhx@HUJfs$_ze)ImXOuQDoUeG!NSzJ$6P@u z`gP|8ihezEs!ct-baiaPmfbOxu2V0$votq4zi81&cA@j148HQv!vo!2on10d`cEY<3qkr>Y zI2|9$ueES(3s;2YvXJ1U;E<$k#Akf`c%S%ffz&tIFWJ{`+fm5UK|S%{VW{7!{!V`T5t*Finr1HYI0l_85PEi$7P@z_oU$9P6>F@8i^jz%n^DhH!D?!^0|68<;;l&Ek zK{5u{U(Zpt{}lqc=8YTwmkGpf;~2hZ%|iDxy7v87DBKGQZ}*@O61GWR^rx-izf#P6 zNIh2rQJnn0A@u(jjow)}%^QPdh=KffnaS0fU|zIu&6?)s`ubI?mMvSlw5)9I+|tsb zqWt{8z&%&&zI@kZJ1@QD;vE-lzi`_HThHIJc~jrU-VHtLI@YwWXncdn&)j`qm%){3gN zD_WAw-#@$VSwrFr9p9~`xz8F-QFF)O@~zEvzop~OETiFPmgBCj?}-1=6&nhtuNeGt zo%ngjbci2)tFCY3%Jr+ZY+UI&%Hrmnx5yY^PrHfEwk=p->*W7IDaa)YR+LvRGp7!| zM5motx9)`NIj<>na?jzzJ+8kT9(?F0+!QH!i&&=0-Z^5h|^Qlk8-0dOkZ7v9dr3f)|!)%H8Z?xNALv3<*vQWn^P505P>O-`sAvLkOGSEfNL^&^le6Z<4YsK;b=>ZB1x0=4v^!}}y=wM`NlRX_dkp5F|tUkx2! ze|hRHKBtiKX)*ehZuv9@T<#Urx#iPhCJ6bo3BP%V{dmT30Tx(fiK~Mxg>Lag(o`J6 z_mRS}9gl4e*b2f?D5f5z=yW4c3AheJzFh!IU)Zfi)#2LDEL{7U@u#tdv+bY9=ER5P zLNR7!3gkHC>NEaq>*xF$(==?BNDZ+G7e-i9rghAY44%Esx^~7`b3{mZQc&@NfQdDE zg}>RCTOI2<6%Z6%loIH>&DNCf?YGR^urM_|s4#W&MWI1r4I$>1-qDzYzfNb80@R4% z`E`MqgJUn^clw90+gAi#pcAzuW07WFemr$+mQ6qb~h z$F*v~F_9C3{i0^umoC7XRqUHWZg~KS2)SdW)&fE?l03*AkH-#Rba)uG4-A0+&kViA z63OY&d5=TB`9sGd|4@#@=-9T#7m zh{whMqqZG8F1`@Y#dtU+Lod3%VR5M9oadu(xYOo%XrvoKEIix9*B9^D4i`A+(21ef zLHWOc!|Nz|imVg}y?C4V?%i8=_0@aPP<*^5vJbp>kHkaI1!W)byXD>quCE$tAkbh9 zjkTG6@u+&r*PLPovfSi_0jHNFG0)kn`m434GnRv1loE-BHsOu?w9ZQ%{;x&kcoG1k!$5UZck#w zUc}H4Ed|U>Lj+*{0KN)b(pX6a$hWH%F}X*~ z5j$FpL{Eu|3<`i@0UT7E!$vLNA(uiY!>24>y7talCr{TsHJBG1VqmuidDSeRIC0I@ zX^UNNc$_oMw1iDhNn98g_FYZQKuuLm6>q~hALMtraFK6(aaa)L7WYO@mg2<8lGqaz z2Mv-67BW8kosX}*wtizCL@7R6aNnHwo*9U3a7?>tmdH29$>p~(ra(sx^lwO{4n&R| zSMlLO9#;voQ1tZk&-M29w1ov993M_^d+Cn@YqkPk;)44mjr=Yd_U>^OCA37qhB_0b zQ?OwQdO6<2=vX7)^o{1ik;4ZgZb>jLbVAFv`0U?oz4rQRH(`VJV37ZjadYgmW)Cdg zn7Mjt=(i6lUOe+ZN=FtBMsN1agvK55*|#_xge(^1 z^IpW*g`JS%oN?g{l32pp6x3Z0i(uib9NJ0vc^h&U6%~~jl@OZ*U8%9gF_3MJcAE$e z3B^1THHe>L4PS*0O{Z>a!TNRAxc1H3+j(<;$i^K}u1{bknA-`yY0lf9{q42!es$H; zt&vrYG_n4Pt*#$kUk zg+J8d5yp8g+DV=3?^0e~+Q~)V`5rzLv(S^OJrA97eaq$Laa-s%^h2Kj=6yHJCmt|d zUfu)dgR^14N63kL+Rh!3<8|B46?^pW8y@F<4P88RKGIUU4A9q|&l8h*Ff1Dd^LL~r z#tk=&O3T9ruRE;~8@wtl+=7Cg-Zk3bNLrBZQ~fH3L0XhDXYYUw^gP(U4y2>X8WWJH`BW1}?iY>@$J<3`Mfp%8*gPwe0#!Gqs@%7CR2HSZh7MDmcq&bsu%5?HEm04 zadGSU(`R2&q|t$Zs7aHi_^>TM7Qm6>xZP3d(${aDfY1L}i!!S0!^3uhL z+#2y;XyT(M#!74B#${D0OX#JOX+Z7c=hxo#ddCwl%pNGG$)$T73s$EVC-aG(qz`=s zF_A33)<^|?(2>W*@SvCpt1W}PLEx4yfL-*gxU7Vd_~>FT_Y|kbKE?ZylPh=OoK*nq z{Sl7ebWy@3mn4>ZmWS)q2+NNTv-oW0(+hvXXQ9{CCr{r&%+yz!5Drd(#WhUvU^S7= zk2a22ALbGI=!oLscaS=lz}ynC4a>}E%# zRZsvZ;lz>@S6~3ejTcYkP!JS_^2DD4a5KhS!yu%6iD8=?5{V5XfkHC%y~kUzZ5FDN ztci2#B`L*;e6$sE|6p}9m#7db0wFKNh$%W^ zqMr|mWwBDR3qL-@K>9PLnbAhr$^U4M`IbJN{fJa;jOc>(%m=-1)nm9#hQ);hzEyX{Sj{)_9fkveC*>234| z!%B?9SW0=q2>mwk%*5}}oeM_Hua0`!nr3n6f5dn$ZB5HDpS8+0=a5P4jl=_H)S8pi z!){S9F#;yxTrj_^S7GoY=(&N+1SoyM#bx8tBrUiXJuDmN`j(#7VGo(!HuMKRA7ZGs za?a#AAL23-9xzkShLQSd^k4D04!O$JhOw2ef@Hqi+;bhSQ^pV@)?S0IKLh5vVHlxN zhVw?8#Y4{)@VtHIcECW5q{MUPc8N!&l_X^T9@D0cqy>4tX$oeU(0?KAAMfY(kKOlW z0dtp_$WW3GJrlRn`yrW)Q~y{|_v1~xg_@kk& zH@W@cwb$MB&cmkS#o4JdV<#=2G?0`N-gCT_#?Y9Wrj6X_Fy^$N(K|xu!Z?5ve#ne^ z?RD$IQ2P>GFUad8d$1dM9NCxPiu?HYa$jOuh`7%i>@6XAy{5+p6^z)IxKJPDc!s9A z!obhreF;~X#3OZT=z9cA+nKuoGqNwi*ZLx@9}gP(L2CkANIxE|0zGOE1hN8EBQQ#~ z;0~D|!=3K@pzQ7P?k#<2{$VC3CfihC{RhT-!tF0X@iK_=%R zy^=hleGPqK-ZYd9p>XkTWDO4izMrh&Y4}gq@X&+K^Y|ff-)Wc{1g(Cn(Z7?|5Z+{n zgRCNScR_Lu+a>&DAM!U?%`&d7dm9qOi7@s7g=pvm(^|n;Jp8q$s`dwWm_p{H-85%q)SX#dw`4?5ii(fA7t1ky>8g&Nr+Rw+Qn9Gv+x}fo zHAci3yPt5q|Jv8zy-FjW+%9NEAEIAxh=WYX{gXNEFChGwAs4hy5c>wxhfeCV3~AuY zL?MmGVTSh_=%h-Xzjh2#j~d3|>>M_za0?dM!fUSOgf|QL14uvw-&oAfnFRBSFk9gT z)#~l-Pkw#r_U-Q+toLVET|~=h3te>SrasqSU7!8)Jg(z_LX1goHH-`LX8rtzouK!a zdtZY_jNaFvk#b)H^r39M4}027bob?>b?j)HM(NmzK?3NDM#KEF9v{TcSrz+N6Z*en3Og0UENhmEE1MKCkBtjJ+Md`DRxm}#BMHj+l8@i$bJc9-RLRU zRb`j2o(>D$Us7t0Z+3n53b)U_>h_mfSzc;Uo-gci=LFq7DUI9Xo_0Z}ZGh*Q)1leW zhL7_)kJV(=8EB&9ZTO7N+XW~R?HqksEWtiSEd9Uj#2}Me`iosytmzlJukzOx^13AZ zo}=h9KBn`}bdB@}pu0=ZE#~FAm3;xaa|rI5WG00{)a;jL=J9dRrJIwK85^A?XXZ>v z(+*$m#cc!6OA6YkdkE}@FEvMtg3f?dfA%x%6#~h^#%|f6*^M zAIW9fuLe)LW!=QMbhYFO<`AD~+ptH&E#=_unC}?qE#vcOR5ra8`c~1yU~fh&qr$>) zvmq*M@`Q0?18@x*)^%toUp>++u{Q&GPOhF*F0gP{+r2SE@57eN`U~S-e{g+2{q67K z#5N60<2y2?5mk-sMX??8itDdgHzvJ$nb@E?bINlshCoJ)_w~pt`gr8kEf0muf7Dxg30^`=G$xh4JQ@d{ly0bg5PIG< zejbe-Cd~xPT3j<+F1@)Dmu#l_&Lz(rzV?w1 z9=UP%*6lR8tZHsb-O=s$2fg#B@TYgyt*I_6sVZySxorF0L4W>p=+pa}x|V??iraTY z`=@?0G4h*YxFp7}8hGoFX5PjvS%Nv-3Xr$ASS7^?5i7o!#))fa46GQ9g9hO-KF}8x zJ${@wv<5>q5jux(n4SP51ikgU3!h+)}%u z1v;$u(SOJMwqyVP@$cDV`Zm9G>g8jdy;ttqENBb>jeGSgpfPUcJm*Xlq7evu_?b0> zYGWw7f=wD7Ch7?Rg$6^sIHW`n1$!<)2~u4g#I-0X4gbNxemoo8d=<1GheKKb?8c@5 z{_u*vapqaqTfcXGsligm>4#mXx$`I2TQ9KlSn-+Necq)T-+OQ4ygt^$iy1PzM6U$B z8g}~%AB5aBHo_(0L8xe;k#BSYGM?8!yiy0b>Q(iF5XIAcCSrw2v$X_o8m(9U_!NEV zS2HF}bbZIH`W3GCmaja6g5%}49%*ew`9%|G8w})_|`742B7kRcoZl$hxy@iGx7KLb-=($pGsAAZOS|J1=FtM!p}rMC zeXD2f-yd>oU(kxaVs{e&Pc1`VXt#(mzNk24JnVN(fb|U&D#Yl~!>FqDi}t%@%XP?> z8&Mp8Zo6G_ilMB*#Q7|MZn$V+d{9~LiVpG@`3{Me`lMkuPm0iRX%BvF&8YE)6Rk~k zwHPU@Yl+y<@w>0XZo2;Zo5p?pTJ5Fb)qO+6NcX!M=mGHL%gAe^PQKi?w(sS4r(7H9 z`l4?wmO#5O*ZLLm>b7OlSFCKApqZ$gp3|0zX!(riFizMqiT6U=N`@^HW?()B^ujo` z^e}&d$}}4IEK?@PXB-;;uz4CBvM5s~Zd0yw#FR<*$c)ve1bYFe6C4nC;04eryg7`#SX zi+&>!ZMg~k2DeqzAUlj-v{fWZ6%Csk$2ganB0jcp6Uw6XqrV$%qex^Cy__mTZWNL4 z_@eycq>Um|G&|^WJ@O=e^tIG zm$d5NL)U*JX~w+hV$5sewJs8=Uj|(ld&y+1%j5Vr*dPx9d^etZ@vOkJ5>GCk8}aPG z12gQT6Hfz&r~M>J4<@tq2C`pICzoh1ka^xy$!bGBaQ{dS!@hm5VJ11O@5a-Ha5vdx z7$AqS2XahbO>(jKco<4;4totE4)0MfHyHedyB4$`(w`t@`tu~ykU@4E#*;|ziDU-8 zDbQafWAzhc37bOpYO_fq+%Z}ev@RXM25cYVYsgyte6m~5Aj|cOutJzYR76>sOIw;=A22!u24+Mz}XaDPb$wseMSIp*kZ) z`<5hWFX7DlTT%s>V)`%gYq+6?b>t$>dxS67Yr*fk$ui`r6*4Mg>EFpU`e&pDG&Xw8 zArCVaCU zX_xAyxBzlBnMH3P8QQbtuyzHxLc5Rb(N>cSdEVHsNFPfkS=#etGfwzdvKmNLlfiqS z2fG9A<#1QRO@NzkI7p@#D#$wI^O!arlGy|@*z#Ef_k8jG0IAoCNHcw7sExisB5~89 z4sM{~IpOZ}`jXUXHOyzWn!|KHb{e99P9!A#aW59cz*jNUsG#nt;i+qAU zjuU+O9ZMj~-TD7n9-NdsaPxv8%z44{${+7JcutZP!bQHh%k$3jEuPnKG6g=5dcX_L z56_45#p`NP=;o2v>j>jPn-$+;r5`e2PGi3@7Vbj!7HMIBBGcJZBo=MZ4q3mY>^}$%I`X8A%A)3lxSmhs267VXW<>%m_7yHqE2b!P|uVr>e99N?jcy)!kx9V!=he& zhi?M`b3MK<1Fp}36Lk&!*i=Kc42wFHDC?0IT$FR2W+W}VeR|iA;1~7qUW9p_JcrBi zvtI*0ucPBhJ@Wbl^7aJAr;T`S9`gpN^Iy;DAkzfwr=);gBf_)su0XsigI;rv#|=|P zCaUme?rN&9Vq=H?#rrGhtP*_|r-%1j2(KJYU(tj2`|w`$Wugq!d*0SKZ_X}@v%_bX z$A1dD%ggQZK0%b5az#J+J<^?ozHrmfsk6hP|I9-C2E^Ymbn5J|=ul+%2a%P!#L{dExP{sj1! z0zdD=P|rj;q5R!^b=NO^migpj z%x@d|6fmE%fT4fTPlx`&%a#3_EaC9HtE)X*vV-Ow|5UcmDrd2HwegWVI3 zlh;j*Kg0DC=p*oiH>gGV{J z%VSj8c=Q9jPe8j_=5+LwnJpFjFk)FV8YuheO6@;&;W4osB^@K`a=%Fu2n0kEzfrhkR; zn}`2GEIu)0mwum^BNW2I_{iTza*$4)qlO&A zR>LP=OT2b@6Yoy%hrD0({?NzEC(38nn3ZF0^Y!)Z^nKdT%g^HH^gHDr&QpivwRCn?H8-Sm)T2LB^n!L3@Hu1f32J3eE{$65JDfRfuoM>X6q%GeU0+ zJsq|&?CG$<@TTxX;V+L%AGc-PiSb3_kBt9jLfwSp6I>JHC)Q3pF!9u+#7Pa4c1(IQ z!Uunrhy#)Sk=r8Qog6mVIr-zLwy000L`^B0VxRK%ly8hV#%;y}(JZR!UGAX5{nYICBB~cS>g{#{z*|uIZ5`Us-)FPTaxx9eU+>yXC;>=HzjXO{v`Rk zl-iW8lt)uuO*N;^POVApO5KrqU7CMdaoT~j2hu)C&qzO%{z&>;Q;Vn8OkF+o@u{z7 z#AeiH+?(-8#)*uRnHiaNnL9J@&3rWT-K?0b?O7+X_3Yy8&g=u(U*wo`X6H2J?8$jO zHzT(!w<-65+$VES=AO!RnS;zR<{Y!#TxDKu-eSJae8~KCUVL7D-p>5Q{KEYC`L+37 z`S<5PUeHvqv0z)l-hzV#4;8#vaI)Z3fveD~a7W>Fg@+0Urv*-npO!xDmg!&3c(ce{ z)Kj#jXh+fRqR(bpX6~DLVCKP@_s@L%KmI*G^VON3&HQTSV6j(mM)CaOmf{`72aBD> zj~0JY5?gXr$w0}IC9ju!<@sm1-!fo%)bgR##~Nmhw{}_|EiEp6)wbN$Vvn)kJu7zB z!0gW1C+Eb@*)un5?sfCV&09V1&G}99_soC%JpH_=^Ol_V;eyl!*Dd(Ng3}AV78Wo3 zqRgiZQtD+@Wi4f$W!ua4mEB$TK-rUJZm^O;k-rO@7VXn&ma^H5+O^ zUskm2mSuM@JHG71vUit#yxh1vae3i#%koXjw=dtf{J@HFE4o&kT=CJ0f3NgfIbo%7 z<&7)9SXH&Ec2(D^9jmTeb<3*nYKv=cti7Xlp!WINw`)Ii)Hn`0jyN81yzF@2@rC2N zI^Vj;y7W48-GaK>x~{rSb*}pS`mObs)W2T;O+$P`dc$oEpEMRWS{fHMHZ^W++}3!a zsk7zdYWT(@i8fprh8 zdve{I>pouhO_xvCq^{I1dsl7OrmlV6A>DP|&-dKYb9#O4`mXgm)?c^&(E3N#zr6mf z_3y4fy@6~9*$}(IykYi+nhk9m9^dfthW9so(aUjjxOW$ZvHC0YvfgN^IAu1TY7!R+M@I&j!msy6^+g7+Z_mjkb@?ud-qp_*AtGmazL80krGD`Hlj&5U}qr0)e2;`-W zs~t<$8?(~0bB&2S2E?vy?dd^mPlvGwSUT6&wYAn88#<7e_9XtcuCckb-Pq9B-P+vV z+TLt*v^OBMp|P!_lLvcRTDy(yjlIU6zRt!bM}1?u?}Co@w304I9q=U1cl2;P&24?1 zE#2~4M~}nk=xQ{!uI=pT;z>7kb*wd3bkubqwWf}C@ZFt@tn|$6ylK1)@{)|}+Z#{@ zoXC<+M?IYRt@VxV-HoZnB`VWd7-Sc5dh8raWk*v_uSlrdh&*x71`i~abLJZtb~d(4 z;Gf{iM4=f4GWD$ycpV#1!j8JOMq_VlPm9rEw3n0{9X*A{mY$x@?!u{4yX(7JJA1m* zyHOE3x|*jhw9o&AC{aSH{Ot~uzp=EnxwWSox&b;!C+QTG=fIp_ZwVi7poh!mSd4mt0P=p8vXN2uvQtkEN1M$#)dXawImCmTrv;w9y! z2(8B3CEyb;r*z~c7rw;dZzN~eBE25`$!~k`wGkmnODDdq1D9J-3P#}OCBe(3U6j3q zz6o zk_949Y1l91HKq<<)B`e+%twgVF-cD|aPx0l1iq1UIgA7FysmH#w;~svz}SWNGS^M; z^Stre&;k4%h~a!_!vF2?^R&(`3(nC@@H9`Kf|t9h-E{IL(yQVCxZsN!Ys&JpLJEGIWs&hv9oQi*YSKH?S%F7rA* zg84tw#akJFj2@JYPM7nSQ{w=~WE zH4Xjh4D^vRNile8L62QZY~ao;G8?5mm&^m7&O<9&hUbqeZ!zlJQc{I`xHV)M zSx#1vl{ojW#T70Cxf64-i=k)iI`SE`zw9BG!?w#|tkAu10(z2MM6SVn@OrY7JVV}x z1($mS-!G7+0ZEX$@UQm(vw=C0#{pse{(hdfGr6DQsOsP_LD)rfX;$T}#_(2koTmXcz6K zJ#;t=mX>-a*R9+Y0m*@Mtu(Yd7dVhQYX2O_R}NuC>?+q?1$(v@;okiK1?1bPtZrm zqx3iATly${j6P1Epik1L=+pEW`Ye5pK2KkuFVdIj37o_Imh7i5lN-qmur_=b*$ewV z_mC^G4!D*)Okbg|(%0zg^bPtZ{T+Ra{+|AU{*k^--=QbzpXj^vJ^DWVfPRSEp&!w| z(2wa~=_mA4`WgKj{ha=to}&Mtr|CcG7xYW|75x|eH~pG^L%*fp(eLRG^hY{K&rlZ~ zV!Q$2$~$C}47d~IjoqLz%$NBwe-^;7Pt1Z?FbiR!ER2Q2nDuyEo0-Tau?QB)CbK9u zg&A2ii(w`f%iu~ZWYgGmHUsxA zXR=~e!Ys_nN|}w>*(^4j&0%xdJT@PqGz-{5R>sO9rB=xnLFe8Qwv<(|YF5LRvE^(9 zTgg_jTIOJNte!QnM%KidSqp1rtJxaX#@4cS*1(jkv8&l$b`AE(u4UK33eA34 z!MTy$#162V*)8l=b{o5$-NEi;2iaZhZgvkl#16B2*?sJO_AB-P`!#mf`q>e7lnt;4 z8T2p0YR<##5%wGQD0_@O&YoaTvZvV7kS2bXJ;$DBFR&NcOY8)cV7$y;VXv~+*z4>K z_9pusdyD;^{Q)+~-)8Tylk89IUG^S(pMAhSWPfHKvA?j7*{Ip``y2b5{hgg+ z|6r%tKiL=TOZFA}7yCE+ntj8*W#6&y*$?bTHptE}7aPK*Fp8Z&4N4#lnwRFS`DkM_ zU(HYR*8;RaZLAig1#2N%s1~M$YvZ)>P%Jx9o1{f(k=kS}N}Hk?wP-CyGik9}oEEPo zXo*^q_xkqM4E&UvrQA~KmZoQa8p?zrIKMdRp5W zgfF0_qhpPuu0ukIZ?ZG&{tX>Hby$-0^3TLebB080&X5V2GiAc&%uE@dDG4)Y=Blto zxpwJhDYz^JmzAyF=O|Zwmt|JrJmuyqS7ykZRieTQf0m*vOVO2OQ}HU@Y(;0bN=!INDKUbxjtI{>htniu@UbDh$R(Q<{uUX+WE4*fvFSEjLcH>w1GOK)cRa;-gjJFID(U z72Z;Xw^Ze$RMA(ezAshZm#Xh=DxY?R$FAtKD|~i^&#v&<6+XM7+pg%gD}LG~zC2lf zvQ&o#SKx&!@WK^%;R?KP1zxxUFI<5auD}ad;Dsyr0$1<_uE-Z$kuSI+UvNeFU<*X# z3vQ-wQ)~13uEqvOcMI=2_zqQo*c|Du@4)N2wt#i(J9-+suu0Q}J&(Yi-VSt+jqPoX z4(y=FPqGwMvUkeL$Wm0u-U(qvh3uUWwtKB@ZAWkH)s1ery?!lE*WGbF!W=dXX zW}3$|Vk>T~1KUReQ?|1Xu6_uAmjJpvZ2K zy#!npFMA1u-SL8N2#eB#D=4;G@@x6P z5mlmyDp5qqt^@H3sq8}R7KyeXUYp9aO;iiJ#iqWKU4h+VSM=Hy6YYv#yZpX1TZT)sRakZv_EPnoO?K&ao9xoz z%Jgh`GCiB@;_+V6Z_AVP+wvqGHre$fUea$<+7>DWmA>Q zrYe_BRW6&VTsAor*=+?XeK{l{EX&U(hbDw&J+c+Zau(;J+`TOY*Y2vrs}ax)nl8g$2L`uZK@vIR6Vw-dTdkm*k)1b zTU7cM#eX?u+HDqT?UTkuxwcF%S3snsrtjgc2(w9TA-Bv0)7n>ZC5mxD|_G?q^ z*QVO9O|@T}YQHwser>A#+DcXazU{n2o&8G5iQ|a4O{%tCKo65gU^3=tfUC-1P9YFh>B}hu!YX|^ zg+N&GUrr$qR_WVS`tJTk^+R?Qw%ben=R4Mxv^6#@b#%8mf;|JGyY^k+Slf7BV|sQ* z)`&OTU%fTw=9+Un1Gyf7JkOYX&u{YcM!?Kj9x>+ZTz`i+$61wy2}HL$kj(>uDnr%~XEdh(9+o!<=K0?}gv$;kSAC?aH46c=vnm7vp1w*_@HSwxhj6 zl3~vD3}kr*vONPio`GD?fY~#U=NZWN3>0_Jm>v5f}kOV1$AaPizQyfQ`at@kq49;t6K)z-IBJ8i5gP z2#h3Z@k|E+j~LHVuy~dN0wZA7EDv%J7)b{K4=_)TT4hehigsiz9bHKf=JP^XURGHJ zWt~!iv%qCl90un}O2nlZqahIXkyRD&XkvEHHfr~5qjt|Wihu_e8Sup7*@W#LO&CkZkv#LjaGrU<%_>Zz?QT|a z)?wP5IXY|~E+Y|->D;Jz4CkZ6BdnM3rRLG`Hrwbhn5lYQA8}5fZ7$#iilt{kdRs?* zn_ojm8{`<$>$AG+1G=%WY{S972>J9iwhNDMX=7WDLwXmkZETj_F?>lVUXI~wKH(FX zv49&1V3j8V;yj1q&i2@I9QT~-)x9_eIYN%WdH{a>zR-vdCpO{_H^)Sb+jYM;JgdG? zE_oP#*OTiFPF$1tNG~MBRVy$)3yI5*^aar0HBa71a*|Y|lPs>XRU3`-j+4Ohc}}m& znkr{bgfp?aw#m3_ag~$BIUe@GK~#OcsV*Wq+DWRN#A+%%g7YeCttHJ#Q=P`zrZgu@ zHAS1E)0|qWvEir|7EUZyXQ!OWDr@sjvtE0iGmu)J|G2(QU<1b43yXL6FVs>bRg<0ywrbLy#1EyWpbt>Wo9$62ikAi~&S zbUs<;)Z=T8B+>w@t={JJvQ04G+i#J9d=gWO&?lad$)Iyz71i0n&x7IsJMU|7x zpxW4g{Fp4&X--3`(Pnh&aSr6k z+geuT^fp- zzsYhmz@KQ)+7%sPimpyZB_5j!gDf^@gQGOf8I+1F7>&-c*10@q@Sud8K|EA}P>?9E zU?2(-OfiB7^&s3CY^^o!sx>-;!L~GKNb0;rRsDKHX?3hKpwYB3%^8|Hue@qrrFJJIAI;q3r3{K%q4pqz2KbHR&g#Vm$9LhqAE34|~?GWs;>_Q16 z*`VZT6FzhMQ6G3b{{$_W$5taJvq1kWyd7OwKU0MLxP@f`ldVotbOhI}MSTcQCD2B0 zTU6x?F6yQ1 z-6Z6XyUEBOchggi(?vs?nrf_d zPN+4a)1$S#PB`E?(|MiENOew4aZW{h%tTX|g&KR#25EBSn|R0mix8-eY0fNn5%&lB z+IWp~W+wL=Xt=Ekogy#AY!CMQ986BCF;`HY3v3dP?Wf%YdY^Mr%ioi6xI2qqX^|DJl?lhc4f6`h@Kbwt2lTaEtV>~9<(4gJ5#?#PcYAq6|~2}h&?eCJ36gzzre3!MlG z!+;8h5#%gNfYHH6D^7%l|5Z;qk`^k_W_|uwKYf`0!oX(_u<{dgVQg_izvw4p%Lof#m}CbG<{alGWb0~0ih%sQ{m zCbYD4v^<$1duqQg#u{GxMa}>3Rq0vhs$l<AUsP^}Suh7I2$#(svlF!N&~&F6t$gm!yq^bjG%VDa2blS(&H^~+aW2}x zZlfK8u$x;8Qh9}To(DEBOoa|OJ3M9ZQ0^&DJwnBs3V6huN)9s%QHwYX_blcx+_Qwk zaL>}zqv#8*@KwQwu^qnZ)T30stAS6xTgKrik6q5;gl`3h6TX!kPWV>wG;IK@+}AGX;=T^>c=~Vwc8ZX*7!m8Fw*=lU&U6muv>?=tu@+tq(<8kcX1##n5gcX% zKAtg*wO5417aOIQf6*ts9DEb-%#bKIOD_l5BE1~oe83hBai0r+ACrjv9J#yYv=>+C1qmIr5}!s#TL z`-^?2`ApSKdbmONRWEE_xe$|z)Wi!v%VT39tT=`kw&4>$fQ+>~MvB!RfAcV;8%b$@ zEZtd-MZ(T19&RY@Pvqg_K19ACrPUGr3H;R~KHG5VqIhThA_0jAp|#d`hEJv*2j!u9 YVDfP~bg@&v0;6~7QA2|lDJ>=c2eQ_%7ytkO literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.ttf b/Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7fd8033aecca4c5946ebd91bd3ac8af380839be4 GIT binary patch literal 100236 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 z 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 z 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 K_6dq(VEhMeR7bS{ literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.woff2 b/Presentation/HushianWebApp/wwwroot/fonts/vazir/vazir-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cb95c4f20e8b86eb9aa66b1e53f4e02b409872c7 GIT binary patch literal 43440 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 literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/funCus.js b/Presentation/HushianWebApp/wwwroot/funCus.js new file mode 100644 index 0000000..e830699 --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/funCus.js @@ -0,0 +1,4 @@ +function scrollToTarget() { + const target = document.getElementById("target"); + target.scrollIntoView({ behavior: "smooth" }); // اسکرول نرم +} \ No newline at end of file diff --git a/Presentation/HushianWebApp/wwwroot/icon-192.png b/Presentation/HushianWebApp/wwwroot/icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..166f56da7612ea74df6a297154c8d281a4f28a14 GIT binary patch literal 2626 zcmV-I3cdA-P)v0A9xRwxP|bki~~&uFk>U z#P+PQh zyZ;-jwXKqnKbb6)@RaxQz@vm={%t~VbaZrdbaZrdbaeEeXj>~BG?&`J0XrqR#sSlO zg~N5iUk*15JibvlR1f^^1czzNKWvoJtc!Sj*G37QXbZ8LeD{Fzxgdv#Q{x}ytfZ5q z+^k#NaEp>zX_8~aSaZ`O%B9C&YLHb(mNtgGD&Kezd5S@&C=n~Uy1NWHM`t07VQP^MopUXki{2^#ryd94>UJMYW|(#4qV`kb7eD)Q=~NN zaVIRi@|TJ!Rni8J=5DOutQ#bEyMVr8*;HU|)MEKmVC+IOiDi9y)vz=rdtAUHW$yjt zrj3B7v(>exU=IrzC<+?AE=2vI;%fafM}#ShGDZx=0Nus5QHKdyb9pw&4>4XCpa-o?P(Gnco1CGX|U> z$f+_tA3+V~<{MU^A%eP!8R*-sD9y<>Jc7A(;aC5hVbs;kX9&Sa$JMG!W_BLFQa*hM zri__C@0i0U1X#?)Y=)>JpvTnY6^s;fu#I}K9u>OldV}m!Ch`d1Vs@v9 zb}w(!TvOmSzmMBa9gYvD4xocL2r0ds6%Hs>Z& z#7#o9PGHDmfG%JQq`O5~dt|MAQN@2wyJw_@``7Giyy(yyk(m8U*kk5$X1^;3$a3}N^Lp6hE5!#8l z#~NYHmKAs6IAe&A;bvM8OochRmXN>`D`{N$%#dZCRxp4-dJ?*3P}}T`tYa3?zz5BA zTu7uE#GsDpZ$~j9q=Zq!LYjLbZPXFILZK4?S)C-zE1(dC2d<7nO4-nSCbV#9E|E1MM|V<9>i4h?WX*r*ul1 z5#k6;po8z=fdMiVVz*h+iaTlz#WOYmU^SX5#97H~B32s-#4wk<1NTN#g?LrYieCu> zF7pbOLR;q2D#Q`^t%QcY06*X-jM+ei7%ZuanUTH#9Y%FBi*Z#22({_}3^=BboIsbg zR0#jJ>9QR8SnmtSS6x($?$}6$x+q)697#m${Z@G6Ujf=6iO^S}7P`q8DkH!IHd4lB zDzwxt3BHsPAcXFFY^Fj}(073>NL_$A%v2sUW(CRutd%{G`5ow?L`XYSO*Qu?x+Gzv zBtR}Y6`XF4xX7)Z04D+fH;TMapdQFFameUuHL34NN)r@aF4RO%x&NApeWGtr#mG~M z6sEIZS;Uj1HB1*0hh=O@0q1=Ia@L>-tETu-3n(op+97E z#&~2xggrl(LA|giII;RwBlX2^Q`B{_t}gxNL;iB11gEPC>v` zb4SJ;;BFOB!{chn>?cCeGDKuqI0+!skyWTn*k!WiPNBf=8rn;@y%( znhq%8fj2eAe?`A5mP;TE&iLEmQ^xV%-kmC-8mWao&EUK_^=GW-Y3z ksi~={si~={skwfB0gq6itke#r1ONa407*qoM6N<$g11Kq@c;k- literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/icon-512.png b/Presentation/HushianWebApp/wwwroot/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..c2dd4842dc93df73c322218ee03eca142a19a338 GIT binary patch literal 6311 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 literal 0 HcmV?d00001 diff --git a/Presentation/HushianWebApp/wwwroot/index.html b/Presentation/HushianWebApp/wwwroot/index.html new file mode 100644 index 0000000..289b99d --- /dev/null +++ b/Presentation/HushianWebApp/wwwroot/index.html @@ -0,0 +1,59 @@ + + + + + + + Hushian + + + + + + + + + + + + + + + + +