commit dbf38531fa1e2770fe17d212b67e572b15e1132a Author: ehsan vaseghi Date: Sat Feb 22 19:24:51 2025 +0330 Add project files. diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3729ff0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4dfd335 --- /dev/null +++ b/.gitignore @@ -0,0 +1,364 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates +*.crt +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd +Panel/Properties/launchSettings.json diff --git a/.idea/.idea.DadYar/.idea/.gitignore b/.idea/.idea.DadYar/.idea/.gitignore new file mode 100644 index 0000000..4f9277f --- /dev/null +++ b/.idea/.idea.DadYar/.idea/.gitignore @@ -0,0 +1,376 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/modules.xml +/projectSettingsUpdater.xml +/.idea.DadYar.iml +/contentModel.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd \ No newline at end of file diff --git a/Api/.config/dotnet-tools.json b/Api/.config/dotnet-tools.json new file mode 100644 index 0000000..337014b --- /dev/null +++ b/Api/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "5.0.10", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/Api/.editorconfig b/Api/.editorconfig new file mode 100644 index 0000000..e69de29 diff --git a/Api/Api.csproj b/Api/Api.csproj new file mode 100644 index 0000000..949e131 --- /dev/null +++ b/Api/Api.csproj @@ -0,0 +1,62 @@ + + + + net8.0 + cb5a9876-4532-46d5-b632-ec5d04c898d0 + Linux + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Api/AutoMapperConfig.cs b/Api/AutoMapperConfig.cs new file mode 100644 index 0000000..8034247 --- /dev/null +++ b/Api/AutoMapperConfig.cs @@ -0,0 +1,28 @@ +using AutoMapper; +using Domain.BaseData; +using Domain.Identity; +using Models.BaseData; +using Models.Identity; + +namespace Api +{ + + + public class AutoMapperConfig : Profile + { + public AutoMapperConfig() + { + // Add as many of these lines as you need to map your objects + CreateMap(); + CreateMap(); + + + CreateMap(); + CreateMap(); + CreateMap(); + + + + } + } +} \ No newline at end of file diff --git a/Api/Controllers/AuthController.cs b/Api/Controllers/AuthController.cs new file mode 100644 index 0000000..445688f --- /dev/null +++ b/Api/Controllers/AuthController.cs @@ -0,0 +1,96 @@ +using Domain.Identity; +using Infrastructure; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using Models.Identity; +using Services.Identity; +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Hosting; + +namespace Api.Controllers +{ + [ApiController] + [EnableCors("AllowAll")] + + public class AuthController : BaseController + { + private readonly IAuthService authService; + private readonly IWebHostEnvironment _hostingEnvironment; + + public AuthController(IServiceProvider serviceProvider) : base(serviceProvider) + { + authService=serviceProvider.GetService(); + } + + + + [HttpPost] + [ProducesResponseType(typeof(OtpRequestResult), StatusCodes.Status200OK)] + public async Task SignUp([FromBody] SignUpModel model) + { + var existed = authService.GetByUsername(model.Email) != null; + if (existed) + { + return BadRequest("Email is already registered!"); + } + var account = new Account + { + Email = model.Email, + Username = model.Email, + Password = model.Password, + Name = model.Name + }; + authService.Add(account); + var token = await authService.GenerateLoginToken(account); + return Ok(new OtpRequestResult()); + } + + + + [HttpPost] + [ProducesResponseType(typeof(PlainToken), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + public async Task Login([FromBody] LoginModel model) + { + var account = await authService.GetByUsernameAndPassword(model.Username, model.Password); + if (account == null) return Unauthorized(); + + var loginToken = await authService.GenerateLoginToken(account); + var plainToken = await authService.GeneratePlainToken(account, loginToken.Token); + if (plainToken == null) return Unauthorized(); + + return Ok(plainToken); + } + + [HttpGet] + [ProducesResponseType(typeof(CheckLoginResponse), statusCode: StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + public IActionResult Check() + { + var u = User; + try + { + + var res = Mapper.Map(CurrentAccount); + try + { + res.IsDeveloper = User.IsInRole(Consts.Developer); + } + catch + { + } + return Ok(res); + } + catch (Exception) + { + return Unauthorized(); + } + } + + + + } +} diff --git a/Api/Controllers/BaseController.cs b/Api/Controllers/BaseController.cs new file mode 100644 index 0000000..1ad4c83 --- /dev/null +++ b/Api/Controllers/BaseController.cs @@ -0,0 +1,175 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Security.Claims; +using System.Threading.Tasks; +using AutoMapper; +using Azure.Core; +using Domain.Identity; +using Microsoft.AspNetCore.Cors; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Services.Identity; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.Formats; +using SixLabors.ImageSharp.Formats.Png; +using SixLabors.ImageSharp.Processing; +using Image = SixLabors.ImageSharp.Image; + +namespace Api.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + [EnableCors("AllowAll")] + public class BaseController : ControllerBase + { + private readonly AutoMapper.IMapper _mapper; + private readonly IWebHostEnvironment _environment; + private readonly IAuthService authService; + private readonly IServiceProvider serviceProvider; + //response messages + + + public BaseController(IServiceProvider serviceProvider) + { + _mapper = serviceProvider.GetService(); + _environment = serviceProvider.GetService(); + authService = serviceProvider.GetService(); + } + + + public IMapper Mapper => _mapper; + private T GetClaim(string type) + { + var value = User.FindFirstValue(type) ?? ""; + + var converter = TypeDescriptor.GetConverter(typeof(T)); + + try + { + return (T)converter.ConvertFromString(value); + } + catch + { + return default; + } + + + } + private Account _currentAccount; + public Account CurrentAccount + { + get + { + if (_currentAccount == null) + _currentAccount = authService.GetByUsername(CurrentClaim.Username); + return _currentAccount; + } + } + private CustomUser GetUser() + { + return new CustomUser + { + Id = GetClaim(ITokenIssuer.Claims.Id), + Name = GetClaim(ITokenIssuer.Claims.Name), + Username = GetClaim(ITokenIssuer.Claims.Username), + Roles = GetClaim(ClaimTypes.Role).Split(',') + }; + } + public CustomUser CurrentClaim => GetUser(); + + /// + /// get images as byte array and returns maximun 1000 pixle base64 + /// + /// + /// + [ApiExplorerSettings(IgnoreApi = true)] + public byte[] ResizeImage(byte[] inStream, int maxWidth = 1000) + { + using (var ms = new MemoryStream()) + { + using (Image image = Image.Load(inStream)) + { + if (image.Width < maxWidth) + { + image.SaveAsPng(ms); + return ms.ToArray(); + } + var ratio = (double)(maxWidth) / image.Width; + int width = image.Width; + int height = (int)(image.Height * ratio); + image.Mutate(x => x.Resize(width, height)); + + image.SaveAsPng(ms); + return ms.ToArray(); + } + } + } + + + [ApiExplorerSettings(IgnoreApi = true)] + private string GetUniqueFileName(string fileName) + { + fileName = Path.GetFileName(fileName); + return string.Concat(Path.GetFileNameWithoutExtension(fileName) + , "_" + , Guid.NewGuid().ToString().AsSpan(0, 4) + , Path.GetExtension(fileName)); + } + /// + /// Saves base64 as a PNG with max 1500px width or height + /// + /// base64 image + /// New file=empty + /// File Name(all of files stores in UploadedFiles folder + [ApiExplorerSettings(IgnoreApi = true)] + protected string SaveImageFromBase64(string fileContent, string fileName = "") + { + fileName = string.IsNullOrEmpty(fileName) ? Guid.NewGuid().ToString() + ".png" : fileName; + string outputPath = $"{_environment.ContentRootPath}\\UploadedFiles\\"; + if (!System.IO.Directory.Exists(outputPath)) + System.IO.Directory.CreateDirectory(outputPath); + // Decode Base64 string to byte array + byte[] imageBytes = Convert.FromBase64String(fileContent); + + using (MemoryStream ms = new MemoryStream(imageBytes)) + using (Image image = Image.Load(ms)) + { + // Resize if width > 1500, keeping aspect ratio + if (image.Width >= image.Height) + { + if (image.Width > 1500) + { + int newWidth = 1500; + int newHeight = (int)((double)newWidth / image.Width * image.Height); + + image.Mutate(x => x.Resize(newWidth, newHeight)); + } + } + else + { + if (image.Height > 1500) + { + int newHeight = 1500; + int newWidth = (int)((double)newHeight / image.Height * image.Width); + image.Mutate(x => x.Resize(newWidth, newHeight)); + } + } + // Save as PNG + image.Save($"{outputPath}{fileName}", new PngEncoder()); + return fileName; + } + } + } + + public class CustomUser + { + public string Name { get; set; } + public string Username { get; set; } + public Guid Id { get; set; } + public string[] Roles { get; set; } + } +} diff --git a/Api/Controllers/PlantsController.cs b/Api/Controllers/PlantsController.cs new file mode 100644 index 0000000..84e4fe4 --- /dev/null +++ b/Api/Controllers/PlantsController.cs @@ -0,0 +1,55 @@ +using Domain.BaseData; +using Infrastructure; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; +using Models.BaseData; +using Services.BaseData; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Api.Controllers +{ + [Authorize(Roles = Consts.Developer)] + + public class PlantsController : BaseController + { + private readonly IPlantsService plantsService; + public PlantsController(IServiceProvider serviceProvider) : base(serviceProvider) + { + plantsService = serviceProvider.GetService(); + } + + [HttpGet] + public IActionResult List() + { + var dbList = plantsService.GetQueryable().ToList(); + return Ok(Mapper.Map>(dbList)); + } + [HttpPost] + public IActionResult Add(SavePlantViewModel model) + { + var dbModel = Mapper.Map(model); + var imageName=SaveImageFromBase64(model.Base64Icon); + dbModel.ImageFileName = imageName; + plantsService.Add(dbModel); + return Ok(); + } + [HttpPut] + public IActionResult Update(PlantViewModel model) + { + var dbModel = plantsService.GetById(model.Id.Value); + Mapper.Map(model, dbModel); + plantsService.Update(dbModel); + return Ok(); + } + [HttpDelete("{id}")] + public IActionResult Delete(Guid id) + { + plantsService.Delete(id); + return Ok(); + } + + } +} diff --git a/Api/MyStaticFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png b/Api/MyStaticFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png new file mode 100644 index 0000000..55a830c Binary files /dev/null and b/Api/MyStaticFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png differ diff --git a/Api/Program.cs b/Api/Program.cs new file mode 100644 index 0000000..92b5fc1 --- /dev/null +++ b/Api/Program.cs @@ -0,0 +1,97 @@ +using Api.Start; +using Core.Db; +using Microsoft.AspNetCore.Builder; +using Microsoft.EntityFrameworkCore; +using Microsoft.OpenApi.Models; +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using System.Collections.Generic; +using Microsoft.Extensions.FileProviders; +using System.IO; + +var builder = WebApplication.CreateBuilder(args); +var Configuration = builder.Configuration; +//MVC: +builder.Services.AddControllersWithViews(); +//Swagger: +builder.Services.AddSwaggerGen(c => +{ + c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" }); + + c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Description = @"JWT Authorization header using the bearer scheme. + Enter 'Bearer' [space] and then your token in the text input below. + Example: 'Bearer 12345abcdef'", + Name = "Authorization", + In = ParameterLocation.Header, + Scheme = "Bearer", + Type = SecuritySchemeType.Http + }); + c.AddSecurityRequirement(new OpenApiSecurityRequirement + {{new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + }, + Name = "Bearer", + In = ParameterLocation.Header, + }, new List() + }}); + + + + +} + ); + +#region Required Services & DI +builder.Services.RegisterDependencies(Configuration); +builder.Services.RegisterAuth(Configuration); +#endregion + +builder.Services.AddCors(builder => +{ + builder.AddPolicy("AllowAll", options => + { + options.AllowAnyHeader() + .AllowAnyOrigin() + .AllowAnyMethod() + .AllowAnyHeader(); + }); +}); + +var app = builder.Build(); + + + +app.UseHttpsRedirection(); + + + +app.UseRouting(); +app.UseCors("AllowAll"); +app.ConfigureAuthentication(); + + + +app.UseSwagger(); +app.UseSwaggerUI(); + +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); +app.MapControllerRoute( + name: "pages", + pattern: "{controller=Home}/{pageName}"); +app.UseDeveloperExceptionPage(); +app.UseStaticFiles(); +app.UseStaticFiles(new StaticFileOptions +{ + FileProvider = new PhysicalFileProvider( + Path.Combine(builder.Environment.ContentRootPath, "UploadedFiles")), + RequestPath = "/UploadedFiles" +}); +app.Run(); diff --git a/Api/Properties/launchSettings.json b/Api/Properties/launchSettings.json new file mode 100644 index 0000000..a30d46e --- /dev/null +++ b/Api/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Api": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": "true", + "applicationUrl": "https://localhost:5001;http://localhost:5000" + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", + "publishAllPorts": true, + "useSSL": true + } + }, + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:21424", + "sslPort": 44331 + } + } +} \ No newline at end of file diff --git a/Api/Start/AddRequiredHeaderParameter.cs b/Api/Start/AddRequiredHeaderParameter.cs new file mode 100644 index 0000000..55bd87b --- /dev/null +++ b/Api/Start/AddRequiredHeaderParameter.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace Api.Start +{ + + public class AddRequiredHeaderParameter : IOperationFilter + { + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + if (operation.Parameters == null) + operation.Parameters = new List(); + + operation.Parameters.Add(new OpenApiParameter + { + Name = "X-Version", + In = ParameterLocation.Header, + Required = false, + }); + } + } +} diff --git a/Api/Start/AuthRegister.cs b/Api/Start/AuthRegister.cs new file mode 100644 index 0000000..3c85593 --- /dev/null +++ b/Api/Start/AuthRegister.cs @@ -0,0 +1,51 @@ +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Tokens; +using System; +using System.Security.Claims; +using System.Text; + +namespace Api.Start +{ + public static class AuthRegister + { + public static void RegisterAuth(this IServiceCollection services, IConfiguration configuration) + { + + services.AddAuthentication(options => + { + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }).AddJwtBearer(options => + { + var secret = configuration.GetValue("Jwt:Key"); + var issuer = configuration.GetValue("Jwt:Issuer"); + + + options.IncludeErrorDetails = true; + options.TokenValidationParameters = new TokenValidationParameters + { + ValidateIssuer = true, + ValidIssuer = issuer, + ValidateAudience = true, + ValidAudience = issuer, + ValidateIssuerSigningKey = true, + IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secret)), + ValidateLifetime = true, + ClockSkew = TimeSpan.Zero, + RoleClaimType = ClaimTypes.Role, + SaveSigninToken = true, + }; + }); + } + + public static void ConfigureAuthentication(this IApplicationBuilder app) + { + app.UseAuthentication(); + app.UseAuthorization(); + + } + } +} diff --git a/Api/Start/DI.cs b/Api/Start/DI.cs new file mode 100644 index 0000000..2afc1ee --- /dev/null +++ b/Api/Start/DI.cs @@ -0,0 +1,32 @@ +using Core.Db; +using Microsoft.EntityFrameworkCore; +using System.Reflection; +using AutoMapper; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Configuration; + +namespace Api.Start +{ + public static class DI + { + public static void RegisterDependencies(this IServiceCollection services, IConfiguration configuration) + { + services.AddDbContext(options => options.UseSqlServer(configuration.GetConnectionString("PanakContext"))); + services.AddScoped(); + services.Scan(scan => scan + .FromAssemblies(typeof(Services.Identity.IAuthService).GetTypeInfo().Assembly) + .AddClasses() + .AsImplementedInterfaces() + .WithScopedLifetime()); + services.AddSingleton(); + var mapperConfig = new MapperConfiguration(mc => + { + mc.AddProfile(new AutoMapperConfig()); + }); + var mapper = mapperConfig.CreateMapper(); + services.AddSingleton(mapper); + + } + } +} diff --git a/Api/Start/MvcRegistrar.cs b/Api/Start/MvcRegistrar.cs new file mode 100644 index 0000000..4b25be9 --- /dev/null +++ b/Api/Start/MvcRegistrar.cs @@ -0,0 +1,47 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.StaticFiles; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Newtonsoft.Json; +using System; +using System.Text.Json.Serialization; + +namespace Api.Start +{ + public static class MvcRegistrar + { + public static void RegisterMvc(this IServiceCollection services) + { + services.AddCors(); + services.AddControllers(); + services.AddControllers().AddJsonOptions(options => + { + options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; + }); + } + + public static void ConfigureMvc(this IApplicationBuilder app, IWebHostEnvironment env) + { + + app.UseCors(x => x + .WithOrigins("https://imasdk.googleapis.com") + .WithMethods("GET", "POST") + .AllowAnyHeader() + .SetIsOriginAllowed(origin => true) + .AllowCredentials() + .SetPreflightMaxAge(TimeSpan.FromDays(1)) + ); + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + + var provider = new FileExtensionContentTypeProvider(); + //provider.Mappings[".apk"] = "application/vnd.android.package-archive"; + + } + } +} diff --git a/Api/Start/SwaggerRegistrar.cs b/Api/Start/SwaggerRegistrar.cs new file mode 100644 index 0000000..96eeba6 --- /dev/null +++ b/Api/Start/SwaggerRegistrar.cs @@ -0,0 +1,62 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.OpenApi.Models; +using System.Collections.Generic; + +namespace Api.Start +{ + public static class SwaggerRegistrar + { + public static void RegisterSwagger(this IServiceCollection services) + { + + services.AddSwaggerGen(c => + { + c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" }); + + c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme + { + Description = @"JWT Authorization header using the bearer scheme. + Enter 'Bearer' [space] and then your token in the text input below. + Example: 'Bearer 12345abcdef'", + Name = "Authorization", + In = ParameterLocation.Header, + Scheme = "Bearer", + Type = SecuritySchemeType.Http + }); + c.AddSecurityRequirement(new OpenApiSecurityRequirement + {{new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = "Bearer" + }, + Name = "Bearer", + In = ParameterLocation.Header, + }, new List() + }}); + + c.OperationFilter(); + + }); + } + + public static void ConfigureSwagger(this IApplicationBuilder app) + { + + app.UseSwagger(c => + { + c.RouteTemplate = "api-docs/{documentName}/swagger.json"; + }); + + app.UseSwaggerUI(c => + { + c.SwaggerEndpoint("/api-docs/v1/swagger.json", "API V1.0"); + c.DocumentTitle = "Api"; + c.EnableDeepLinking(); + c.EnableValidator(); + }); + } + } +} diff --git a/Api/UploadedFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png b/Api/UploadedFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png new file mode 100644 index 0000000..55a830c Binary files /dev/null and b/Api/UploadedFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png differ diff --git a/Api/appsettings.Development.json b/Api/appsettings.Development.json new file mode 100644 index 0000000..8983e0f --- /dev/null +++ b/Api/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/Api/appsettings.json b/Api/appsettings.json new file mode 100644 index 0000000..d0cb6cf --- /dev/null +++ b/Api/appsettings.json @@ -0,0 +1,17 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*", + "ConnectionStrings": { + "PanakContext": "Data Source=uk-rm.drawise.net;Initial Catalog=SensoFarm;User ID=sa;Password=H007512$$nes;TrustServerCertificate=True;" + }, + "Jwt": { + "Key": "2659063f-c71e-4cae-9cf6-f3b3e8b77ffe", + "Issuer": "Panak Identity" + } +} diff --git a/Api/wwwroot/UploadedFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png b/Api/wwwroot/UploadedFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png new file mode 100644 index 0000000..55a830c Binary files /dev/null and b/Api/wwwroot/UploadedFiles/48780aa1-716a-4d3f-b280-56b072dc73ee.png differ diff --git a/BlazorPages/ApiUtils/UserUtils.cs b/BlazorPages/ApiUtils/UserUtils.cs new file mode 100644 index 0000000..1b219db --- /dev/null +++ b/BlazorPages/ApiUtils/UserUtils.cs @@ -0,0 +1,62 @@ +using AbrBlazorTools; +using Microsoft.AspNetCore.Components; +using Models.Identity; +using Newtonsoft.Json; + +namespace ApiUtils; + +public class UserUtils : IUserUtils +{ + private readonly IHttpClientWithLoginToken _client; + + public UserUtils(IHttpClientWithLoginToken client) + { + _client = client; + } + + public async Task SendVerificationRequest(object otpModel) + { + return await _client.HttpPost("/api/AUTH/Login",otpModel); + } + + public async Task SendSignUpRequest(object accountModel) + { + return await _client.HttpPost("/api/AUTH/SignUp",accountModel); + + } + public async Task LoginWithPasswordRequest(object loginModel) + { + return await _client.HttpPost("/api/AUTH/LoginWithPassword",loginModel); + } + public async Task CheckLogin(bool goToLogin = true) + { + return await _client.HttpGet("/api/AUTH/CheckLogin",true,goToLogin); + } + + public async Task RefreshToken(object refreshTokenModel) + { + return await _client.HttpPost("/api/Auth/refresh", refreshTokenModel); + } + + public async Task SaveEmailAndName(NameAndEmailModel model) + { + var res=await _client.HttpPost("/api/auth/SetNameAndEmail", model); + if (!res.IsSuccessStatusCode) + return null; + return JsonConvert.DeserializeObject(await res.Content.ReadAsStringAsync()); + } +} + + +public interface IUserUtils +{ + Task SendVerificationRequest(object otpModel); + Task LoginWithPasswordRequest(object loginModel); + Task SendSignUpRequest(object accountModel); + Task CheckLogin(bool goToLogin = true); + Task RefreshToken(object refreshTokenModel); + + Task SaveEmailAndName(NameAndEmailModel model); + + +} \ No newline at end of file diff --git a/BlazorPages/App.razor b/BlazorPages/App.razor new file mode 100644 index 0000000..6fd3ed1 --- /dev/null +++ b/BlazorPages/App.razor @@ -0,0 +1,12 @@ + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
diff --git a/BlazorPages/BlazorPages.csproj b/BlazorPages/BlazorPages.csproj new file mode 100644 index 0000000..decab26 --- /dev/null +++ b/BlazorPages/BlazorPages.csproj @@ -0,0 +1,36 @@ + + + + net8.0 + disable + enable + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/BlazorPages/BootStrapComponents/BaseBootStrapComponent.cs b/BlazorPages/BootStrapComponents/BaseBootStrapComponent.cs new file mode 100644 index 0000000..3dc5fb6 --- /dev/null +++ b/BlazorPages/BootStrapComponents/BaseBootStrapComponent.cs @@ -0,0 +1,37 @@ + + +using Microsoft.AspNetCore.Components; + +namespace BootStrapComponents +{ + public class BaseBootStrapComponent: ComponentBase + { + [Parameter] + public TextAlignment TextAlignment { get; set; } = TextAlignment.None; + [Parameter] + public RenderFragment ChildContent { set; get; } + public IEnumerable AutoClass() + { + + if (TextAlignment != TextAlignment.None) yield return "text-" + TextAlignment.ToString(); + yield return ""; + } + [Parameter] + public string AdditionalClass { set; get; } + } + public enum TextAlignment + { + None, + left, + center, + right, + justify + } + public enum BackColor + { + primary, + info, + danger, + white, + } +} diff --git a/BlazorPages/BootStrapComponents/BtButton.razor b/BlazorPages/BootStrapComponents/BtButton.razor new file mode 100644 index 0000000..bb0c06e --- /dev/null +++ b/BlazorPages/BootStrapComponents/BtButton.razor @@ -0,0 +1,15 @@ +@namespace BootStrapComponents +@inherits BaseBootStrapComponent + +@code { + [Parameter] + public BackColor BackColor { set; get; } = BackColor.primary; + [Parameter] + public EventCallback OnClick { set; get; } = new(); + public async Task DoOnClick() + { + await OnClick.InvokeAsync(); + } +} diff --git a/BlazorPages/BootStrapComponents/Generate.cs b/BlazorPages/BootStrapComponents/Generate.cs new file mode 100644 index 0000000..0c0aa29 --- /dev/null +++ b/BlazorPages/BootStrapComponents/Generate.cs @@ -0,0 +1,109 @@ +namespace BootStrapComponents +{ + public static class BT + { + public static string RoundedBorder => "rounded"; + public static string PullRight => "pull-right"; + public static string PullLeft => "pull-left"; + public static string PullCenter => "pull-center"; + public static string TextAlign(TextAlignment textAlignment) => "text-" + textAlignment; + + public static string CenterBlock => "mx-auto d-block"; + + public static string Button(ColorType colorType, bool outline = false) => "btn btn" + (outline ? "-outline" : "") + "-" + colorType; + public static string Background(ColorType colorType) => "bg-" + colorType; + public static string TextColor(ColorType colorType) => "text-" + colorType; + + #region Position + public static string Position(Postion p) => p.ToString().ToLower().Replace("_", "-"); + #endregion + #region Flex + public static string FlexDisplay => "d-flex"; + public static string FlexJustifyAround => "d-flex justify-content-around"; + public static string FlexJustifyBetween => "d-flex justify-content-between"; + + #endregion + + #region Shadows + public static string RegularShadow => "shadow"; + public static string SmallShadow => "shadow-sm"; + public static string LargeShadow => "shadow-lg"; + #endregion + + #region Opacity + public static string Opacity75 => "opacity-75"; + public static string Opacity50 => "opacity-50"; + + public static string Opacity25 => "opacity-25"; + + #endregion + + #region Containers + public static string FormFloating => "form-floating"; + public static string Row => "row"; + public static string Col(int i) => $"col-{i}"; + public static string DisplayBlock => "d-block"; + + #endregion + + #region Margins + public static string Margin(int m) => $"m-{m}"; + public static string MarginLeft(int m) => $"ml-{m}"; + + public static string MarginRight(int m) => $"mr-{m}"; + + public static string MarginBottom(int m) => $"mb-{m}"; + public static string MarginTop(int m) => $"mt-{m}"; + + public static string Padding(int m) => $"p-{m}"; + public static string PaddingLeft(int m) => $"pl-{m}"; + + public static string PaddingRight(int m) => $"pr-{m}"; + + public static string PaddingBottom(int m) => $"pb-{m}"; + public static string PaddingTop(int m) => $"pt-{m}"; + #endregion + + public static class Icons + { + public static string Copy => "bi bi-clipboard-fill"; + + } + + #region Form controls + public static string Input => "form-control"; + #endregion + } + public static class Styles + { + public static string VerticalSelfAlign(TextAlignment alignment) => $"align-self:{alignment};"; + public static string ToRightGradientBackColor(string color) => $"background-image:linear-gradient(to right, {color}, transparent)"; + public static string ToLeftGradientBackColor(string color) => $"background-image:linear-gradient(to left, {color}, transparent)"; + + } + public enum ColorType + { + primary, + secondary, + success, + danger, + warning, + info, + light, + dark, + white + } + public enum Postion + { + fixed_top, + sticky_top, + fixed_bottom, + sticky_bottom, + Position_Static, + Position_relative, + Position_absolute, + Position_Fixed, + Position_sticky + } + +} diff --git a/BlazorPages/BootStrapComponents/Jumbotron.razor b/BlazorPages/BootStrapComponents/Jumbotron.razor new file mode 100644 index 0000000..239c2c0 --- /dev/null +++ b/BlazorPages/BootStrapComponents/Jumbotron.razor @@ -0,0 +1,8 @@ +@namespace BootStrapComponents +@inherits BaseBootStrapComponent +
+ @ChildContent +
+@code { + +} diff --git a/BlazorPages/Dependency.cs b/BlazorPages/Dependency.cs new file mode 100644 index 0000000..1dc91ab --- /dev/null +++ b/BlazorPages/Dependency.cs @@ -0,0 +1,42 @@ +using AbrBlazorTools; +using ApiUtils; +using Blazored.LocalStorage; +using BlazorPages.Tools; +using CurrieTechnologies.Razor.SweetAlert2; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BlazorPages +{ + public static class Dependency + { + public static void Inject(this IServiceCollection Services, bool isMobileApp = false) + { + Statics.IsFromMobileApp = isMobileApp; + #region Tools + ///libs: + Services.AddBlazoredLocalStorage(config => config.JsonSerializerOptions.WriteIndented = true); + Services.AddSweetAlert2(); + //////// + Services.AddScoped(); + Services.AddScoped(); + Services.AddScoped(); + Services.AddScoped(); + #endregion + + #region API + Services.AddScoped(); + + #endregion + + Services.AddScoped(sp => new HttpClient()); + + + + } + } +} diff --git a/BlazorPages/Pages/Components/BaseComponent.cs b/BlazorPages/Pages/Components/BaseComponent.cs new file mode 100644 index 0000000..482f7ec --- /dev/null +++ b/BlazorPages/Pages/Components/BaseComponent.cs @@ -0,0 +1,8 @@ +using Microsoft.AspNetCore.Components; + +namespace Components +{ + public class BaseComponent:ComponentBase + { + } +} diff --git a/BlazorPages/Pages/Components/FloatingLabelInput.razor b/BlazorPages/Pages/Components/FloatingLabelInput.razor new file mode 100644 index 0000000..937944c --- /dev/null +++ b/BlazorPages/Pages/Components/FloatingLabelInput.razor @@ -0,0 +1,37 @@ +@namespace Components +
+ + + +
+ +@code { + [Parameter] + public string PlaceHolder { set; get; } + + private string _value; + + [Parameter] + public string BindingValue + { + get => _value; + set + { + if (_value == value) return; + _value = value; + BindingValueChanged.InvokeAsync(value); + ChangeMethod.InvokeAsync(); + } + } + + [Parameter] + public EventCallback BindingValueChanged { get; set; } + [Parameter] + public string Type { set; get; } = "text"; + [Parameter] + public string CssClass{ set; get; } + [Parameter] + public int TopMargin { set; get; } = 3; + [Parameter] public EventCallback ChangeMethod { get; set; } = new(); + +} diff --git a/BlazorPages/Pages/Index.razor b/BlazorPages/Pages/Index.razor new file mode 100644 index 0000000..d634392 --- /dev/null +++ b/BlazorPages/Pages/Index.razor @@ -0,0 +1,56 @@ +@using BootStrapComponents +@using Components +@using Models.Identity +@using Newtonsoft.Json +@using BlazorPages.Tools +@page "/" +@layout LayoutWithoutMenu + + +@if (DataGotten) +{ + +} +
+
+

+ © تمامی حقوق برای حقتو محفوظ میباشد +

+
+

+ ورژن 1.0 +

+
+ +@code { + public bool DataGotten { set; get; } + + protected override async void OnInitialized() + { + var hasToken = await LocalStorage.ContainKeyAsync(Statics.LoginTokenKey); + if (hasToken) + { + var token = await LocalStorage.GetItemAsStringAsync(Statics.LoginTokenKey); + var res = await _userUtils.CheckLogin(goToLogin: false); + var result = + JsonConvert.DeserializeObject( + await res.Content.ReadAsStringAsync()); + if (res.IsSuccessStatusCode) + { + await LoadingSpinner.HideLoading(); + Statics.CurrentLoginInfo = result; + if (!result.HasName) + NavManager.NavigateTo("/NameAndEmail"); + else + NavManager.NavigateTo("/dashboard"); + } + } + DataGotten = true; + StateHasChanged(); + } + +} diff --git a/BlazorPages/Pages/Login/Login.razor b/BlazorPages/Pages/Login/Login.razor new file mode 100644 index 0000000..8df6edc --- /dev/null +++ b/BlazorPages/Pages/Login/Login.razor @@ -0,0 +1,128 @@ +@page "/login" +@using BootStrapComponents +@using Components +@using Models.Identity +@layout LayoutWithoutMenu + + + + + + + + + + + +@code { + private bool WaitForOtpMode { get; set; } = true; + protected OTPLoginModel OtpLoginModel { get; set; } = new(); + protected bool WaitForOtp { set; get; } = false; + public async void Submit() + { + if (WaitForOtp) + await RequestLogin(); + else + await RequestVerificationCode(); + } + protected async Task RequestVerificationCode() + { + var response = await _userUtils.SendVerificationRequest(OtpLoginModel); + if (response.IsSuccessStatusCode) + WaitForOtp = true; + StateHasChanged(); + } + protected LoginModel LoginModel { get; set; } = new(); + + + protected async Task RequestLogin() + { + LoginModel.Username = OtpLoginModel.Username; + var response = await _userUtils.LoginWithPasswordRequest(LoginModel); + if (response.IsSuccessStatusCode) + { + var result = await response.Content.ReadFromJsonAsync(); + await LocalStorage.SetItemAsync(Statics.LoginTokenKey, result.AccessToken); + NavManager.NavigateTo("/dashboard"); + + } + } + +} \ No newline at end of file diff --git a/BlazorPages/Shared/DialogBox.razor b/BlazorPages/Shared/DialogBox.razor new file mode 100644 index 0000000..418f05b --- /dev/null +++ b/BlazorPages/Shared/DialogBox.razor @@ -0,0 +1,33 @@ + + +@code +{ + [Parameter] + public bool Visible { get; set; } + [Parameter] + public string DialogId { get; set; } = "exampleModal"; + [Parameter] + public string Title { get; set; } + [Parameter] + public RenderFragment DialogBody { get; set; } + + private void ToggleShowDialog() + { + Visible = false; + StateHasChanged(); + } +} diff --git a/BlazorPages/Shared/DialogFormComponents/InputTextDialog.razor b/BlazorPages/Shared/DialogFormComponents/InputTextDialog.razor new file mode 100644 index 0000000..4658464 --- /dev/null +++ b/BlazorPages/Shared/DialogFormComponents/InputTextDialog.razor @@ -0,0 +1,15 @@ +@typeparam T +
+
+ + @* *@ +
+
+@code { + [Parameter] + public string FieldOfModel { get; set; } + + [Parameter] + public EventCallback FieldOfModelChanged { get; set; } + +} \ No newline at end of file diff --git a/BlazorPages/Shared/Icons/CashIcon.razor b/BlazorPages/Shared/Icons/CashIcon.razor new file mode 100644 index 0000000..d5ba367 --- /dev/null +++ b/BlazorPages/Shared/Icons/CashIcon.razor @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorPages/Shared/LayoutWithoutMenu.razor b/BlazorPages/Shared/LayoutWithoutMenu.razor new file mode 100644 index 0000000..4395c48 --- /dev/null +++ b/BlazorPages/Shared/LayoutWithoutMenu.razor @@ -0,0 +1,56 @@ +@inherits LayoutComponentBase +@using Components +@using Newtonsoft.Json +@using Models.Identity +@inject ILoadingSpinner _LoadingSpinner + + + + @Body + +@code +{ + + + protected override async void OnAfterRender(bool firstRender) + { + if (firstRender) + await CheckLogin(); + base.OnAfterRender(firstRender); + } + + async Task CheckLogin() + { + Console.WriteLine("" + Statics.LastCheck); + Console.WriteLine("checking login..."); + Statics.LastCheck = DateTime.Now; + var hasToken = await LocalStorage.ContainKeyAsync(Statics.LoginTokenKey); + if (hasToken) + { + var token = await LocalStorage.GetItemAsStringAsync(Statics.LoginTokenKey); + var res = await _userUtils.CheckLogin(goToLogin: false); + if (res.IsSuccessStatusCode) + { + var result = + JsonConvert.DeserializeObject( + await res.Content.ReadAsStringAsync()); + await _LoadingSpinner.HideLoading(); + Statics.CurrentLoginInfo = result; + if (!result.HasName) + NavManager.NavigateTo("/NameAndEmail"); + else + NavManager.NavigateTo("/dashboard"); + } + await _LoadingSpinner.HideLoading(); + StateHasChanged(); + } + } + + private async void SignOut() + { + await LocalStorage.RemoveItemAsync(Statics.LoginTokenKey); + await LocalStorage.RemoveItemAsync(Statics.RefreshTokenKey); + NavManager.NavigateTo("/login"); + } + +} \ No newline at end of file diff --git a/BlazorPages/Shared/MainLayout.razor b/BlazorPages/Shared/MainLayout.razor new file mode 100644 index 0000000..a115aa6 --- /dev/null +++ b/BlazorPages/Shared/MainLayout.razor @@ -0,0 +1,197 @@ +@using Components +@using Newtonsoft.Json +@using Models.Identity +@inject ILoadingSpinner _LoadingSpinner +@inherits LayoutComponentBase + + + +
+ @*Top Header*@ +
+
+ + + +
+ +
+
+
+ @*end of Top Header*@ +
+ @Body +
+ @*Footer*@ +
+ +
+ +
+ داشبورد +
+
+ +
+ دعوی جدید +
+ +
+ +
+ پروفایل +
+ +
+ @*End Of Footer*@ + +
+ + +
+ +@code +{ + public int MenuWidth { set; get; } = 0; + public bool ShowMenu { set; get; } = false; + public bool MenuIsChanging { set; get; } = false; + protected async Task ToggleMenu(bool close = false) + { + if (MenuIsChanging) + return; + MenuIsChanging = true; + if (close) + { + Console.WriteLine("closing menu"); + while (MenuWidth > 0) + { + MenuWidth = Math.Max(MenuWidth -= 2, 0); + StateHasChanged(); + await Task.Delay(5); + } + MenuIsChanging = false; + return; + } + else + { + Console.WriteLine("opening menu"); + while (MenuWidth < 60) + { + Console.WriteLine(MenuWidth); + MenuWidth = Math.Min(MenuWidth += 2, 60); + StateHasChanged(); + await Task.Delay(5); + } + MenuIsChanging = false; + + } + } + + protected override async void OnAfterRender(bool firstRender) + { + if (firstRender) + await CheckLogin(); + base.OnAfterRender(firstRender); + NavManager.LocationChanged += HideMenu; + } + private void HideMenu(object sender, LocationChangedEventArgs e) + { + MenuWidth = 0; + StateHasChanged(); + } + async Task CheckLogin() + { + Console.WriteLine("" + Statics.LastCheck); + if (Statics.LastCheck.HasValue && DateTime.Now.Subtract(Statics.LastCheck.Value).TotalMinutes < 5) + { + Console.WriteLine("less than 5 minutes login check"); + base.OnInitialized(); + return; + } + Console.WriteLine("checking login..."); + Statics.LastCheck = DateTime.Now; + var hasToken = await LocalStorage.ContainKeyAsync(Statics.LoginTokenKey); + if (!hasToken) + NavManager.NavigateTo("/"); + else + { + var token = await LocalStorage.GetItemAsStringAsync(Statics.LoginTokenKey); + var res = await _userUtils.CheckLogin(); + + if (res.StatusCode == System.Net.HttpStatusCode.Unauthorized) + { + var refreshRes = await _userUtils.RefreshToken(new RefreshTokenModel + { + Token = token + }); + if (refreshRes.IsSuccessStatusCode) + { + var newToken = JsonConvert.DeserializeObject(await refreshRes.Content.ReadAsStringAsync()); + Statics.LoginTokenKey = newToken.AccessToken; + Statics.RefreshTokenKey = newToken.RefreshToken; + await LocalStorage.SetItemAsync(Statics.LoginTokenKey, Statics.LoginTokenKey); + await LocalStorage.SetItemAsync(Statics.RefreshTokenKey, Statics.RefreshTokenKey); + } + } + if (!res.IsSuccessStatusCode) + { + await _LoadingSpinner.HideLoading(); + await _sweetAlertService.ShowSwal(title: "", message: "نشست منقضی شد،لطفا مجددا وارد شوید", SweetAlertIcon.Error); + NavManager.NavigateTo("/login"); + } + else + { + var result = + JsonConvert.DeserializeObject( + await res.Content.ReadAsStringAsync()); + Statics.CurrentLoginInfo = result; + } + await _LoadingSpinner.HideLoading(); + StateHasChanged(); + } + } + + private async void SignOut() + { + await LocalStorage.RemoveItemAsync(Statics.LoginTokenKey); + await LocalStorage.RemoveItemAsync(Statics.RefreshTokenKey); + NavManager.NavigateTo("/login"); + } + +} diff --git a/BlazorPages/Shared/MainLayout.razor.css b/BlazorPages/Shared/MainLayout.razor.css new file mode 100644 index 0000000..c865427 --- /dev/null +++ b/BlazorPages/Shared/MainLayout.razor.css @@ -0,0 +1,81 @@ +.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:not(.auth) { + display: none; + } + + .top-row.auth { + 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/BlazorPages/Shared/NavMenu.razor b/BlazorPages/Shared/NavMenu.razor new file mode 100644 index 0000000..a206e4c --- /dev/null +++ b/BlazorPages/Shared/NavMenu.razor @@ -0,0 +1,70 @@ + + + + +
+ +
+ +@code { + private bool collapseNavMenu = true; + + private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; + + private void ToggleNavMenu() + { + collapseNavMenu = !collapseNavMenu; + } + private async Task Signout() + { + var confirm = await SwalUtils.ShowSwal(title: "", message: "از خروج اطمینان دارید؟", icon: SweetAlertIcon.Question); + if (!confirm.IsConfirmed) + return; + await LocalStorage.RemoveItemAsync(Statics.LoginTokenKey); + NavManager.NavigateTo("/Login"); + + } +} diff --git a/BlazorPages/Shared/NavMenu.razor.css b/BlazorPages/Shared/NavMenu.razor.css new file mode 100644 index 0000000..4f1488a --- /dev/null +++ b/BlazorPages/Shared/NavMenu.razor.css @@ -0,0 +1,65 @@ + + +.navbar-toggler { + background-color: rgba(255, 255, 255, 0.1); +} + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.oi { + width: 2rem; + font-size: 1.1rem; + vertical-align: text-top; + top: -2px; +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep a { + color: #d7d7d7; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + } + +.nav-item ::deep a.active { + background-color: rgba(255,255,255,0.25); + color: white; +} + +.nav-item ::deep a:hover { + background-color: rgba(255,255,255,0.1); + color: white; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } +} + diff --git a/BlazorPages/Shared/ShowDialogButton.razor b/BlazorPages/Shared/ShowDialogButton.razor new file mode 100644 index 0000000..804e4b9 --- /dev/null +++ b/BlazorPages/Shared/ShowDialogButton.razor @@ -0,0 +1,25 @@ + + +@code +{ + [Parameter] + public EventCallback OnclickFunc { get; set; } + + [Parameter] + public string ButtonName { get; set; } + + [Parameter] + public string CustomStyleClass { get; set; } = "btn-primary"; + + [Parameter] + public string DialogId { get; set; } = "#exampleModal"; + + protected override void OnInitialized() + { + if (DialogId[0] != '#') + DialogId = $"#{DialogId}"; + base.OnInitialized(); + } +} diff --git a/BlazorPages/Shared/TopBar.razor b/BlazorPages/Shared/TopBar.razor new file mode 100644 index 0000000..16897b9 --- /dev/null +++ b/BlazorPages/Shared/TopBar.razor @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/BlazorPages/Tools/BrowserTools.cs b/BlazorPages/Tools/BrowserTools.cs new file mode 100644 index 0000000..75483da --- /dev/null +++ b/BlazorPages/Tools/BrowserTools.cs @@ -0,0 +1,65 @@ +using Microsoft.JSInterop; + +namespace BlazorPages.Tools +{ + public class BrowserTools : IBrowserTools + { + private readonly IJSRuntime _js; + + public BrowserTools(IJSRuntime js) + { + _js = js; + } + + public async Task GetDimensions() + { + return await _js.InvokeAsync("methods.getDimensions"); + } + public async Task CopyText(string text) + { + return _js.InvokeVoidAsync("navigator.clipboard.writeText", text); + } + + public async Task PrepareResponsiveTable() + { + await _js.InvokeVoidAsync("methods.PrepareResponsiveTable"); + + } + + public async Task GetInputValueById(string id) + { + return await _js.InvokeAsync("AbrMethods.getInputValue", id); + } + + public async Task GetInputValueByIdAndReplacePersianNumbers(string id) + { + var text = await GetInputValueById(id); + var digits = new string[] { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" }; + var english = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + for (var i = 0; i < digits.Length; i++) + text = text.Replace(digits[i], english[i]); + return text; + } + + public async Task ScrollToEnd() + { + await _js.InvokeVoidAsync("methods.ScrollToEnd"); + + } + } + + public class BrowserDimension + { + public int Width { get; set; } + public int Height { get; set; } + } + public interface IBrowserTools + { + Task GetDimensions(); + Task CopyText(string text); + Task PrepareResponsiveTable(); + Task GetInputValueById(string id); + Task GetInputValueByIdAndReplacePersianNumbers(string id); + Task ScrollToEnd(); + } +} diff --git a/BlazorPages/Tools/DateTimeExtension.cs b/BlazorPages/Tools/DateTimeExtension.cs new file mode 100644 index 0000000..97e2cb7 --- /dev/null +++ b/BlazorPages/Tools/DateTimeExtension.cs @@ -0,0 +1,178 @@ +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Globalization; + +namespace BlazorPages.Tools +{ + public static class DateTimeExtension + { + + public static string ComputedDateTime(this DateTime InsertDateTime) + { + var persianCalender = new PersianCalendar(); + var year = persianCalender.GetYear(InsertDateTime); + var month = persianCalender.GetMonth(InsertDateTime); + var day = persianCalender.GetDayOfMonth(InsertDateTime); + var hour = persianCalender.GetHour(InsertDateTime); + var minute = persianCalender.GetMinute(InsertDateTime); + var second = persianCalender.GetSecond(InsertDateTime); + var computed = string.Format("{0}-{1}-{2}-{3}{4}{5}", year, + month < 10 ? string.Format("0{0}", month) : month.ToString(), + day < 10 ? string.Format("0{0}", day) : day.ToString(), + hour < 10 ? string.Format("0{0}", hour) : hour.ToString(), + minute < 10 ? string.Format("0{0}", minute) : minute.ToString(), + second < 10 ? string.Format("0{0}", second) : second.ToString()); + return computed; + + } + public static string GetPersianDate(this DateTime value, bool showDayName, bool showMonthName, bool showTime) + { + if (Statics.Culture == Statics.CultureType.En) + return value.ToString(); + var persianCalender = new PersianCalendar(); + var year = persianCalender.GetYear(value); + var month = persianCalender.GetMonth(value); + var day = persianCalender.GetDayOfMonth(value); + var s = string.Format(showMonthName ? "{2} {1} {0}" : "{0}/{1}/{2}", year, showMonthName ? month.GetMonthName() : month.ToString(""), day); + if (showDayName) + s = string.Format("{0} {1}", persianCalender.GetDayOfWeek(value).GetDayName(), s); + if (showTime) + s = string.Format("{0} {1}:{2}", s, value.Hour, value.Minute); + return s; + } + public static string GetPersianDayName(this DateTime value) + { + var persianCalender = new PersianCalendar(); + var s = persianCalender.GetDayOfWeek(value).GetDayName(); + return s; + } + public static string GetPersianMonthName(this DateTime value) + { + var persianCalender = new PersianCalendar(); + var s = persianCalender.GetMonth(value).GetMonthName(); + return s; + } + public static int GetPersianDayInt(this DateTime value) + { + var persianCalender = new PersianCalendar(); + var s = persianCalender.GetDayOfMonth(value); + return s; + } + + public static string GetPersianDate(this DateTime value) + { + return value.GetPersianDate(true, true, true); + } + public static string GetPersianDate(this DateTime? value) + { + return value.HasValue ? value.Value.GetPersianDate(true, true, true) : ""; + } + public static string GetPersianDate(this DateTime? value, bool showDayName) + { + return value.HasValue ? value.Value.GetPersianDate(showDayName, false, false) : ""; + } + public static string GetPersianDate(this DateTime value, bool showDayName) + { + return value.GetPersianDate(showDayName, false, false); + } + public static string GetPersianDate(this DateTime value, bool showDayName, bool showTime) + { + return value.GetPersianDate(showDayName, false, showTime); + } + public static string GetPersianDateAsText(this DateTime value, bool showDayName, bool showTime) + { + value = value.ToUniversalTime().ToLocalTime(); + var minutes = (int)DateTime.Now.Subtract(value).TotalMinutes; + var seconds = (int)DateTime.Now.Subtract(value).TotalSeconds; + + if (minutes < 1) + if (Statics.Culture == Statics.CultureType.Fa) + return $"{seconds} ثانیه قبل"; + else + return $"{seconds} Second(s) ago"; + + else if (minutes < 60) + if (Statics.Culture == Statics.CultureType.Fa) + + return $"{minutes} دقیقه قبل"; + else + return $"{minutes} Minute(s) ago"; + + return value.GetPersianDate(showDayName, false, showTime); + } + private static string GetMonthName(this int month) + { + switch (month) + { + case 1: + return "فروردین"; + case 2: + return "اردیبهشت"; + case 3: + return "خرداد"; + case 4: + return "تیر"; + case 5: + return "امرداد"; + case 6: + return "شهریور"; + case 7: + return "مهر"; + case 8: + return "آبان"; + case 9: + return "آذر"; + case 10: + return "دی"; + case 11: + return "بهمن"; + case 12: + return "اسفند"; + default: return ""; + } + } + + public static string GetDayName(this DayOfWeek day) + { + switch (day) + { + case DayOfWeek.Friday: + return "جمعه"; + case DayOfWeek.Monday: + return "دوشنبه"; + case DayOfWeek.Saturday: + return "شنبه"; + case DayOfWeek.Sunday: + return "یک شنبه"; + case DayOfWeek.Thursday: + return "پنج شنبه"; + case DayOfWeek.Tuesday: + return "سه شنبه"; + case DayOfWeek.Wednesday: + return "چهار شنبه"; + default: + return ""; + } + } + } + + public enum PersianDays + { + [Display(Name = "شنبه")] + Saturday = DayOfWeek.Saturday, + [Display(Name = "یکشنبه")] + Sunday = DayOfWeek.Sunday, + [Display(Name = "دوشنبه")] + Monday = DayOfWeek.Monday, + [Display(Name = "سه شنبه")] + Tuesday = DayOfWeek.Tuesday, + [Display(Name = "چهار شنبه")] + Wednesday = DayOfWeek.Wednesday, + [Display(Name = "پنج شنبه")] + Thursday = DayOfWeek.Thursday, + [Display(Name = "چمعه")] + Friday = DayOfWeek.Friday, + + } +} \ No newline at end of file diff --git a/BlazorPages/Tools/HttpClientWithLoginToken.cs b/BlazorPages/Tools/HttpClientWithLoginToken.cs new file mode 100644 index 0000000..a57b5e5 --- /dev/null +++ b/BlazorPages/Tools/HttpClientWithLoginToken.cs @@ -0,0 +1,234 @@ +using Blazored.LocalStorage; +using CurrieTechnologies.Razor.SweetAlert2; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Net.Http.Json; +using System.Security.Cryptography; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using BlazorPages.Tools; + +namespace AbrBlazorTools +{ + public class HttpClientWithLoginToken : IHttpClientWithLoginToken + { + private readonly HttpClient _httpClient = new HttpClient(); + private readonly ILocalStorageService _localStorage; + private readonly CurrieTechnologies.Razor.SweetAlert2.SweetAlertService _swal; + private readonly AbrBlazorTools.ILoadingSpinner _loadingSpinner; + private readonly NavigationManager _navigationManager; + private readonly IBrowserTools _browserTools; + + public HttpClientWithLoginToken(ILocalStorageService localStorage, CurrieTechnologies.Razor.SweetAlert2.SweetAlertService swal + , AbrBlazorTools.ILoadingSpinner loadingSpinner, NavigationManager navigationManager, IBrowserTools browserTools) + { + _localStorage = localStorage; + _swal = swal; + _loadingSpinner = loadingSpinner; + _navigationManager = navigationManager; + _browserTools = browserTools; + _httpClient.BaseAddress = new Uri(Statics.BaseAddress); + } + public async Task GetInstance() + { + var hasToken = await _localStorage.ContainKeyAsync(Statics.LoginTokenKey); + if (hasToken) + { + var token = await _localStorage.GetItemAsStringAsync(Statics.LoginTokenKey); + if (token.StartsWith('"')) + token = token.Substring(1); + if (token.EndsWith('"')) + token = token.Substring(0, token.Length - 1); + _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); + } + return _httpClient; + } + + public async Task HttpGet(string url, bool hasLoading = true, bool goToLogin = true) + { + var res=new HttpResponseMessage(); + Console.WriteLine("Get : " + url); + + if (hasLoading) + await _loadingSpinner.ShowLoading(); + var http = await GetInstance(); + try + { + res= await http.GetAsync(url); + await _loadingSpinner.HideLoading(); + if (res.IsSuccessStatusCode) + { + + return res; + } + + if (res.StatusCode == HttpStatusCode.Unauthorized) + { + await _loadingSpinner.HideLoading(); + if (goToLogin) + { + Console.WriteLine("خطای دسترسی"); + _navigationManager.NavigateTo("/"); + } + } + else if (res.StatusCode == HttpStatusCode.BadRequest) + { + await _swal.FireAsync( message: res.ReasonPhrase, icon: SweetAlertIcon.Error); + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + await _loadingSpinner.HideLoading(); + await _swal.FireAsync( message: res.ReasonPhrase, icon: SweetAlertIcon.Error); + + } + await _loadingSpinner.HideLoading(); + return new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest }; + } + public async Task HttpDelete(string url, bool hasLoading = true) + { + Console.WriteLine("Delete : " + url); + var res = new HttpResponseMessage(); + if (hasLoading) + await _loadingSpinner.ShowLoading(); + var http = await GetInstance(); + try + { + res = await http.DeleteAsync(url); + await _loadingSpinner.HideLoading(); + if (res.IsSuccessStatusCode) + { + + return res; + } + if (res.StatusCode == HttpStatusCode.Unauthorized) + { + await _loadingSpinner.HideLoading(); + _navigationManager.NavigateTo("/"); + } + else + { + dynamic error = JsonConvert.DeserializeObject(await res.Content.ReadAsStringAsync()); + await _swal.FireAsync( message: await ErrorMessage(res), icon: SweetAlertIcon.Error); + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + await _loadingSpinner.HideLoading(); + dynamic error = JsonConvert.DeserializeObject(await res.Content.ReadAsStringAsync()); + await _swal.FireAsync( message: await ErrorMessage(res), icon: SweetAlertIcon.Error); + Statics.CurrentLoginInfo = new(); + } + await _loadingSpinner.HideLoading(); + return new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest }; + } + + public async Task HttpPut(string url, object model, bool hasLoading = true) + { + Console.WriteLine("Put : " + url); + var res = new HttpResponseMessage(); + + if (hasLoading) + await _loadingSpinner.ShowLoading(); + var http = await GetInstance(); + try + { + var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"); + res = await http.PutAsync(url, content); + await _loadingSpinner.HideLoading(); + if (res.IsSuccessStatusCode) + { + + return res; + } + if (res.StatusCode == HttpStatusCode.Unauthorized) + { + await _loadingSpinner.HideLoading(); + Statics.CurrentLoginInfo = new(); + } + else + { + await _swal.FireAsync( message: await ErrorMessage(res), icon: SweetAlertIcon.Error); + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + await _loadingSpinner.HideLoading(); + await _swal.FireAsync( message: await ErrorMessage(res), icon: SweetAlertIcon.Error); + Statics.CurrentLoginInfo = new(); + } + await _loadingSpinner.HideLoading(); + return new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest }; + } + + public async Task HttpPost(string url, object model, bool hasLoading = true, bool multiPart = false) + { + Console.WriteLine("Post : " + url); + var res = new HttpResponseMessage(); + + if (hasLoading) + await _loadingSpinner.ShowLoading(); + var http = await GetInstance(); + try + { + res = new HttpResponseMessage(); + var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"); + res = await http.PostAsync(url, content); + + await _loadingSpinner.HideLoading(); + if (res.IsSuccessStatusCode) + { + + return res; + } + if (res.StatusCode == HttpStatusCode.Unauthorized) + { + await _loadingSpinner.HideLoading(); + _navigationManager.NavigateTo("/"); + } + else + { + await _swal.FireAsync( message: await ErrorMessage(res), icon: SweetAlertIcon.Error); + } + } + catch (Exception ex) + { + Console.WriteLine(ex); + await _loadingSpinner.HideLoading(); + } + await _loadingSpinner.HideLoading(); + return res; + } + private async Task ErrorMessage(HttpResponseMessage res) + { + var errStr = "خطای نامشخص"; + dynamic error = JsonConvert.DeserializeObject(await res.Content.ReadAsStringAsync()); + if (error.errors != null) + { + errStr = (string)("" + error.errors); + if (errStr.Contains(":")) + errStr = errStr.Split(':')[1].Replace(":", "").Replace("{", "") + .Replace("}", "").Replace("[", "").Replace("]","").Replace("\"",""); + } + return errStr; + } + } + public interface IHttpClientWithLoginToken + { + Task GetInstance(); + Task HttpPost(string url, object model, bool hasLoading = true, bool multiPart = false); + Task HttpGet(string url, bool hasLoading = true, bool goToLogin = true); + Task HttpDelete(string url, bool hasLoading = true); + Task HttpPut(string url, object model, bool hasLoading = true); + } +} diff --git a/BlazorPages/Tools/ILoadingSpiner.cs b/BlazorPages/Tools/ILoadingSpiner.cs new file mode 100644 index 0000000..436b9d0 --- /dev/null +++ b/BlazorPages/Tools/ILoadingSpiner.cs @@ -0,0 +1,32 @@ +using Microsoft.JSInterop; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace AbrBlazorTools +{ + public class LoadingSpinner : ILoadingSpinner + { + private readonly IJSRuntime _jSRuntime; + public LoadingSpinner(IJSRuntime jSRuntime) + { + _jSRuntime = jSRuntime; + } + public async Task HideLoading() + { + await Task.Delay(1000); + await _jSRuntime.InvokeVoidAsync("methods.HideLoading", null); + } + + public async Task ShowLoading() + { + await _jSRuntime.InvokeVoidAsync("methods.ShowLoading", null); + } + } + public interface ILoadingSpinner + { + Task ShowLoading(); + Task HideLoading(); + } +} diff --git a/BlazorPages/Tools/ISwalUtils.cs b/BlazorPages/Tools/ISwalUtils.cs new file mode 100644 index 0000000..9e0a251 --- /dev/null +++ b/BlazorPages/Tools/ISwalUtils.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using CurrieTechnologies.Razor.SweetAlert2; + +namespace BlazorPages.Tools +{ + public interface ISwalUtils + { + + public Task ShowToast(string message); + + public Task ShowSwal(string title, string message, SweetAlertIcon icon); + } + +} + diff --git a/BlazorPages/Tools/InfiniteScrollingItemsProviderRequest.cs b/BlazorPages/Tools/InfiniteScrollingItemsProviderRequest.cs new file mode 100644 index 0000000..e1d26c1 --- /dev/null +++ b/BlazorPages/Tools/InfiniteScrollingItemsProviderRequest.cs @@ -0,0 +1,20 @@ +namespace BlazorPages.Tools +{ + public sealed class InfiniteScrollingItemsProviderRequest + { + public InfiniteScrollingItemsProviderRequest(int startIndex, int page, CancellationToken cancellationToken) + { + StartIndex = startIndex; + CancellationToken = cancellationToken; + Page = page; + } + + public int StartIndex { get; } + public CancellationToken CancellationToken { get; } + + public int Page { get; } + } + + public delegate Task> ItemsProviderRequestDelegate(InfiniteScrollingItemsProviderRequest request); + +} diff --git a/BlazorPages/Tools/Statics.cs b/BlazorPages/Tools/Statics.cs new file mode 100644 index 0000000..922074d --- /dev/null +++ b/BlazorPages/Tools/Statics.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using Models.Identity; + +namespace BlazorPages.Tools +{ + public static class Statics + { + public const string TableClass = "table table-striped table-bordered border"; + public enum CultureType + { + En, + Fa + } + public static CultureType Culture = CultureType.Fa; + public static string LoginTokenKey = "SignIn"; + public static string RefreshTokenKey = "RefreshToken"; + public static string Agent = ""; + public static string FcmToken = "RefreshToken"; + public static CheckLoginResponse CurrentLoginInfo { get; set; } + public static DateTime? LastCheck { set; get; } + public static bool IsFromMobileApp { get; internal set; } + + public static string BaseAddress = "https://api.senso.farm/"; + //linux: + //public static string BaseAddress = "https://localhost:5001/"; + + public static string ReplaceNewLineWithBr(this string text) + { + var result = Regex.Replace(text, @"\r\n?|\n", "
"); + result = result.Replace("


", "
").Replace("

", "
"); + return result; + } + public static CultureInfo GetPersianCulture() + { + var culture = new CultureInfo("fa-IR"); + DateTimeFormatInfo formatInfo = culture.DateTimeFormat; + formatInfo.AbbreviatedDayNames = new[] { "ی", "د", "س", "چ", "پ", "ج", "ش" }; + formatInfo.DayNames = new[] { "یکشنبه", "دوشنبه", "سه شنبه", "چهار شنبه", "پنجشنبه", "جمعه", "شنبه" }; + var monthNames = new[] + { + "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", + "اسفند", + "", + }; + formatInfo.AbbreviatedMonthNames = + formatInfo.MonthNames = + formatInfo.MonthGenitiveNames = formatInfo.AbbreviatedMonthGenitiveNames = monthNames; + formatInfo.AMDesignator = "ق.ظ"; + formatInfo.PMDesignator = "ب.ظ"; + formatInfo.ShortDatePattern = "yyyy/MM/dd"; + formatInfo.LongDatePattern = "dddd, dd MMMM,yyyy"; + formatInfo.FirstDayOfWeek = DayOfWeek.Saturday; + Calendar cal = new PersianCalendar(); + FieldInfo fieldInfo = culture.GetType().GetField("calendar", BindingFlags.NonPublic | BindingFlags.Instance); + if (fieldInfo != null) + fieldInfo.SetValue(culture, cal); + FieldInfo info = formatInfo.GetType().GetField("calendar", BindingFlags.NonPublic | BindingFlags.Instance); + if (info != null) + info.SetValue(formatInfo, cal); + culture.NumberFormat.NumberDecimalSeparator = "/"; + culture.NumberFormat.DigitSubstitution = DigitShapes.NativeNational; + culture.NumberFormat.NumberNegativePattern = 0; + return culture; + } + } +} diff --git a/BlazorPages/Tools/SwalExtensions.cs b/BlazorPages/Tools/SwalExtensions.cs new file mode 100644 index 0000000..0fccf92 --- /dev/null +++ b/BlazorPages/Tools/SwalExtensions.cs @@ -0,0 +1,39 @@ +using CurrieTechnologies.Razor.SweetAlert2; + +namespace AbrBlazorTools; + +public static class SwalExtensions +{ + public static async Task ShowToast(this SweetAlertService service, string message) + { + return await service.FireAsync( + new SweetAlertOptions + { + Toast = true, + Text = message, + Timer = 5000 + }); + } + + + public static async Task ShowSwal(this SweetAlertService service, string title, string message, SweetAlertIcon icon) + { + if (icon == SweetAlertIcon.Question) + return await service.FireAsync(new SweetAlertOptions + { + ConfirmButtonText="Yes", + ShowConfirmButton = true, + ShowDenyButton = true, + ShowCloseButton = false, + Html = message, + Icon = icon, + Title = title, + }); + return await service.FireAsync(new SweetAlertOptions + { + Html = message, + Icon = icon, + Title = title, + }); + } +} \ No newline at end of file diff --git a/BlazorPages/Tools/SwalUtils.cs b/BlazorPages/Tools/SwalUtils.cs new file mode 100644 index 0000000..5377ea4 --- /dev/null +++ b/BlazorPages/Tools/SwalUtils.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using CurrieTechnologies.Razor.SweetAlert2; + +namespace BlazorPages.Tools +{ + public class SwalUtils : ISwalUtils + { + private readonly SweetAlertService _service; + public SwalUtils(SweetAlertService service) + { + _service = service; + } + + public async Task ShowToast(string message) + { + return await _service.FireAsync( + new SweetAlertOptions + { + Toast = true, + Text = message, + Timer = 5000, + ConfirmButtonText = "خُب" + }); + } + + + public async Task ShowSwal(string title, string message, SweetAlertIcon icon) + { + if (icon == SweetAlertIcon.Question) + return await _service.FireAsync(new SweetAlertOptions + { + ShowConfirmButton = true, + CancelButtonColor = "Red", + ShowCloseButton = false, + ShowCancelButton = true, + Html = message, + Icon = icon, + Title = title, + CancelButtonText = "انصراف", + ConfirmButtonText = "تائید" + }); + return await _service.FireAsync(new SweetAlertOptions + { + ShowConfirmButton = false, + ShowCloseButton = false, + ShowCancelButton = true, + Html = message, + Icon = icon, + Title = title, + CancelButtonText = "خًب" + }); + } + } + +} + diff --git a/BlazorPages/Tools/UriExtenssions.cs b/BlazorPages/Tools/UriExtenssions.cs new file mode 100644 index 0000000..1172d41 --- /dev/null +++ b/BlazorPages/Tools/UriExtenssions.cs @@ -0,0 +1,29 @@ +namespace BlazorPages.Tools +{ + public static class UriExtenssions + { + public static string GetQueryStringValue(string uri, string key) + { + try + { + var parts = uri.Split("?", options: StringSplitOptions.RemoveEmptyEntries); + if (parts.Length != 2) + return ""; + var qparts = parts[1].Split("&"); + foreach (var kv in qparts) + { + var k = kv.Split("=")[0]; + var v = kv.Split("=")[1]; + if (k.Equals(key, StringComparison.InvariantCultureIgnoreCase)) + return v; + } + return ""; + } + catch (Exception) + { + + return ""; + } + } + } +} diff --git a/BlazorPages/_Imports.razor b/BlazorPages/_Imports.razor new file mode 100644 index 0000000..827befd --- /dev/null +++ b/BlazorPages/_Imports.razor @@ -0,0 +1,24 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using BlazorPages.Tools +@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 AbrBlazorTools +@using CurrieTechnologies.Razor.SweetAlert2 +@using ApiUtils +@using BlazorPages.Shared +@using BootStrapComponents +@using Newtonsoft.Json +@inject Blazored.LocalStorage.ILocalStorageService LocalStorage +@inject NavigationManager NavManager; +@inject IJSRuntime JSRuntime +@inject ISwalUtils SwalUtils +@inject IBrowserTools BrowserTools +@inject IUserUtils _userUtils +@inject SweetAlertService _sweetAlertService +@inject ILoadingSpinner LoadingSpinner + diff --git a/BlazorPages/wwwroot/Panak-symbole-787x1024.png b/BlazorPages/wwwroot/Panak-symbole-787x1024.png new file mode 100644 index 0000000..f68543b Binary files /dev/null and b/BlazorPages/wwwroot/Panak-symbole-787x1024.png differ diff --git a/BlazorPages/wwwroot/assets/css/app.css b/BlazorPages/wwwroot/assets/css/app.css new file mode 100644 index 0000000..e70f53f --- /dev/null +++ b/BlazorPages/wwwroot/assets/css/app.css @@ -0,0 +1,47 @@ + + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } + +.text-justify { + text-align: justify; + line-height: 1.8em; +} diff --git a/BlazorPages/wwwroot/assets/css/base.css b/BlazorPages/wwwroot/assets/css/base.css new file mode 100644 index 0000000..42bcdc3 --- /dev/null +++ b/BlazorPages/wwwroot/assets/css/base.css @@ -0,0 +1,99 @@ +@font-face { + font-family: Vazir; + src: url('h/assets/fonts/Vazirmatn-Regular'); + src: url('/assets/fonts/Vazirmatn-Regular.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Regular.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Regular.woff') format('woff'), url('/assets/fonts/Vazirmatn-Regular.ttf') format('truetype'); + font-weight: normal; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Bold.eot'); + src: url('/assets/fonts/Vazirmatn-Bold.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Bold.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Bold.woff') format('woff'), url('/assets/fonts/Vazirmatn-Bold.ttf') format('truetype'); + font-weight: bold; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Thin.eot'); + src: url('/assets/fonts/Vazirmatn-Thin.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Thin.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Thin.woff') format('woff'), url('/assets/fonts/Vazirmatn-Thin.ttf') format('truetype'); + font-weight: 100; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Light.eot'); + src: url('/assets/fonts/Vazirmatn-Light.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Light.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Light.woff') format('woff'), url('/assets/fonts/Vazirmatn-Light.ttf') format('truetype'); + font-weight: 300; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Medium.eot'); + src: url('/assets/fonts/Vazirmatn-Medium.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Medium.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Medium.woff') format('woff'), url('/assets/fonts/Vazirmatn-Medium.ttf') format('truetype'); + font-weight: 500; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Black.eot'); + src: url('/assets/fonts/Vazirmatn-Black.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Black.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Black.woff') format('woff'), url('/assets/fonts/Vazirmatn-Black.ttf') format('truetype'); + font-weight: 900; + font-display: swap; +} +* { + font-family: Vazir !important; + *font-size: 2vh; +} + + *::-webkit-scrollbar { + width: 8px; + } + + *::-webkit-scrollbar-track { + border-radius: 8px; + background-color: #cacaca; + border: 1px solid #cacaca; + } + +::-webkit-scrollbar-thumb { + border-radius: 6px; + border: 3px solid transparent; + background-clip: content-box; + background-color: #e7e7e7; +} + + +.hamburger { + width: 200px; + height: 120px; + position: relative; + margin: 0 20px; +} +.hamburger { + &::before, &::after + +{ + content: ''; + position: absolute; + width: 100%; + height: 20px; + color: #333; + background-color: currentColor; + transition: all .45s ease-in-out; + &::before + +{ + top: 0; + transform: rotate(0); +} + +&::after { + bottom: 0; + box-shadow: 0 -50px currentColor; +} +} \ No newline at end of file diff --git a/BlazorPages/wwwroot/assets/css/login.css b/BlazorPages/wwwroot/assets/css/login.css new file mode 100644 index 0000000..c7180d3 --- /dev/null +++ b/BlazorPages/wwwroot/assets/css/login.css @@ -0,0 +1,1993 @@ +.splash-page { + width: 100%; + height: calc(100vh - 4rem); + background-image: linear-gradient(0deg, rgba(0, 0, 255, 0.2), rgba(0, 0, 255, 0.2)), url('../images/bg-intro.png'); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: column; + padding: 2rem 0; +} + +.dashboard { + width: 100%; + height: 100vh; + background-color: #f1f1f1; + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: column; +} + +.dashboard .dashboard-grid { + width: 100%; + height: 100% +} + +.splash-page.login { + padding-top: 4rem; + padding-bottom: 0; +} + +.splash-page .bottom { + display: flex; + align-items: center; + justify-content: space-around; + flex-direction: column; + gap: 1rem; +} + +.devider { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; +} + +.devider div:nth-child(1), +.devider div:nth-child(3) { + width: 45%; + height: 1px; + background-image: linear-gradient(to right, white, transparent); + +} + +.devider div:nth-child(2) { + width: 5px; + height: 5px; + background-color: white; +} + +.devider.white-bg div:nth-child(1), +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to right, #F4AD33, transparent); + +} + +.devider.white-bg div:nth-child(2) { + background-color: #F4AD33; +} + +.devider div:nth-child(3) { + background-image: linear-gradient(to left, white, transparent); +} + +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to left, #F4AD33, transparent); +} + +.css-33o7k0-MuiButtonBase-root-MuiButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 0; + padding: 0; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 0.875rem; + line-height: 1.75; + letter-spacing: 0.02857em; + text-transform: uppercase; + min-width: 64px; + padding: 6px 16px; + border-radius: 4px; + -webkit-transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + color: #fff; + background-color: #d32f2f; + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: blue; +} + +.css-1vx8qb9 { + width: 100%; + height: auto; + background-color: white; + border-radius: 30px 30px 0 0; + border-top: 4px solid #F4AD33; + padding: 2rem 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + -webkit-flex: 2; + -ms-flex: 2; + flex: 2; + overflow: auto; +} + +.css-1q2tlgs-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; +} + +.css-vnxi6v-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: gray; + font-size: 16px; +} + +.css-jw4se3-MuiFormControl-root-MuiTextField-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + min-width: 0; + padding: 0; + margin: 0; + border: 0; + vertical-align: top; + width: 70%; + text-align: center; + direction: ltr; +} + +.css-14s5rfu-MuiFormLabel-root-MuiInputLabel-root { + color: rgba(0, 0, 0, 0.6); + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + padding: 0; + position: relative; + display: block; + transform-origin: top left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 24px); + position: absolute; + left: 0; + top: 0; + -webkit-transform: translate(14px, 16px) scale(1); + -moz-transform: translate(14px, 16px) scale(1); + -ms-transform: translate(14px, 16px) scale(1); + transform: translate(14px, 16px) scale(1); + -webkit-transition: color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, -webkit-transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; + transition: color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; + z-index: 1; + pointer-events: none; +} + +.css-14s5rfu-MuiFormLabel-root-MuiInputLabel-root { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + color: rgba(0, 0, 0, 0.87); + box-sizing: border-box; + position: relative; + cursor: text; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + border-radius: 4px; +} + + +.css-1vx8qb9 { + width: 100%; + height: auto; + background-color: white; + border-radius: 30px 30px 0px 0px; + border-top: 4px solid rgb(244, 173, 51); + padding: 2rem 0px; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: justify; + justify-content: space-between; + flex-direction: column; + gap: 1rem; + flex: 2 1 0%; + overflow: hidden; +} + +.css-fyhhyl { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; +} + +.css-4htua2 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: gray; + font-size: 16px; +} + +.css-1f7zzfx { + display: inline-flex; + flex-direction: column; + position: relative; + min-width: 0px; + padding: 0px; + margin: 0px; + border: 0px; + vertical-align: top; + width: 70%; + text-align: center; + direction: ltr; +} + +.css-17yr7y2 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.5; + letter-spacing: 0.00938em; + color: black; + text-align: center; + font-size: 14px; + width: 70%; +} + +.css-1hw9j7s { + display: inline-flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + outline: 0px; + border: 0px; + margin: 0px; + cursor: pointer; + user-select: none; + vertical-align: middle; + appearance: none; + text-decoration: none; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 0.875rem; + line-height: 1.75; + letter-spacing: 0.02857em; + text-transform: uppercase; + min-width: 64px; + padding: 6px 16px; + border-radius: 4px; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + color: rgb(255, 255, 255); + background-color: rgb(25, 118, 210); + box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px; +} + +.css-1hw9j7s.Mui-disabled { + pointer-events: none; + cursor: default; + color: rgba(0, 0, 0, 0.26); + box-shadow: none; + background-color: rgba(0, 0, 0, 0.12); +} + +.css-1hw9j7s:hover { + text-decoration: none; + background-color: rgb(21, 101, 192); + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 4px -1px, rgba(0, 0, 0, 0.14) 0px 4px 5px 0px, rgba(0, 0, 0, 0.12) 0px 1px 10px 0px; +} + +.footer { + text-align: center; + padding: 1rem; + width: 100%; +} + +.css-p0rm37 { + color: rgba(0, 0, 0, 0.6); + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + padding: 0px; + display: block; + transform-origin: left top; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 24px); + position: absolute; + left: 0px; + top: 0px; + transform: translate(14px, 16px) scale(1); + transition: color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; + z-index: 1; + pointer-events: none; +} + +.css-1v4ccyo { + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + color: rgba(0, 0, 0, 0.87); + box-sizing: border-box; + cursor: text; + display: inline-flex; + -webkit-box-align: center; + align-items: center; + position: relative; + border-radius: 4px; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} + +a:hover { + color: #535bf2; +} + +.devider { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; +} + +.css-xzj0vu { + margin: 8px 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.5; + letter-spacing: 0.00938em; + color: black; +} + +.css-12wn12i { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.5; + letter-spacing: 0.00938em; + color: grey; + font-size: 14px; +} + +.css-1x5jdmq { + font: inherit; + letter-spacing: inherit; + color: currentcolor; + border: 0px; + box-sizing: content-box; + background: none; + height: 1.4375em; + margin: 0px; + -webkit-tap-highlight-color: transparent; + display: block; + min-width: 0px; + width: 100%; + animation-name: mui-auto-fill-cancel; + animation-duration: 10ms; + padding: 16.5px 14px; +} + +.css-igs3ac { + text-align: left; + position: absolute; + inset: -5px 0px 0px; + margin: 0px; + padding: 0px 8px; + pointer-events: none; + border-radius: inherit; + border-style: solid; + border-width: 1px; + overflow: hidden; + min-width: 0%; + border-color: rgba(0, 0, 0, 0.23); +} + +.devider div:nth-child(1) { + width: 45%; + height: 1px; + background-image: linear-gradient(to right, white, transparent); +} + +.devider.white-bg div:nth-child(1) { + background-image: linear-gradient(to right, #F4AD33, transparent); +} + +.devider div:nth-child(2) { + width: 5px; + height: 5px; + background-color: #fff; +} + +.devider.white-bg div:nth-child(2) { + background-color: #f4ad33; +} + +.devider div:nth-child(3) { + width: 45%; + height: 1px; + background-image: linear-gradient(to left, white, transparent); +} + +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to left, #F4AD33, transparent); +} + +.css-yjsfm1 { + float: unset; + width: auto; + overflow: hidden; + display: block; + padding: 0px; + height: 11px; + font-size: 0.75em; + visibility: hidden; + max-width: 0.01px; + transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms; + white-space: nowrap; +} + +.css-yjsfm1>span { + padding-left: 5px; + padding-right: 5px; + display: inline-block; + opacity: 0; + visibility: visible; +} + + +@keyframes mui-auto-fill-cancel { + 0% { + display: block; + display: block; + } + +} + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-VokD2.style-VokD2 { + top: 46px; + left: 668px; + height: 0px; + width: 0px; +} + +#style-Qemo7.style-Qemo7 { + top: 46px; + left: 868px; + height: 0px; + width: 0px; +} + +#style-ESCFC.style-ESCFC { + top: 145px; + left: 668px; + height: 0px; + width: 0px; +} + +#style-BNR6g.style-BNR6g { + top: 46px; + left: 666px; + height: 0px; + width: 0px; +} + +#style-GFFvA.style-GFFvA { + top: 14px; + left: 378px; + height: 0px; + width: 0px; +} + +#style-VVqsX.style-VVqsX { + top: 14px; + left: 1158px; + height: 0px; + width: 0px; +} + +#style-qjh4f.style-qjh4f { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-dZFJE.style-dZFJE { + top: 14px; + left: 376px; + height: 0px; + width: 0px; +} + +#style-JEQCP.style-JEQCP { + top: 0px; + left: 0px; + position: absolute; +} + +#snipcss-Webapp-container.style-ed2dZ { + right: 70px; + top: 374.3px; +} + +#style-Qkvp2.style-Qkvp2 { + touch-action: none; +} + +#style-bz1Qo.style-bz1Qo { + touch-action: none; +} + +#style-6KZe7.style-6KZe7 { + top: 14px; + left: 378px; + height: 0px; + width: 0px; +} + +#style-pIvvK.style-pIvvK { + top: 14px; + left: 1158px; + height: 0px; + width: 0px; +} + +#style-lMspy.style-lMspy { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-Z7wYp.style-Z7wYp { + top: 14px; + left: 376px; + height: 0px; + width: 0px; +} + +#style-BhfqZ.style-BhfqZ { + top: -2px; + left: 0px; + height: 0px; + width: 0px; +} + +#style-sjrsy.style-sjrsy { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-XMFxd.style-XMFxd { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-RB4oW.style-RB4oW { + top: -2px; + left: -2px; + height: 0px; + width: 0px; +} + +.css-oeby62 { + width: 100%; + height: auto; + background-color: white; + border-radius: 30px 30px 0px 0px; + border-top: 4px solid rgb(244, 173, 51); + padding: 2rem 0px; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: justify; + justify-content: space-between; + flex-direction: column; + gap: 1rem; +} + +.css-fyhhyl { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; +} + +.css-1dtr6u8 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: gray; + font-size: 15px; + text-align: center; +} + +.css-1f7zzfx { + display: inline-flex; + flex-direction: column; + position: relative; + min-width: 0px; + padding: 0px; + margin: 0px; + border: 0px; + vertical-align: top; + width: 70%; + text-align: center; + direction: ltr; +} + +.css-1hw9j7s { + display: inline-flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + outline: 0px; + border: 0px; + margin: 0px; + cursor: pointer; + user-select: none; + vertical-align: middle; + appearance: none; + text-decoration: none; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 0.875rem; + line-height: 1.75; + letter-spacing: 0.02857em; + text-transform: uppercase; + min-width: 64px; + padding: 6px 16px; + border-radius: 4px; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + color: rgb(255, 255, 255); + background-color: rgb(25, 118, 210); + box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px; +} + +.css-1hw9j7s.Mui-disabled { + pointer-events: none; + cursor: default; + color: rgba(0, 0, 0, 0.26); + box-shadow: none; + background-color: rgba(0, 0, 0, 0.12); +} + +.css-1hw9j7s:hover { + text-decoration: none; + background-color: rgb(21, 101, 192); + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 4px -1px, rgba(0, 0, 0, 0.14) 0px 4px 5px 0px, rgba(0, 0, 0, 0.12) 0px 1px 10px 0px; +} + +.css-pzdgve { + position: relative; + width: 100px; + height: 100px; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; +} + +.css-viw3r { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: rgb(81, 81, 81); + font-size: 16px; +} + +.devider { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; +} + +.css-15bsez5 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; + font-size: 16px; +} + +.css-12wn12i { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.5; + letter-spacing: 0.00938em; + color: grey; + font-size: 14px; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} + +a:hover { + color: #535bf2; +} + +.css-p0rm37 { + color: rgba(0, 0, 0, 0.6); + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + padding: 0px; + display: block; + transform-origin: left top; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 24px); + position: absolute; + left: 0px; + top: 0px; + transform: translate(14px, 16px) scale(1); + transition: color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; + z-index: 1; + pointer-events: none; +} + +.css-1v4ccyo { + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + color: rgba(0, 0, 0, 0.87); + box-sizing: border-box; + cursor: text; + display: inline-flex; + -webkit-box-align: center; + align-items: center; + position: relative; + border-radius: 4px; +} + +.css-1utujq6 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.235; + letter-spacing: 0.00735em; + color: rgb(244, 173, 51); + position: absolute; + font-size: 16px; +} + +.css-x1zqys { + display: inline-block; + transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + position: absolute; + color: rgb(244, 173, 51); +} + +.devider div:nth-child(1) { + width: 45%; + height: 1px; + background-image: linear-gradient(to right, white, transparent); +} + +.devider.white-bg div:nth-child(1) { + background-image: linear-gradient(to right, #F4AD33, transparent); +} + +.devider div:nth-child(2) { + width: 5px; + height: 5px; + background-color: #fff; +} + +.devider.white-bg div:nth-child(2) { + background-color: #f4ad33; +} + +.devider div:nth-child(3) { + width: 45%; + height: 1px; + background-image: linear-gradient(to left, white, transparent); +} + +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to left, #F4AD33, transparent); +} + +.css-1x5jdmq { + font: inherit; + letter-spacing: inherit; + color: currentcolor; + border: 0px; + box-sizing: content-box; + background: none; + height: 1.4375em; + margin: 0px; + -webkit-tap-highlight-color: transparent; + display: block; + min-width: 0px; + width: 100%; + animation-name: mui-auto-fill-cancel; + animation-duration: 10ms; + padding: 16.5px 14px; +} + +.css-igs3ac { + text-align: left; + position: absolute; + inset: -5px 0px 0px; + margin: 0px; + padding: 0px 8px; + pointer-events: none; + border-radius: inherit; + border-style: solid; + border-width: 1px; + overflow: hidden; + min-width: 0%; + border-color: rgba(0, 0, 0, 0.23); +} + +.css-13o7eu2 { + display: block; +} + +.css-yjsfm1 { + float: unset; + width: auto; + overflow: hidden; + display: block; + padding: 0px; + height: 11px; + font-size: 0.75em; + visibility: hidden; + max-width: 0.01px; + transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms; + white-space: nowrap; +} + +.css-yjsfm1>span { + padding-left: 5px; + padding-right: 5px; + display: inline-block; + opacity: 0; + visibility: visible; +} + + +@keyframes mui-auto-fill-cancel { + 0% { + display: block; + display: block; + } + +} + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-pQxh1.style-pQxh1 { + width: 100px; + height: 100px; + transform: rotate(-90deg); +} + +.css-x15wq9 { + position: fixed; + top: 0; + left: auto; + bottom: 0; + z-index: 1199; + right: 0; +} + +.css-1sl8dhm { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: 100%; +} + +.css-1yugkl4 { + width: 100%; + height: 90%; + overflow-y: scroll; + overflow-x: hidden; +} + +.css-8atqhb { + width: 100%; +} + +.css-enyiw4-MuiPaper-root-MuiAppBar-root { + background-color: white; + color: #fff; + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + box-sizing: border-box; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + position: static; +} + +.dashboard .dashboard-grid { + width: 100%; + height: 100%; +} + +.css-16lloyr-MuiBottomNavigation-root { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 56px; + background-color: #fff; +} + +.css-hyum1k-MuiToolbar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-left: 16px; + padding-right: 16px; + min-height: 56px; +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + padding-left: 24px; + padding-right: 24px; + } +} + +@media (orientation: landscape) { + .css-hyum1k-MuiToolbar-root { + min-height: 48px; + } +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + min-height: 64px; + } +} + +.css-xeip47-MuiGrid-root { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + width: calc(100% + 16px); + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + margin-top: -16px; + margin-left: -16px; + padding: 2rem; +} + +.css-1bjk3jo-MuiButtonBase-root-MuiBottomNavigationAction-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 0; + padding: 0px 12px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: rgba(0, 0, 0, 0.6); + -webkit-transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, padding-top 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, padding-top 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + min-width: 80px; + max-width: 168px; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.css-1bjk3jo-MuiButtonBase-root-MuiBottomNavigationAction-root.Mui-selected { + color: #1976d2; +} + +.css-16bghm4-MuiDivider-root { + margin: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + border-width: 0; + border-style: solid; + border-color: rgba(0, 0, 0, 0.12); + border-bottom-width: 0; + margin-top: 8px; + margin-bottom: 8px; + height: auto; + border-right-width: thin; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; +} + +.css-i9gxme { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 50%; + padding: 12px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + text-align: center; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + font-size: 1.75rem; + overflow: visible; + -webkit-transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + margin-left: -12px; + margin-right: 16px; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root:hover { + background-color: rgba(0, 0, 0, 0.04); +} + +.css-1osj8n2-MuiGrid-root { + box-sizing: border-box; + margin: 0; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; +} + +@media (min-width: 600px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 900px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 1200px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +.css-xeip47-MuiGrid-root>.MuiGrid-item { + padding-top: 16px; + padding-left: 16px; +} + +.css-i4bv87-MuiSvgIcon-root { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 1em; + height: 1em; + display: inline-block; + fill: currentColor; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + font-size: 1.5rem; +} + +.css-imwso6-MuiBottomNavigationAction-label { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 0.75rem; + opacity: 1; + -webkit-transition: font-size 0.2s, opacity 0.2s; + transition: font-size 0.2s, opacity 0.2s; + transition-delay: 0.1s; +} + +.css-imwso6-MuiBottomNavigationAction-label.Mui-selected { + font-size: 0.875rem; +} + +.css-8je8zh-MuiTouchRipple-root { + overflow: hidden; + pointer-events: none; + position: absolute; + z-index: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.css-11byix0-MuiAvatar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + width: 24px; + height: 24px; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 1.25rem; + line-height: 1; + border-radius: 0; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.css-8w0c3l-MuiPaper-root-MuiCard-root { + background-color: #fff; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + border-radius: 4px; + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + overflow: hidden; + max-width: 100%; + text-align: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + padding-top: 1rem; +} + +.css-1pqm26d-MuiAvatar-img { + width: 100%; + height: 100%; + text-align: center; + object-fit: cover; + color: transparent; + text-indent: 10000px; +} + +.css-lhfcda-MuiCardMedia-root { + display: block; + -webkit-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + -webkit-background-position: center; + background-position: center; + height: 50px; + width: 50px; + background-repeat-x: no-repeat; + background-repeat-y: no-repeat; +} + +.css-1i9wt8r-MuiCardContent-root { + padding: 0px; +} + +.css-1i9wt8r-MuiCardContent-root:last-child { + padding-bottom: 24px; +} + +.css-13cyo3g-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 15px; + line-height: 1.6; + letter-spacing: 0.0075em; + margin-bottom: 0.35em; + text-align: center; +} + + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-DoY6z.style-DoY6z { + background-image: url("../images/ico-add.png"); +} + +#style-Iex2K.style-Iex2K { + background-image: url("../images/ico-list.png"); +} + +#style-tEYjZ.style-tEYjZ { + background-image: url("../images/ico-law.png"); +} + +#style-NmIv9.style-NmIv9 { + background-image: url("../images/ico-tribunal.png"); +} + +#style-ogmNm.style-ogmNm { + background-image: url("../images/ico-books.png"); +} + +#style-IcKxY.style-IcKxY { + background-image: url("../images/ico-calc.png"); +} + +#style-F4sW5.style-F4sW5 { + width: 100%; + height: 100vh; + position: absolute; + top: 0; + left: 0; + pointer-events: none; +} +#style-F4sW5 .bg{ + width: 100%; + height: 100%; + position: absolute; + background: rgba(0, 0, 0, 0); + z-index: -1; + pointer-events: none; + transition: background 0.3s; +} + +#style-F4sW5 .bg.show{ + pointer-events: auto; + background-color: rgba(0, 0, 0, 0.5); +} +.css-18hsv8r { + width: 250px; + height: 100%; + background-color: #4A4A4A; + text-align: right; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: end; + -webkit-box-align: end; + -ms-flex-align: end; + align-items: end; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + transform: translateX(250px); + transition: transform 0.3s; + pointer-events: auto; +} + +.css-18hsv8r.show{ + transform: translateX(0px); +} + +.css-1160xiw-MuiPaper-root-MuiDrawer-paper { + background-color: #fff; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + overflow-y: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + z-index: 1200; + -webkit-overflow-scrolling: touch; + position: fixed; + top: 0; + outline: 0; + right: 0; +} + +.css-1u2w381-MuiModal-root-MuiDrawer-root { + position: fixed; + z-index: 1200; + right: 0; + bottom: 0; + top: 0; + left: 0; +} + +.css-1sl8dhm { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: 100%; +} + +.css-1ybg2od-MuiDivider-root { + margin: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + border-width: 0; + border-style: solid; + border-color: rgba(0, 0, 0, 0.12); + border-bottom-width: thin; + margin-left: 16px; + margin-right: 16px; + background-color: white; + opacity: 0.3; +} + +.css-y7auyh-MuiButtonGroup-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + border-radius: 4px; +} + +.css-enyiw4-MuiPaper-root-MuiAppBar-root { + background-color: white; + color: #fff; + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + box-sizing: border-box; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + position: static; +} + +.css-h4y409-MuiList-root { + list-style: none; + margin: 0; + padding: 0; + position: relative; + padding-top: 8px; + padding-bottom: 8px; +} + +.css-1nxmd3h-MuiListItem-root { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + -webkit-text-decoration: none; + text-decoration: none; + width: 100%; + box-sizing: border-box; + text-align: left; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 50%; + padding: 12px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + text-align: center; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + font-size: 1.75rem; + overflow: visible; + -webkit-transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + margin-left: -12px; + margin-right: 16px; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root:hover { + background-color: rgba(0, 0, 0, 0.04); +} + +.css-hyum1k-MuiToolbar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-left: 16px; + padding-right: 16px; + min-height: 56px; +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + padding-left: 24px; + padding-right: 24px; + } +} + +@media (orientation: landscape) { + .css-hyum1k-MuiToolbar-root { + min-height: 48px; + } +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + min-height: 64px; + } +} + +.css-16ac5r2-MuiButtonBase-root-MuiListItemButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 0; + padding: 0; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-justify-content: flex-start; + justify-content: flex-start; + min-width: 0; + box-sizing: border-box; + text-align: left; + padding-top: 8px; + padding-bottom: 8px; + -webkit-transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + padding-left: 16px; + padding-right: 16px; +} + +.css-16ac5r2-MuiButtonBase-root-MuiListItemButton-root:hover { + -webkit-text-decoration: none; + text-decoration: none; + background-color: rgba(0, 0, 0, 0.04); +} + +.css-11byix0-MuiAvatar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + width: 24px; + height: 24px; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 1.25rem; + line-height: 1; + border-radius: 0; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.css-8je8zh-MuiTouchRipple-root { + overflow: hidden; + pointer-events: none; + position: absolute; + z-index: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.css-o8jgdr-MuiListItemText-root { + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + min-width: 0; + margin-top: 4px; + margin-bottom: 4px; + color: white; + direction: rtl; + text-align: right; +} + +.css-1pqm26d-MuiAvatar-img { + width: 100%; + height: 100%; + text-align: center; + object-fit: cover; + color: transparent; + text-indent: 10000px; +} + +.css-10hburv-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.5; + letter-spacing: 0.00938em; + display: block; +} + +.css-1osj8n2-MuiGrid-root { + box-sizing: border-box; + margin: 0; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; +} + +@media (min-width: 600px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 900px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 1200px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +.css-xeip47-MuiGrid-root>.MuiGrid-item { + padding-top: 16px; + padding-left: 16px; +} + +.css-xeip47-MuiGrid-root { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + width: calc(100% + 16px); + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + margin-top: -16px; + margin-left: -16px; + padding: 2rem; +} + +.dashboard .dashboard-grid { + width: 100%; + height: 100%; +} + +.css-1yugkl4 { + width: 100%; + height: 90%; + overflow-y: scroll; + overflow-x: hidden; +} + +.css-8w0c3l-MuiPaper-root-MuiCard-root { + background-color: #fff; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + border-radius: 4px; + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + overflow: hidden; + max-width: 100%; + text-align: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + padding-top: 1rem; +} + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-RcKqL.style-RcKqL { + width: 100%; +} + +#style-spA84.style-spA84 { + width: 100%; + text-align: center; +} + +.css-1x5jdmq:focus{ + outline: 0; +} + +.css-p0rm37{ + padding: 0 10px; + background-color: #fff; + transition: transform 0.3s; +} +.css-p0rm37.top{ + transform: translate(15px,-10px) scale(0.9); +} + +.css-nbfpn7{ + stroke-dasharray: 126.92; + stroke-dashoffset: 0px; + stroke: currentColor; + -webkit-transition: stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; +} \ No newline at end of file diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Black.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Black.ttf new file mode 100644 index 0000000..4b9bd66 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Black.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Black.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Black.woff2 new file mode 100644 index 0000000..f08cace Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Black.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Bold.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Bold.ttf new file mode 100644 index 0000000..efa9b09 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Bold.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Bold.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Bold.woff2 new file mode 100644 index 0000000..65b427f Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Bold.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraBold.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraBold.ttf new file mode 100644 index 0000000..380bd15 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraBold.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraBold.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraBold.woff2 new file mode 100644 index 0000000..c074e70 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraBold.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraLight.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraLight.ttf new file mode 100644 index 0000000..b7b947e Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraLight.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraLight.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraLight.woff2 new file mode 100644 index 0000000..997dea0 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-ExtraLight.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Light.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Light.ttf new file mode 100644 index 0000000..2dfd5c3 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Light.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Light.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Light.woff2 new file mode 100644 index 0000000..d154722 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Light.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Medium.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Medium.ttf new file mode 100644 index 0000000..1e08dd5 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Medium.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Medium.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Medium.woff2 new file mode 100644 index 0000000..495af75 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Medium.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Regular.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Regular.ttf new file mode 100644 index 0000000..64e4a81 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Regular.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Regular.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Regular.woff2 new file mode 100644 index 0000000..c9824c8 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Regular.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-SemiBold.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-SemiBold.ttf new file mode 100644 index 0000000..6b3842a Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-SemiBold.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-SemiBold.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-SemiBold.woff2 new file mode 100644 index 0000000..5301641 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-SemiBold.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Thin.ttf b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Thin.ttf new file mode 100644 index 0000000..b7a7d23 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Thin.ttf differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Thin.woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Thin.woff2 new file mode 100644 index 0000000..b7df278 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn-Thin.woff2 differ diff --git a/BlazorPages/wwwroot/assets/fonts/Vazirmatn[wght].woff2 b/BlazorPages/wwwroot/assets/fonts/Vazirmatn[wght].woff2 new file mode 100644 index 0000000..a501289 Binary files /dev/null and b/BlazorPages/wwwroot/assets/fonts/Vazirmatn[wght].woff2 differ diff --git a/BlazorPages/wwwroot/assets/images/Hamburger_icon.svg b/BlazorPages/wwwroot/assets/images/Hamburger_icon.svg new file mode 100644 index 0000000..233bf21 --- /dev/null +++ b/BlazorPages/wwwroot/assets/images/Hamburger_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorPages/wwwroot/assets/images/aparat.png b/BlazorPages/wwwroot/assets/images/aparat.png new file mode 100644 index 0000000..5611aad Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/aparat.png differ diff --git a/BlazorPages/wwwroot/assets/images/bg-intro.png b/BlazorPages/wwwroot/assets/images/bg-intro.png new file mode 100644 index 0000000..30302c1 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/bg-intro.png differ diff --git a/BlazorPages/wwwroot/assets/images/icc-add.png b/BlazorPages/wwwroot/assets/images/icc-add.png new file mode 100644 index 0000000..bdfd5a6 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/icc-add.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-add.png b/BlazorPages/wwwroot/assets/images/ico-add.png new file mode 100644 index 0000000..92e9f82 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-add.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-auction.png b/BlazorPages/wwwroot/assets/images/ico-auction.png new file mode 100644 index 0000000..65ff3e6 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-auction.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-book.png b/BlazorPages/wwwroot/assets/images/ico-book.png new file mode 100644 index 0000000..4e2274e Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-book.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-books.png b/BlazorPages/wwwroot/assets/images/ico-books.png new file mode 100644 index 0000000..3131d0c Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-books.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-calc.png b/BlazorPages/wwwroot/assets/images/ico-calc.png new file mode 100644 index 0000000..80524ff Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-calc.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-dashboard.png b/BlazorPages/wwwroot/assets/images/ico-dashboard.png new file mode 100644 index 0000000..9c2f54e Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-dashboard.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-law.png b/BlazorPages/wwwroot/assets/images/ico-law.png new file mode 100644 index 0000000..f5a9af2 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-law.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-list.png b/BlazorPages/wwwroot/assets/images/ico-list.png new file mode 100644 index 0000000..fadeabb Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-list.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-menu.png b/BlazorPages/wwwroot/assets/images/ico-menu.png new file mode 100644 index 0000000..bcd0c29 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-menu.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-tribunal.png b/BlazorPages/wwwroot/assets/images/ico-tribunal.png new file mode 100644 index 0000000..89311ac Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-tribunal.png differ diff --git a/BlazorPages/wwwroot/assets/images/ico-user.png b/BlazorPages/wwwroot/assets/images/ico-user.png new file mode 100644 index 0000000..e2bd993 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/ico-user.png differ diff --git a/BlazorPages/wwwroot/assets/images/instagram.png b/BlazorPages/wwwroot/assets/images/instagram.png new file mode 100644 index 0000000..ff0fa41 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/instagram.png differ diff --git a/BlazorPages/wwwroot/assets/images/logo-blue.png b/BlazorPages/wwwroot/assets/images/logo-blue.png new file mode 100644 index 0000000..fb38bb6 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/logo-blue.png differ diff --git a/BlazorPages/wwwroot/assets/images/logo-white.png b/BlazorPages/wwwroot/assets/images/logo-white.png new file mode 100644 index 0000000..c7c6800 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/logo-white.png differ diff --git a/BlazorPages/wwwroot/assets/images/logo.png b/BlazorPages/wwwroot/assets/images/logo.png new file mode 100644 index 0000000..241edfc Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/logo.png differ diff --git a/BlazorPages/wwwroot/assets/images/mini-logo.png b/BlazorPages/wwwroot/assets/images/mini-logo.png new file mode 100644 index 0000000..b81e354 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/mini-logo.png differ diff --git a/BlazorPages/wwwroot/assets/images/twitter.png b/BlazorPages/wwwroot/assets/images/twitter.png new file mode 100644 index 0000000..271d087 Binary files /dev/null and b/BlazorPages/wwwroot/assets/images/twitter.png differ diff --git a/BlazorPages/wwwroot/assets/react.svg b/BlazorPages/wwwroot/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/BlazorPages/wwwroot/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/BlazorPages/wwwroot/favicon.ico b/BlazorPages/wwwroot/favicon.ico new file mode 100644 index 0000000..63e859b Binary files /dev/null and b/BlazorPages/wwwroot/favicon.ico differ diff --git a/BlazorPages/wwwroot/icon-192.png b/BlazorPages/wwwroot/icon-192.png new file mode 100644 index 0000000..e87cb87 Binary files /dev/null and b/BlazorPages/wwwroot/icon-192.png differ diff --git a/BlazorPages/wwwroot/icon-512.png b/BlazorPages/wwwroot/icon-512.png new file mode 100644 index 0000000..cc37eae Binary files /dev/null and b/BlazorPages/wwwroot/icon-512.png differ diff --git a/BlazorPages/wwwroot/index.html b/BlazorPages/wwwroot/index.html new file mode 100644 index 0000000..ac37100 --- /dev/null +++ b/BlazorPages/wwwroot/index.html @@ -0,0 +1,163 @@ + + + + + + + + + + + حق تو + + + + + + + + + + +
+ +
+
+ +
+
+
+ + +
+

+ در حال پردازش... +

+
+
+
+
+ +
+
+ +
+ خطا! + +
+ + + + + + + + diff --git a/BlazorPages/wwwroot/manifest.json b/BlazorPages/wwwroot/manifest.json new file mode 100644 index 0000000..ef2cea5 --- /dev/null +++ b/BlazorPages/wwwroot/manifest.json @@ -0,0 +1,21 @@ +{ + "name": "Paanaak", + "short_name": "Paanaak", + "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/BlazorPages/wwwroot/service-worker.js b/BlazorPages/wwwroot/service-worker.js new file mode 100644 index 0000000..37f190f --- /dev/null +++ b/BlazorPages/wwwroot/service-worker.js @@ -0,0 +1,10 @@ +self.addEventListener('install', async event => { + console.log('Installing service worker...'); + self.skipWaiting(); +}); + +self.addEventListener('fetch', event => { + // You can add custom logic here for controlling whether to use cached data if offline, etc. + // The following line opts out, so requests go directly to the network as usual. + return null; +}); diff --git a/BlazorPages/wwwroot/service-worker.published.js b/BlazorPages/wwwroot/service-worker.published.js new file mode 100644 index 0000000..0d9986f --- /dev/null +++ b/BlazorPages/wwwroot/service-worker.published.js @@ -0,0 +1,48 @@ +// 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$/ ]; + +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 + // If you need some URLs to be server-rendered, edit the following check to exclude those URLs + const shouldServeIndexHtml = event.request.mode === 'navigate'; + + const request = shouldServeIndexHtml ? 'index.html' : event.request; + const cache = await caches.open(cacheName); + cachedResponse = await cache.match(request); + } + + return cachedResponse || fetch(event.request); +} diff --git a/Core/Core.csproj b/Core/Core.csproj new file mode 100644 index 0000000..eceb543 --- /dev/null +++ b/Core/Core.csproj @@ -0,0 +1,31 @@ + + + + net8.0 + True + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + diff --git a/Core/Db/Db.cs b/Core/Db/Db.cs new file mode 100644 index 0000000..286e943 --- /dev/null +++ b/Core/Db/Db.cs @@ -0,0 +1,75 @@ +using Microsoft.EntityFrameworkCore; +using System; +using System.Linq; +using System.Reflection; +using Domain; +using Domain.Identity; +using Infrastructure; +using Domain.BaseData; + +namespace Core.Db +{ + public class PanakDbContext : DbContext + { + + public PanakDbContext(DbContextOptions options) : base(options) + { + + } + + public DbSet Accounts { get; set; } + public DbSet Roles { get; set; } + public DbSet AccountRoles { get; set; } + public DbSet LoginTokens { get; set; } + public DbSet RefreshTokens { get; set; } + + #region ThisProject + public DbSet Plants { get; set; } + + + #endregion + + + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + + modelBuilder.Entity() + .HasOne(x => x.RefreshToken) + .WithOne(a => a.LoginToken) + .HasForeignKey(x => x.LoginTokenId); + + + + modelBuilder.Entity().HasData( + new Role { Name = Consts.AdminRole }, + new Role { Name = Consts.Developer } + ); + base.OnModelCreating(modelBuilder); + } + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + optionsBuilder.UseLazyLoadingProxies(); + base.OnConfiguring(optionsBuilder); + } + + } + + public static class EFFilterExtensions + { + public static void ApplySoftDeleteFilter(this ModelBuilder modelBuilder, Type entityType) + { + SetSoftDeleteFilterMethod.MakeGenericMethod(entityType).Invoke(null, new object[] { modelBuilder }); + } + + static readonly MethodInfo SetSoftDeleteFilterMethod = typeof(EFFilterExtensions) + .GetMethods(BindingFlags.Public | BindingFlags.Static) + .Single(t => t.IsGenericMethod && t.Name == "ApplySoftDeleteFilter"); + + public static void ApplySoftDeleteFilter(this ModelBuilder modelBuilder) where TEntity : BaseEntity + { + modelBuilder.Entity().HasQueryFilter(x => !x.Deleted); + } + } + +} diff --git a/Core/Migrations/20250218152801_Init.Designer.cs b/Core/Migrations/20250218152801_Init.Designer.cs new file mode 100644 index 0000000..c703949 --- /dev/null +++ b/Core/Migrations/20250218152801_Init.Designer.cs @@ -0,0 +1,255 @@ +// +using System; +using Core.Db; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Core.Migrations +{ + [DbContext(typeof(PanakDbContext))] + [Migration("20250218152801_Init")] + partial class Init + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Proxies:ChangeTracking", false) + .HasAnnotation("Proxies:CheckEquality", false) + .HasAnnotation("Proxies:LazyLoading", true) + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Domain.Identity.Account", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("Mobile") + .HasColumnType("nvarchar(max)"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .HasColumnType("nvarchar(max)"); + + b.Property("Username") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Accounts"); + }); + + modelBuilder.Entity("Domain.Identity.AccountRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccountId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AccountId"); + + b.HasIndex("RoleId"); + + b.ToTable("AccountRoles"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccountId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ExpireationDate") + .HasColumnType("datetime2"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Token") + .HasColumnType("nvarchar(max)"); + + b.Property("Used") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("AccountId"); + + b.ToTable("LoginTokens"); + }); + + modelBuilder.Entity("Domain.Identity.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("LoginTokenId") + .HasColumnType("uniqueidentifier"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Token") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("LoginTokenId") + .IsUnique(); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Domain.Identity.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Roles"); + + b.HasData( + new + { + Id = new Guid("c05c6f75-e2cd-408c-9998-8ffc5778d2b5"), + CreateDate = new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6215), + Deleted = false, + ModifyDate = new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6225), + Name = "Admin" + }, + new + { + Id = new Guid("6b573e92-e3b7-4f88-9509-a036af7999eb"), + CreateDate = new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6227), + Deleted = false, + ModifyDate = new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6227), + Name = "Developer" + }); + }); + + modelBuilder.Entity("Domain.Identity.AccountRole", b => + { + b.HasOne("Domain.Identity.Account", "Account") + .WithMany("AccountRoles") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Domain.Identity.Role", "Role") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Account"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.HasOne("Domain.Identity.Account", "Account") + .WithMany("LoginTokens") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Account"); + }); + + modelBuilder.Entity("Domain.Identity.RefreshToken", b => + { + b.HasOne("Domain.Identity.LoginToken", "LoginToken") + .WithOne("RefreshToken") + .HasForeignKey("Domain.Identity.RefreshToken", "LoginTokenId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LoginToken"); + }); + + modelBuilder.Entity("Domain.Identity.Account", b => + { + b.Navigation("AccountRoles"); + + b.Navigation("LoginTokens"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.Navigation("RefreshToken"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Core/Migrations/20250218152801_Init.cs b/Core/Migrations/20250218152801_Init.cs new file mode 100644 index 0000000..dbec6b0 --- /dev/null +++ b/Core/Migrations/20250218152801_Init.cs @@ -0,0 +1,174 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace Core.Migrations +{ + /// + public partial class Init : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Accounts", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Username = table.Column(type: "nvarchar(max)", nullable: true), + Password = table.Column(type: "nvarchar(max)", nullable: true), + Mobile = table.Column(type: "nvarchar(max)", nullable: true), + Name = table.Column(type: "nvarchar(max)", nullable: true), + Email = table.Column(type: "nvarchar(max)", nullable: true), + Deleted = table.Column(type: "bit", nullable: false), + CreateDate = table.Column(type: "datetime2", nullable: false), + ModifyDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Accounts", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Roles", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(max)", nullable: true), + Deleted = table.Column(type: "bit", nullable: false), + CreateDate = table.Column(type: "datetime2", nullable: false), + ModifyDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Roles", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "LoginTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Token = table.Column(type: "nvarchar(max)", nullable: true), + ExpireationDate = table.Column(type: "datetime2", nullable: false), + Used = table.Column(type: "bit", nullable: false), + AccountId = table.Column(type: "uniqueidentifier", nullable: false), + Deleted = table.Column(type: "bit", nullable: false), + CreateDate = table.Column(type: "datetime2", nullable: false), + ModifyDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_LoginTokens", x => x.Id); + table.ForeignKey( + name: "FK_LoginTokens_Accounts_AccountId", + column: x => x.AccountId, + principalTable: "Accounts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "AccountRoles", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + RoleId = table.Column(type: "uniqueidentifier", nullable: false), + AccountId = table.Column(type: "uniqueidentifier", nullable: false), + Deleted = table.Column(type: "bit", nullable: false), + CreateDate = table.Column(type: "datetime2", nullable: false), + ModifyDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_AccountRoles", x => x.Id); + table.ForeignKey( + name: "FK_AccountRoles_Accounts_AccountId", + column: x => x.AccountId, + principalTable: "Accounts", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_AccountRoles_Roles_RoleId", + column: x => x.RoleId, + principalTable: "Roles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "RefreshTokens", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Token = table.Column(type: "nvarchar(max)", nullable: true), + LoginTokenId = table.Column(type: "uniqueidentifier", nullable: false), + Deleted = table.Column(type: "bit", nullable: false), + CreateDate = table.Column(type: "datetime2", nullable: false), + ModifyDate = table.Column(type: "datetime2", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_RefreshTokens", x => x.Id); + table.ForeignKey( + name: "FK_RefreshTokens_LoginTokens_LoginTokenId", + column: x => x.LoginTokenId, + principalTable: "LoginTokens", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.InsertData( + table: "Roles", + columns: new[] { "Id", "CreateDate", "Deleted", "ModifyDate", "Name" }, + values: new object[,] + { + { new Guid("6b573e92-e3b7-4f88-9509-a036af7999eb"), new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6227), false, new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6227), "Developer" }, + { new Guid("c05c6f75-e2cd-408c-9998-8ffc5778d2b5"), new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6215), false, new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6225), "Admin" } + }); + + migrationBuilder.CreateIndex( + name: "IX_AccountRoles_AccountId", + table: "AccountRoles", + column: "AccountId"); + + migrationBuilder.CreateIndex( + name: "IX_AccountRoles_RoleId", + table: "AccountRoles", + column: "RoleId"); + + migrationBuilder.CreateIndex( + name: "IX_LoginTokens_AccountId", + table: "LoginTokens", + column: "AccountId"); + + migrationBuilder.CreateIndex( + name: "IX_RefreshTokens_LoginTokenId", + table: "RefreshTokens", + column: "LoginTokenId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "AccountRoles"); + + migrationBuilder.DropTable( + name: "RefreshTokens"); + + migrationBuilder.DropTable( + name: "Roles"); + + migrationBuilder.DropTable( + name: "LoginTokens"); + + migrationBuilder.DropTable( + name: "Accounts"); + } + } +} diff --git a/Core/Migrations/20250222082608_Plants.Designer.cs b/Core/Migrations/20250222082608_Plants.Designer.cs new file mode 100644 index 0000000..72ad357 --- /dev/null +++ b/Core/Migrations/20250222082608_Plants.Designer.cs @@ -0,0 +1,284 @@ +// +using System; +using Core.Db; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Core.Migrations +{ + [DbContext(typeof(PanakDbContext))] + [Migration("20250222082608_Plants")] + partial class Plants + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Proxies:ChangeTracking", false) + .HasAnnotation("Proxies:CheckEquality", false) + .HasAnnotation("Proxies:LazyLoading", true) + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Domain.BaseData.Plant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ImageFileName") + .HasColumnType("nvarchar(max)"); + + b.Property("KnowledgeBase") + .HasColumnType("nvarchar(max)"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Plants"); + }); + + modelBuilder.Entity("Domain.Identity.Account", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("Mobile") + .HasColumnType("nvarchar(max)"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .HasColumnType("nvarchar(max)"); + + b.Property("Username") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Accounts"); + }); + + modelBuilder.Entity("Domain.Identity.AccountRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccountId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AccountId"); + + b.HasIndex("RoleId"); + + b.ToTable("AccountRoles"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccountId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ExpireationDate") + .HasColumnType("datetime2"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Token") + .HasColumnType("nvarchar(max)"); + + b.Property("Used") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("AccountId"); + + b.ToTable("LoginTokens"); + }); + + modelBuilder.Entity("Domain.Identity.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("LoginTokenId") + .HasColumnType("uniqueidentifier"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Token") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("LoginTokenId") + .IsUnique(); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Domain.Identity.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Roles"); + + b.HasData( + new + { + Id = new Guid("fdad59eb-e7d0-499c-877c-68662afc4656"), + CreateDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5571), + Deleted = false, + ModifyDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5585), + Name = "Admin" + }, + new + { + Id = new Guid("2b28d8c5-64d4-4932-b1e1-d4a35ed9e69d"), + CreateDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5588), + Deleted = false, + ModifyDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5588), + Name = "Developer" + }); + }); + + modelBuilder.Entity("Domain.Identity.AccountRole", b => + { + b.HasOne("Domain.Identity.Account", "Account") + .WithMany("AccountRoles") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Domain.Identity.Role", "Role") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Account"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.HasOne("Domain.Identity.Account", "Account") + .WithMany("LoginTokens") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Account"); + }); + + modelBuilder.Entity("Domain.Identity.RefreshToken", b => + { + b.HasOne("Domain.Identity.LoginToken", "LoginToken") + .WithOne("RefreshToken") + .HasForeignKey("Domain.Identity.RefreshToken", "LoginTokenId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LoginToken"); + }); + + modelBuilder.Entity("Domain.Identity.Account", b => + { + b.Navigation("AccountRoles"); + + b.Navigation("LoginTokens"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.Navigation("RefreshToken"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Core/Migrations/20250222082608_Plants.cs b/Core/Migrations/20250222082608_Plants.cs new file mode 100644 index 0000000..2feeac7 --- /dev/null +++ b/Core/Migrations/20250222082608_Plants.cs @@ -0,0 +1,79 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional + +namespace Core.Migrations +{ + /// + public partial class Plants : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DeleteData( + table: "Roles", + keyColumn: "Id", + keyValue: new Guid("6b573e92-e3b7-4f88-9509-a036af7999eb")); + + migrationBuilder.DeleteData( + table: "Roles", + keyColumn: "Id", + keyValue: new Guid("c05c6f75-e2cd-408c-9998-8ffc5778d2b5")); + + migrationBuilder.CreateTable( + name: "Plants", + columns: table => new + { + Id = table.Column(type: "uniqueidentifier", nullable: false), + Name = table.Column(type: "nvarchar(max)", nullable: true), + KnowledgeBase = table.Column(type: "nvarchar(max)", nullable: true), + Deleted = table.Column(type: "bit", nullable: false), + CreateDate = table.Column(type: "datetime2", nullable: false), + ModifyDate = table.Column(type: "datetime2", nullable: false), + ImageFileName = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Plants", x => x.Id); + }); + + migrationBuilder.InsertData( + table: "Roles", + columns: new[] { "Id", "CreateDate", "Deleted", "ModifyDate", "Name" }, + values: new object[,] + { + { new Guid("2b28d8c5-64d4-4932-b1e1-d4a35ed9e69d"), new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5588), false, new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5588), "Developer" }, + { new Guid("fdad59eb-e7d0-499c-877c-68662afc4656"), new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5571), false, new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5585), "Admin" } + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Plants"); + + migrationBuilder.DeleteData( + table: "Roles", + keyColumn: "Id", + keyValue: new Guid("2b28d8c5-64d4-4932-b1e1-d4a35ed9e69d")); + + migrationBuilder.DeleteData( + table: "Roles", + keyColumn: "Id", + keyValue: new Guid("fdad59eb-e7d0-499c-877c-68662afc4656")); + + migrationBuilder.InsertData( + table: "Roles", + columns: new[] { "Id", "CreateDate", "Deleted", "ModifyDate", "Name" }, + values: new object[,] + { + { new Guid("6b573e92-e3b7-4f88-9509-a036af7999eb"), new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6227), false, new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6227), "Developer" }, + { new Guid("c05c6f75-e2cd-408c-9998-8ffc5778d2b5"), new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6215), false, new DateTime(2025, 2, 18, 18, 58, 0, 238, DateTimeKind.Local).AddTicks(6225), "Admin" } + }); + } + } +} diff --git a/Core/Migrations/PanakDbContextModelSnapshot.cs b/Core/Migrations/PanakDbContextModelSnapshot.cs new file mode 100644 index 0000000..f8006f8 --- /dev/null +++ b/Core/Migrations/PanakDbContextModelSnapshot.cs @@ -0,0 +1,281 @@ +// +using System; +using Core.Db; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Core.Migrations +{ + [DbContext(typeof(PanakDbContext))] + partial class PanakDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Proxies:ChangeTracking", false) + .HasAnnotation("Proxies:CheckEquality", false) + .HasAnnotation("Proxies:LazyLoading", true) + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Domain.BaseData.Plant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ImageFileName") + .HasColumnType("nvarchar(max)"); + + b.Property("KnowledgeBase") + .HasColumnType("nvarchar(max)"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Plants"); + }); + + modelBuilder.Entity("Domain.Identity.Account", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("Mobile") + .HasColumnType("nvarchar(max)"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .HasColumnType("nvarchar(max)"); + + b.Property("Username") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Accounts"); + }); + + modelBuilder.Entity("Domain.Identity.AccountRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccountId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AccountId"); + + b.HasIndex("RoleId"); + + b.ToTable("AccountRoles"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccountId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ExpireationDate") + .HasColumnType("datetime2"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Token") + .HasColumnType("nvarchar(max)"); + + b.Property("Used") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("AccountId"); + + b.ToTable("LoginTokens"); + }); + + modelBuilder.Entity("Domain.Identity.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("LoginTokenId") + .HasColumnType("uniqueidentifier"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Token") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("LoginTokenId") + .IsUnique(); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Domain.Identity.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreateDate") + .HasColumnType("datetime2"); + + b.Property("Deleted") + .HasColumnType("bit"); + + b.Property("ModifyDate") + .HasColumnType("datetime2"); + + b.Property("Name") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Roles"); + + b.HasData( + new + { + Id = new Guid("fdad59eb-e7d0-499c-877c-68662afc4656"), + CreateDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5571), + Deleted = false, + ModifyDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5585), + Name = "Admin" + }, + new + { + Id = new Guid("2b28d8c5-64d4-4932-b1e1-d4a35ed9e69d"), + CreateDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5588), + Deleted = false, + ModifyDate = new DateTime(2025, 2, 22, 11, 56, 7, 370, DateTimeKind.Local).AddTicks(5588), + Name = "Developer" + }); + }); + + modelBuilder.Entity("Domain.Identity.AccountRole", b => + { + b.HasOne("Domain.Identity.Account", "Account") + .WithMany("AccountRoles") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Domain.Identity.Role", "Role") + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Account"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.HasOne("Domain.Identity.Account", "Account") + .WithMany("LoginTokens") + .HasForeignKey("AccountId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Account"); + }); + + modelBuilder.Entity("Domain.Identity.RefreshToken", b => + { + b.HasOne("Domain.Identity.LoginToken", "LoginToken") + .WithOne("RefreshToken") + .HasForeignKey("Domain.Identity.RefreshToken", "LoginTokenId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LoginToken"); + }); + + modelBuilder.Entity("Domain.Identity.Account", b => + { + b.Navigation("AccountRoles"); + + b.Navigation("LoginTokens"); + }); + + modelBuilder.Entity("Domain.Identity.LoginToken", b => + { + b.Navigation("RefreshToken"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Domain/BaseData/Plant.cs b/Domain/BaseData/Plant.cs new file mode 100644 index 0000000..e231f9d --- /dev/null +++ b/Domain/BaseData/Plant.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Domain.BaseData +{ + public class Plant: EntityWithImage + { + public string Name { set; get; } + public string KnowledgeBase { set; get; } + } +} diff --git a/Domain/BaseEntity.cs b/Domain/BaseEntity.cs new file mode 100644 index 0000000..a84453c --- /dev/null +++ b/Domain/BaseEntity.cs @@ -0,0 +1,12 @@ +using System; + +namespace Domain +{ + public class BaseEntity + { + public Guid Id { get; set; } = Guid.NewGuid(); + public bool Deleted { get; set; } + public DateTime CreateDate { get; set; } = DateTime.Now; + public DateTime ModifyDate { get; set; } = DateTime.Now; + } +} diff --git a/Domain/Domain.csproj b/Domain/Domain.csproj new file mode 100644 index 0000000..10d55e5 --- /dev/null +++ b/Domain/Domain.csproj @@ -0,0 +1,17 @@ + + + + net8.0 + + + + + + + + + + + + + diff --git a/Domain/EntityWithFileAndImage.cs b/Domain/EntityWithFileAndImage.cs new file mode 100644 index 0000000..48e6811 --- /dev/null +++ b/Domain/EntityWithFileAndImage.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Domain +{ + public abstract class EntityWithFileAndImage: EntityWithImage + { + public string FileName { set; get; } + } + public abstract class EntityWithImage : BaseEntity + { + public string ImageFileName { set; get; } + } +} diff --git a/Domain/Identity/Account.cs b/Domain/Identity/Account.cs new file mode 100644 index 0000000..0ed178c --- /dev/null +++ b/Domain/Identity/Account.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Domain.Identity +{ + public class Account : BaseEntity + { + public string Username { get; set; } + public string Password { get; set; } + public string Mobile { get; set; } + public string Name { get; set; } + public string Email { get; set; } + + public virtual ICollection AccountRoles { get; set; } + public virtual ICollection LoginTokens { get; set; } + } +} diff --git a/Domain/Identity/AccountRole.cs b/Domain/Identity/AccountRole.cs new file mode 100644 index 0000000..4266422 --- /dev/null +++ b/Domain/Identity/AccountRole.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Text; + +namespace Domain.Identity +{ + public class AccountRole : BaseEntity + { + public Guid RoleId { get; set; } + public virtual Role Role { get; set; } + + public Guid AccountId { get; set; } + public virtual Account Account { get; set; } + } +} diff --git a/Domain/Identity/LoginToken.cs b/Domain/Identity/LoginToken.cs new file mode 100644 index 0000000..841291e --- /dev/null +++ b/Domain/Identity/LoginToken.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Domain.Identity +{ + public class LoginToken: BaseEntity + { + public string Token { get; set; } + public DateTime ExpireationDate { get; set; } + public bool Used { get; set; } + + public Guid AccountId { get; set; } + public virtual Account Account { get; set; } + + public virtual RefreshToken RefreshToken { get; set; } + } +} diff --git a/Domain/Identity/RefreshToken.cs b/Domain/Identity/RefreshToken.cs new file mode 100644 index 0000000..ffde4bf --- /dev/null +++ b/Domain/Identity/RefreshToken.cs @@ -0,0 +1,13 @@ +using System; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Domain.Identity +{ + public class RefreshToken : BaseEntity + { + public string Token { get; set; } + + public Guid LoginTokenId { get; set; } + public virtual LoginToken LoginToken { get; set; } + } +} diff --git a/Domain/Identity/Role.cs b/Domain/Identity/Role.cs new file mode 100644 index 0000000..918ee5b --- /dev/null +++ b/Domain/Identity/Role.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations.Schema; + +namespace Domain.Identity +{ + public class Role : BaseEntity + { + public string Name { get; set; } + } +} diff --git a/HybridApp/App.xaml b/HybridApp/App.xaml new file mode 100644 index 0000000..5e0f876 --- /dev/null +++ b/HybridApp/App.xaml @@ -0,0 +1,26 @@ + + + + + + #512bdf + White + + + + + + + + \ No newline at end of file diff --git a/HybridApp/App.xaml.cs b/HybridApp/App.xaml.cs new file mode 100644 index 0000000..5144385 --- /dev/null +++ b/HybridApp/App.xaml.cs @@ -0,0 +1,16 @@ +using Microsoft.Maui.Controls.PlatformConfiguration.AndroidSpecific; + +namespace HybridApp +{ + public partial class App : Microsoft.Maui.Controls.Application + { + public App() + { + InitializeComponent(); + + MainPage = new MainPage(); + + Current.On().UseWindowSoftInputModeAdjust(WindowSoftInputModeAdjust.Resize); + } + } +} diff --git a/HybridApp/Components/Layout/MainLayout.razor b/HybridApp/Components/Layout/MainLayout.razor new file mode 100644 index 0000000..7cd63fe --- /dev/null +++ b/HybridApp/Components/Layout/MainLayout.razor @@ -0,0 +1,17 @@ +@inherits LayoutComponentBase + +
+ + +
+
+ About +
+ +
+ @Body +
+
+
diff --git a/HybridApp/Components/Layout/MainLayout.razor.css b/HybridApp/Components/Layout/MainLayout.razor.css new file mode 100644 index 0000000..8521145 --- /dev/null +++ b/HybridApp/Components/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/HybridApp/Components/Layout/NavMenu.razor b/HybridApp/Components/Layout/NavMenu.razor new file mode 100644 index 0000000..752ba6e --- /dev/null +++ b/HybridApp/Components/Layout/NavMenu.razor @@ -0,0 +1,27 @@ + + + + + diff --git a/HybridApp/Components/Layout/NavMenu.razor.css b/HybridApp/Components/Layout/NavMenu.razor.css new file mode 100644 index 0000000..06fe5ad --- /dev/null +++ b/HybridApp/Components/Layout/NavMenu.razor.css @@ -0,0 +1,101 @@ +.navbar-toggler { + appearance: none; + cursor: pointer; + width: 3.5rem; + height: 2.5rem; + color: white; + position: absolute; + top: 0.5rem; + right: 1rem; + border: 1px solid rgba(255, 255, 255, 0.1); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1); +} + + .navbar-toggler:checked { + background-color: rgba(255, 255, 255, 0.5); + } + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.bi { + display: inline-block; + position: relative; + width: 1.25rem; + height: 1.25rem; + margin-right: 0.75rem; + top: -1px; + background-size: cover; +} + +.bi-house-door-fill-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E"); +} + +.bi-plus-square-fill-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E"); +} + +.bi-list-nested-nav-menu { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep a { + color: #d7d7d7; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + } + + .nav-item ::deep a.active { + background-color: rgba(255,255,255,0.37); + color: white; + } + + .nav-item ::deep a:hover { + background-color: rgba(255,255,255,0.1); + color: white; + } + +.nav-scrollable { + display: none; +} + +.navbar-toggler:checked ~ .nav-scrollable { + display: block; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .nav-scrollable { + /* Never collapse the sidebar for wide screens */ + display: block; + /* Allow sidebar to scroll for tall menus */ + height: calc(100vh - 3.5rem); + overflow-y: auto; + } +} diff --git a/HybridApp/Components/Pages/Counter.razor b/HybridApp/Components/Pages/Counter.razor new file mode 100644 index 0000000..6324ad0 --- /dev/null +++ b/HybridApp/Components/Pages/Counter.razor @@ -0,0 +1,16 @@ +@page "/counter" + +

Counter

+ +

Current count: @currentCount

+ + + +@code { + private int currentCount = 0; + + private void IncrementCount() + { + currentCount++; + } +} diff --git a/HybridApp/Components/Pages/Home.razor b/HybridApp/Components/Pages/Home.razor new file mode 100644 index 0000000..16dac31 --- /dev/null +++ b/HybridApp/Components/Pages/Home.razor @@ -0,0 +1,5 @@ +@page "/" + +

Hello, world!

+ +Welcome to your new app. diff --git a/HybridApp/Components/Pages/Weather.razor b/HybridApp/Components/Pages/Weather.razor new file mode 100644 index 0000000..472bb98 --- /dev/null +++ b/HybridApp/Components/Pages/Weather.razor @@ -0,0 +1,61 @@ +@page "/weather" + +

Weather

+ +

This component demonstrates showing data.

+ +@if (forecasts == null) +{ +

Loading...

+} +else +{ + + + + + + + + + + + @foreach (var forecast in forecasts) + { + + + + + + + } + +
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
+} + +@code { + private WeatherForecast[]? forecasts; + + protected override async Task OnInitializedAsync() + { + // Simulate asynchronous loading to demonstrate a loading indicator + await Task.Delay(500); + + var startDate = DateOnly.FromDateTime(DateTime.Now); + var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; + forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = startDate.AddDays(index), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = summaries[Random.Shared.Next(summaries.Length)] + }).ToArray(); + } + + private class WeatherForecast + { + public DateOnly Date { get; set; } + public int TemperatureC { get; set; } + public string? Summary { get; set; } + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + } +} diff --git a/HybridApp/Components/Routes.razor b/HybridApp/Components/Routes.razor new file mode 100644 index 0000000..54c16ed --- /dev/null +++ b/HybridApp/Components/Routes.razor @@ -0,0 +1,6 @@ + + + + + + diff --git a/HybridApp/Components/_Imports.razor b/HybridApp/Components/_Imports.razor new file mode 100644 index 0000000..305d4b0 --- /dev/null +++ b/HybridApp/Components/_Imports.razor @@ -0,0 +1,9 @@ +@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.JSInterop +@using HybridApp +@using HybridApp.Components diff --git a/HybridApp/HybridApp.csproj b/HybridApp/HybridApp.csproj new file mode 100644 index 0000000..448836c --- /dev/null +++ b/HybridApp/HybridApp.csproj @@ -0,0 +1,355 @@ + + + + net8.0-android;net8.0-ios + + + + + + + + Exe + HybridApp + true + true + enable + false + enable + + + HybridApp + + + com.companyname.hybridapp + + + 1.8 + 10 + + 14.2 + 24.0 + panak.keystore + + + + True + 1qazxsw2$$ + + + + True + 1qazxsw2$$ + + + + True + 1qazxsw2$$ + 1qazxsw2$$ + + + + True + 1qazxsw2$$ + apk + 1qazxsw2$$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(Filename) + + + + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + true + PreserveNewest + + + + + + 1.8.5.1 + + + 123.0.7 + + + 2.41.0.2 + + + 118.1.0 + + + + + + 123.0.7 + + + 2.41.0.2 + + + 118.1.0 + + + + diff --git a/HybridApp/MainPage.Android.cs b/HybridApp/MainPage.Android.cs new file mode 100644 index 0000000..e4d4ddf --- /dev/null +++ b/HybridApp/MainPage.Android.cs @@ -0,0 +1,36 @@ +#if ANDROID +using AndroidX.Activity; +using MauiBlazorPermissionsExample.Platforms.Android; +#endif +using Microsoft.AspNetCore.Components.WebView; +using Microsoft.Maui.Platform; +using System; +namespace HybridApp +{ + + public partial class MainPage : ContentPage + { + +#if ANDROID + + private partial void BlazorWebViewInitialized(object? sender, BlazorWebViewInitializedEventArgs e) + { + if (e.WebView.Context?.GetActivity() is not ComponentActivity activity) + { + throw new InvalidOperationException($"The permission-managing WebChromeClient requires that the current activity be a '{nameof(ComponentActivity)}'."); + } + + e.WebView.Settings.JavaScriptEnabled = true; + e.WebView.SetWebChromeClient(new PermissionManagingBlazorWebChromeClient(e.WebView.WebChromeClient!, activity)); + } + + + +#else +private partial void BlazorWebViewInitialized(object? sender, BlazorWebViewInitializedEventArgs e) +{ + +} +#endif + } +} \ No newline at end of file diff --git a/HybridApp/MainPage.xaml b/HybridApp/MainPage.xaml new file mode 100644 index 0000000..db03109 --- /dev/null +++ b/HybridApp/MainPage.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/HybridApp/MainPage.xaml.cs b/HybridApp/MainPage.xaml.cs new file mode 100644 index 0000000..3c485f5 --- /dev/null +++ b/HybridApp/MainPage.xaml.cs @@ -0,0 +1,33 @@ +using Microsoft.AspNetCore.Components.WebView; +using Microsoft.Maui.Platform; +using BlazorPages.Tools; +namespace HybridApp +{ + + public partial class MainPage : ContentPage + { + private string _deviceToken; + public MainPage() + { + RequestCameraPermission(); + + InitializeComponent(); + blazorWebView.BlazorWebViewInitialized += BlazorWebViewInitialized; + if (Preferences.ContainsKey("DeviceToken")) + { + _deviceToken = Preferences.Get("DeviceToken", ""); + Statics.FcmToken = _deviceToken; + } + + } + + private async Task RequestCameraPermission() + { + PermissionStatus status = await Permissions.CheckStatusAsync(); + + if (status != PermissionStatus.Granted) + await Permissions.RequestAsync(); + } + private partial void BlazorWebViewInitialized(object? sender, BlazorWebViewInitializedEventArgs e); + } +} diff --git a/HybridApp/MainPageSingleton.cs b/HybridApp/MainPageSingleton.cs new file mode 100644 index 0000000..99a96e4 --- /dev/null +++ b/HybridApp/MainPageSingleton.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HybridApp +{ + public static class MainPageSingleton + { + private static MainPage mainPage; + public static MainPage Instance + { + get + { + if(mainPage == null) + mainPage = new MainPage(); + return mainPage; + } + } + } +} diff --git a/HybridApp/MauiProgram.cs b/HybridApp/MauiProgram.cs new file mode 100644 index 0000000..1ad785b --- /dev/null +++ b/HybridApp/MauiProgram.cs @@ -0,0 +1,32 @@ +using BlazorPages; +using Microsoft.Extensions.Logging; + +namespace HybridApp +{ + public static class MauiProgram + { + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + }); + + builder.Services.AddMauiBlazorWebView(); + builder.Services.AddScoped(); + builder.Services.Inject(isMobileApp: true); + + +#if DEBUG + builder.Services.AddBlazorWebViewDeveloperTools(); + builder.Logging.AddDebug(); +#endif + + return builder.Build(); + } + + } +} diff --git a/HybridApp/Platforms/Android/AndroidManifest.xml b/HybridApp/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..f6f2a61 --- /dev/null +++ b/HybridApp/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/HybridApp/Platforms/Android/MainActivity.cs b/HybridApp/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..c79297a --- /dev/null +++ b/HybridApp/Platforms/Android/MainActivity.cs @@ -0,0 +1,56 @@ +using Android; +using Android.App; +using Android.Content; +using Android.Content.PM; +using Android.OS; +using AndroidX.Core.App; +using AndroidX.Core.Content; + +namespace HybridApp +{ + [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] + public class MainActivity : MauiAppCompatActivity + { + internal static readonly string Channel_ID = "TestChannel"; + internal static readonly int NotificationID = 101; + + protected override void OnCreate(Bundle savedInstanceState) + { + base.OnCreate(savedInstanceState); + if (ContextCompat.CheckSelfPermission(this, Android.Manifest.Permission.PostNotifications) == Permission.Denied) + { + ActivityCompat.RequestPermissions(this, new String[] { Android.Manifest.Permission.PostNotifications }, 1); + } + CreateNotificationChannel(); + } + + protected override void OnNewIntent(Intent intent) + { + base.OnNewIntent(intent); + if (intent.Extras != null) + { + foreach (var key in intent.Extras.KeySet()) + { + if (key == "NavigationID") + { + string idValue = intent.Extras.GetString(key); + if (Preferences.ContainsKey("NavigationID")) + Preferences.Remove("NavigationID"); + + Preferences.Set("NavigationID", idValue); + } + } + } + } + + private void CreateNotificationChannel() + { + if (OperatingSystem.IsOSPlatformVersionAtLeast("android", 26)) + { + var channel = new NotificationChannel(Channel_ID, "Test Notification Channel", NotificationImportance.Default); + var notificationManager = (NotificationManager)GetSystemService(Android.Content.Context.NotificationService); + notificationManager.CreateNotificationChannel(channel); + } + } + } +} diff --git a/HybridApp/Platforms/Android/MainApplication.cs b/HybridApp/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..c2aaedc --- /dev/null +++ b/HybridApp/Platforms/Android/MainApplication.cs @@ -0,0 +1,23 @@ +using Android.App; +using Android.Runtime; + + +namespace HybridApp +{ + [Application(UsesCleartextTraffic = true)] + public class MainApplication : MauiApplication + { + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() + { + //Microsoft.Maui.Handlers.WebViewHandler.Mapper.ModifyMapping( + // nameof(Android.Webkit.WebView.WebChromeClient), + // (handler, view, args) => handler.PlatformView.SetWebChromeClient(new MyWebChromeClient(handler))); + return MauiProgram.CreateMauiApp(); + } + } +} diff --git a/HybridApp/Platforms/Android/PermissionManagingBlazorWebChromeClient.cs b/HybridApp/Platforms/Android/PermissionManagingBlazorWebChromeClient.cs new file mode 100644 index 0000000..8633e3e --- /dev/null +++ b/HybridApp/Platforms/Android/PermissionManagingBlazorWebChromeClient.cs @@ -0,0 +1,180 @@ +using Android; +using Android.App; +using Android.Content.PM; +using Android.Graphics; +using Android.OS; +using Android.Views; +using Android.Webkit; +using AndroidX.Activity; +using AndroidX.Activity.Result; +using AndroidX.Activity.Result.Contract; +using AndroidX.Core.Content; +using Java.Interop; +using System; +using System.Collections.Generic; + +namespace MauiBlazorPermissionsExample.Platforms.Android; + +internal class PermissionManagingBlazorWebChromeClient : WebChromeClient, IActivityResultCallback +{ + // This class implements a permission requesting workflow that matches workflow recommended + // by the official Android developer documentation. + // See: https://developer.android.com/training/permissions/requesting#workflow_for_requesting_permissions + // The current implementation supports location, camera, and microphone permissions. To add your own, + // update the s_rationalesByPermission dictionary to include your rationale for requiring the permission. + // If necessary, you may need to also update s_requiredPermissionsByWebkitResource to define how a specific + // Webkit resource maps to an Android permission. + + // In a real app, you would probably use more convincing rationales tailored toward what your app does. + private const string CameraAccessRationale = "This app requires access to your camera. Please grant access to your camera when requested."; + private const string LocationAccessRationale = "This app requires access to your location. Please grant access to your precise location when requested."; + private const string MicrophoneAccessRationale = "This app requires access to your microphone. Please grant access to your microphone when requested."; + + private static readonly Dictionary s_rationalesByPermission = new() + { + [Manifest.Permission.Camera] = CameraAccessRationale, + [Manifest.Permission.AccessFineLocation] = LocationAccessRationale, + [Manifest.Permission.RecordAudio] = MicrophoneAccessRationale, + // Add more rationales as you add more supported permissions. + }; + + private static readonly Dictionary s_requiredPermissionsByWebkitResource = new() + { + [PermissionRequest.ResourceVideoCapture] = new[] { Manifest.Permission.Camera }, + [PermissionRequest.ResourceAudioCapture] = new[] { Manifest.Permission.ModifyAudioSettings, Manifest.Permission.RecordAudio }, + // Add more Webkit resource -> Android permission mappings as needed. + }; + + private readonly WebChromeClient _blazorWebChromeClient; + private readonly ComponentActivity _activity; + private readonly ActivityResultLauncher _requestPermissionLauncher; + + private Action? _pendingPermissionRequestCallback; + + public PermissionManagingBlazorWebChromeClient(WebChromeClient blazorWebChromeClient, ComponentActivity activity) + { + _blazorWebChromeClient = blazorWebChromeClient; + _activity = activity; + _requestPermissionLauncher = _activity.RegisterForActivityResult(new ActivityResultContracts.RequestPermission(), this); + } + + + + + + public override void OnPermissionRequest(PermissionRequest? request) + { + ArgumentNullException.ThrowIfNull(request, nameof(request)); + + if (request.GetResources() is not { } requestedResources) + { + request.Deny(); + return; + } + + RequestAllResources(requestedResources, grantedResources => + { + if (grantedResources.Count == 0) + { + request.Deny(); + } + else + { + request.Grant(grantedResources.ToArray()); + } + }); + } + + private void RequestAllResources(Memory requestedResources, Action> callback) + { + if (requestedResources.Length == 0) + { + // No resources to request - invoke the callback with an empty list. + callback(new()); + return; + } + + var currentResource = requestedResources.Span[0]; + var requiredPermissions = s_requiredPermissionsByWebkitResource.GetValueOrDefault(currentResource, Array.Empty()); + + RequestAllPermissions(requiredPermissions, isGranted => + { + // Recurse with the remaining resources. If the first resource was granted, use a modified callback + // that adds the first resource to the granted resources list. + RequestAllResources(requestedResources[1..], !isGranted ? callback : grantedResources => + { + grantedResources.Add(currentResource); + callback(grantedResources); + }); + }); + } + + private void RequestAllPermissions(Memory requiredPermissions, Action callback) + { + if (requiredPermissions.Length == 0) + { + // No permissions left to request - success! + callback(true); + return; + } + + RequestPermission(requiredPermissions.Span[0], isGranted => + { + if (isGranted) + { + // Recurse with the remaining permissions. + RequestAllPermissions(requiredPermissions[1..], callback); + } + else + { + // The first required permission was not granted. Fail now and don't attempt to grant + // the remaining permissions. + callback(false); + } + }); + } + + private void RequestPermission(string permission, Action callback) + { + // This method implements the workflow described here: + // https://developer.android.com/training/permissions/requesting#workflow_for_requesting_permissions + + if (ContextCompat.CheckSelfPermission(_activity, permission) == Permission.Granted) + { + callback.Invoke(true); + } + else if (_activity.ShouldShowRequestPermissionRationale(permission) && s_rationalesByPermission.TryGetValue(permission, out var rationale)) + { + new AlertDialog.Builder(_activity) + .SetTitle("Enable app permissions")! + .SetMessage(rationale)! + .SetNegativeButton("No thanks", (_, _) => callback(false))! + .SetPositiveButton("Continue", (_, _) => LaunchPermissionRequestActivity(permission, callback))! + .Show(); + } + else + { + LaunchPermissionRequestActivity(permission, callback); + } + } + + private void LaunchPermissionRequestActivity(string permission, Action callback) + { + if (_pendingPermissionRequestCallback is not null) + { + throw new InvalidOperationException("Cannot perform multiple permission requests simultaneously."); + } + + _pendingPermissionRequestCallback = callback; + _requestPermissionLauncher.Launch(permission); + } + + void IActivityResultCallback.OnActivityResult(Java.Lang.Object isGranted) + { + var callback = _pendingPermissionRequestCallback; + _pendingPermissionRequestCallback = null; + callback?.Invoke((bool)isGranted); + } + + +} diff --git a/HybridApp/Platforms/Android/Resources/values/colors.xml b/HybridApp/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..cd6e74e --- /dev/null +++ b/HybridApp/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #00A8E0 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/HybridApp/Platforms/Android/Services/FirebaseService.cs b/HybridApp/Platforms/Android/Services/FirebaseService.cs new file mode 100644 index 0000000..521dd83 --- /dev/null +++ b/HybridApp/Platforms/Android/Services/FirebaseService.cs @@ -0,0 +1,55 @@ +using Android.App; +using Android.Content; +using AndroidX.Core.App; +using Firebase.Messaging; +using HybridApp; + +[Service(Exported = true)] +[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })] +public class FirebaseService : FirebaseMessagingService +{ + public FirebaseService() { } + + public override void OnNewToken(string token) + { + base.OnNewToken(token); + if (Preferences.ContainsKey("DeviceToken")) + { + Preferences.Remove("DeviceToken"); + } + Preferences.Set("DeviceToken", token); + } + + public override void OnMessageReceived(RemoteMessage message) + { + base.OnMessageReceived(message); + var notification = message.GetNotification(); + SendNotification(notification.Body, notification.Title, message.Data); + } + + private void SendNotification(string messageBody, string title, IDictionary data) + { + var intent = new Intent(this, typeof(MainActivity)); + intent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop); + + foreach (var key in data.Keys) + { + string value = data[key]; + intent.PutExtra(key, value); + } + + var pendingIntent = PendingIntent.GetActivity(this, MainActivity.NotificationID, intent, PendingIntentFlags.OneShot | PendingIntentFlags.Immutable); + + var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.Channel_ID) + .SetContentTitle(title) + .SetSmallIcon(HybridApp.Resource.Mipmap.appicon) + .SetContentText(messageBody) + .SetChannelId(MainActivity.Channel_ID) + .SetContentIntent(pendingIntent) + .SetAutoCancel(true) + .SetPriority((int)NotificationPriority.Max); + + var notificationManager = NotificationManagerCompat.From(this); + notificationManager.Notify(MainActivity.NotificationID, notificationBuilder.Build()); + } +} \ No newline at end of file diff --git a/HybridApp/Platforms/Windows/App.xaml b/HybridApp/Platforms/Windows/App.xaml new file mode 100644 index 0000000..0fc3a2e --- /dev/null +++ b/HybridApp/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/HybridApp/Platforms/Windows/App.xaml.cs b/HybridApp/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..a459def --- /dev/null +++ b/HybridApp/Platforms/Windows/App.xaml.cs @@ -0,0 +1,25 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace HybridApp.WinUI +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : MauiWinUIApplication + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } + +} diff --git a/HybridApp/Platforms/Windows/Package.appxmanifest b/HybridApp/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..76ecc5a --- /dev/null +++ b/HybridApp/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,46 @@ + + + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HybridApp/Platforms/Windows/app.manifest b/HybridApp/Platforms/Windows/app.manifest new file mode 100644 index 0000000..ff8d313 --- /dev/null +++ b/HybridApp/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/HybridApp/Platforms/iOS/AppDelegate.cs b/HybridApp/Platforms/iOS/AppDelegate.cs new file mode 100644 index 0000000..fcf8b68 --- /dev/null +++ b/HybridApp/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace HybridApp +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} diff --git a/HybridApp/Platforms/iOS/Info.plist b/HybridApp/Platforms/iOS/Info.plist new file mode 100644 index 0000000..ecb7f71 --- /dev/null +++ b/HybridApp/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/HybridApp/Platforms/iOS/Program.cs b/HybridApp/Platforms/iOS/Program.cs new file mode 100644 index 0000000..a79b8c8 --- /dev/null +++ b/HybridApp/Platforms/iOS/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace HybridApp +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} diff --git a/HybridApp/Platforms/iOS/Resources/PrivacyInfo.xcprivacy b/HybridApp/Platforms/iOS/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..24ab3b4 --- /dev/null +++ b/HybridApp/Platforms/iOS/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,51 @@ + + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + + + + + + diff --git a/HybridApp/Properties/launchSettings.json b/HybridApp/Properties/launchSettings.json new file mode 100644 index 0000000..edf8aad --- /dev/null +++ b/HybridApp/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/HybridApp/Resources/AppIcon/appicon.svg b/HybridApp/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..651ba11 --- /dev/null +++ b/HybridApp/Resources/AppIcon/appicon.svg @@ -0,0 +1,33 @@ + + diff --git a/HybridApp/Resources/AppIcon/appiconfg.svg b/HybridApp/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..c3123b0 --- /dev/null +++ b/HybridApp/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,43 @@ + + + + + + + diff --git a/HybridApp/Resources/Fonts/OpenSans-Regular.ttf b/HybridApp/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000..3eba1e4 Binary files /dev/null and b/HybridApp/Resources/Fonts/OpenSans-Regular.ttf differ diff --git a/HybridApp/Resources/Images/dotnet_bot.svg b/HybridApp/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..abfaff2 --- /dev/null +++ b/HybridApp/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/HybridApp/Resources/Raw/AboutAssets.txt b/HybridApp/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..6de1c15 --- /dev/null +++ b/HybridApp/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with your package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/HybridApp/Resources/Splash/images/image349.png b/HybridApp/Resources/Splash/images/image349.png new file mode 100644 index 0000000..26b6bb1 Binary files /dev/null and b/HybridApp/Resources/Splash/images/image349.png differ diff --git a/HybridApp/Resources/Splash/splash.svg b/HybridApp/Resources/Splash/splash.svg new file mode 100644 index 0000000..6212de6 --- /dev/null +++ b/HybridApp/Resources/Splash/splash.svg @@ -0,0 +1,42 @@ + + + + + + + diff --git a/HybridApp/google-services.json b/HybridApp/google-services.json new file mode 100644 index 0000000..2ebbb25 --- /dev/null +++ b/HybridApp/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "866870522075", + "project_id": "hagheto-66730", + "storage_bucket": "hagheto-66730.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:866870522075:android:c31bf4a54d5fb88f381cfe", + "android_client_info": { + "package_name": "ir.haqeto.app" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyBKXWXyaE9JTO_UIg0k6RmmWel3HYcvfrU" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/HybridApp/panak.keystore b/HybridApp/panak.keystore new file mode 100644 index 0000000..e84e280 Binary files /dev/null and b/HybridApp/panak.keystore differ diff --git a/HybridApp/wwwroot/Panak-symbole-787x1024.png b/HybridApp/wwwroot/Panak-symbole-787x1024.png new file mode 100644 index 0000000..f68543b Binary files /dev/null and b/HybridApp/wwwroot/Panak-symbole-787x1024.png differ diff --git a/HybridApp/wwwroot/assets/css/app.css b/HybridApp/wwwroot/assets/css/app.css new file mode 100644 index 0000000..e70f53f --- /dev/null +++ b/HybridApp/wwwroot/assets/css/app.css @@ -0,0 +1,47 @@ + + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } + +.text-justify { + text-align: justify; + line-height: 1.8em; +} diff --git a/HybridApp/wwwroot/assets/css/base.css b/HybridApp/wwwroot/assets/css/base.css new file mode 100644 index 0000000..42bcdc3 --- /dev/null +++ b/HybridApp/wwwroot/assets/css/base.css @@ -0,0 +1,99 @@ +@font-face { + font-family: Vazir; + src: url('h/assets/fonts/Vazirmatn-Regular'); + src: url('/assets/fonts/Vazirmatn-Regular.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Regular.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Regular.woff') format('woff'), url('/assets/fonts/Vazirmatn-Regular.ttf') format('truetype'); + font-weight: normal; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Bold.eot'); + src: url('/assets/fonts/Vazirmatn-Bold.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Bold.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Bold.woff') format('woff'), url('/assets/fonts/Vazirmatn-Bold.ttf') format('truetype'); + font-weight: bold; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Thin.eot'); + src: url('/assets/fonts/Vazirmatn-Thin.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Thin.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Thin.woff') format('woff'), url('/assets/fonts/Vazirmatn-Thin.ttf') format('truetype'); + font-weight: 100; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Light.eot'); + src: url('/assets/fonts/Vazirmatn-Light.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Light.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Light.woff') format('woff'), url('/assets/fonts/Vazirmatn-Light.ttf') format('truetype'); + font-weight: 300; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Medium.eot'); + src: url('/assets/fonts/Vazirmatn-Medium.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Medium.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Medium.woff') format('woff'), url('/assets/fonts/Vazirmatn-Medium.ttf') format('truetype'); + font-weight: 500; + font-display: swap; +} + +@font-face { + font-family: Vazir; + src: url('/assets/fonts/Vazirmatn-Black.eot'); + src: url('/assets/fonts/Vazirmatn-Black.eot?#iefix') format('embedded-opentype'), url('/assets/fonts/Vazirmatn-Black.woff2') format('woff2'), url('/assets/fonts/Vazirmatn-Black.woff') format('woff'), url('/assets/fonts/Vazirmatn-Black.ttf') format('truetype'); + font-weight: 900; + font-display: swap; +} +* { + font-family: Vazir !important; + *font-size: 2vh; +} + + *::-webkit-scrollbar { + width: 8px; + } + + *::-webkit-scrollbar-track { + border-radius: 8px; + background-color: #cacaca; + border: 1px solid #cacaca; + } + +::-webkit-scrollbar-thumb { + border-radius: 6px; + border: 3px solid transparent; + background-clip: content-box; + background-color: #e7e7e7; +} + + +.hamburger { + width: 200px; + height: 120px; + position: relative; + margin: 0 20px; +} +.hamburger { + &::before, &::after + +{ + content: ''; + position: absolute; + width: 100%; + height: 20px; + color: #333; + background-color: currentColor; + transition: all .45s ease-in-out; + &::before + +{ + top: 0; + transform: rotate(0); +} + +&::after { + bottom: 0; + box-shadow: 0 -50px currentColor; +} +} \ No newline at end of file diff --git a/HybridApp/wwwroot/assets/css/login.css b/HybridApp/wwwroot/assets/css/login.css new file mode 100644 index 0000000..c7180d3 --- /dev/null +++ b/HybridApp/wwwroot/assets/css/login.css @@ -0,0 +1,1993 @@ +.splash-page { + width: 100%; + height: calc(100vh - 4rem); + background-image: linear-gradient(0deg, rgba(0, 0, 255, 0.2), rgba(0, 0, 255, 0.2)), url('../images/bg-intro.png'); + background-position: center; + background-repeat: no-repeat; + background-size: cover; + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: column; + padding: 2rem 0; +} + +.dashboard { + width: 100%; + height: 100vh; + background-color: #f1f1f1; + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: column; +} + +.dashboard .dashboard-grid { + width: 100%; + height: 100% +} + +.splash-page.login { + padding-top: 4rem; + padding-bottom: 0; +} + +.splash-page .bottom { + display: flex; + align-items: center; + justify-content: space-around; + flex-direction: column; + gap: 1rem; +} + +.devider { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; +} + +.devider div:nth-child(1), +.devider div:nth-child(3) { + width: 45%; + height: 1px; + background-image: linear-gradient(to right, white, transparent); + +} + +.devider div:nth-child(2) { + width: 5px; + height: 5px; + background-color: white; +} + +.devider.white-bg div:nth-child(1), +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to right, #F4AD33, transparent); + +} + +.devider.white-bg div:nth-child(2) { + background-color: #F4AD33; +} + +.devider div:nth-child(3) { + background-image: linear-gradient(to left, white, transparent); +} + +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to left, #F4AD33, transparent); +} + +.css-33o7k0-MuiButtonBase-root-MuiButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 0; + padding: 0; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 0.875rem; + line-height: 1.75; + letter-spacing: 0.02857em; + text-transform: uppercase; + min-width: 64px; + padding: 6px 16px; + border-radius: 4px; + -webkit-transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + color: #fff; + background-color: #d32f2f; + box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); + background-color: white; + color: blue; +} + +.css-1vx8qb9 { + width: 100%; + height: auto; + background-color: white; + border-radius: 30px 30px 0 0; + border-top: 4px solid #F4AD33; + padding: 2rem 0; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + -webkit-flex: 2; + -ms-flex: 2; + flex: 2; + overflow: auto; +} + +.css-1q2tlgs-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; +} + +.css-vnxi6v-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: gray; + font-size: 16px; +} + +.css-jw4se3-MuiFormControl-root-MuiTextField-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + min-width: 0; + padding: 0; + margin: 0; + border: 0; + vertical-align: top; + width: 70%; + text-align: center; + direction: ltr; +} + +.css-14s5rfu-MuiFormLabel-root-MuiInputLabel-root { + color: rgba(0, 0, 0, 0.6); + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + padding: 0; + position: relative; + display: block; + transform-origin: top left; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 24px); + position: absolute; + left: 0; + top: 0; + -webkit-transform: translate(14px, 16px) scale(1); + -moz-transform: translate(14px, 16px) scale(1); + -ms-transform: translate(14px, 16px) scale(1); + transform: translate(14px, 16px) scale(1); + -webkit-transition: color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, -webkit-transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; + transition: color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms; + z-index: 1; + pointer-events: none; +} + +.css-14s5rfu-MuiFormLabel-root-MuiInputLabel-root { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + color: rgba(0, 0, 0, 0.87); + box-sizing: border-box; + position: relative; + cursor: text; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + border-radius: 4px; +} + + +.css-1vx8qb9 { + width: 100%; + height: auto; + background-color: white; + border-radius: 30px 30px 0px 0px; + border-top: 4px solid rgb(244, 173, 51); + padding: 2rem 0px; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: justify; + justify-content: space-between; + flex-direction: column; + gap: 1rem; + flex: 2 1 0%; + overflow: hidden; +} + +.css-fyhhyl { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; +} + +.css-4htua2 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: gray; + font-size: 16px; +} + +.css-1f7zzfx { + display: inline-flex; + flex-direction: column; + position: relative; + min-width: 0px; + padding: 0px; + margin: 0px; + border: 0px; + vertical-align: top; + width: 70%; + text-align: center; + direction: ltr; +} + +.css-17yr7y2 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.5; + letter-spacing: 0.00938em; + color: black; + text-align: center; + font-size: 14px; + width: 70%; +} + +.css-1hw9j7s { + display: inline-flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + outline: 0px; + border: 0px; + margin: 0px; + cursor: pointer; + user-select: none; + vertical-align: middle; + appearance: none; + text-decoration: none; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 0.875rem; + line-height: 1.75; + letter-spacing: 0.02857em; + text-transform: uppercase; + min-width: 64px; + padding: 6px 16px; + border-radius: 4px; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + color: rgb(255, 255, 255); + background-color: rgb(25, 118, 210); + box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px; +} + +.css-1hw9j7s.Mui-disabled { + pointer-events: none; + cursor: default; + color: rgba(0, 0, 0, 0.26); + box-shadow: none; + background-color: rgba(0, 0, 0, 0.12); +} + +.css-1hw9j7s:hover { + text-decoration: none; + background-color: rgb(21, 101, 192); + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 4px -1px, rgba(0, 0, 0, 0.14) 0px 4px 5px 0px, rgba(0, 0, 0, 0.12) 0px 1px 10px 0px; +} + +.footer { + text-align: center; + padding: 1rem; + width: 100%; +} + +.css-p0rm37 { + color: rgba(0, 0, 0, 0.6); + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + padding: 0px; + display: block; + transform-origin: left top; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 24px); + position: absolute; + left: 0px; + top: 0px; + transform: translate(14px, 16px) scale(1); + transition: color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; + z-index: 1; + pointer-events: none; +} + +.css-1v4ccyo { + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + color: rgba(0, 0, 0, 0.87); + box-sizing: border-box; + cursor: text; + display: inline-flex; + -webkit-box-align: center; + align-items: center; + position: relative; + border-radius: 4px; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} + +a:hover { + color: #535bf2; +} + +.devider { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; +} + +.css-xzj0vu { + margin: 8px 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.5; + letter-spacing: 0.00938em; + color: black; +} + +.css-12wn12i { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.5; + letter-spacing: 0.00938em; + color: grey; + font-size: 14px; +} + +.css-1x5jdmq { + font: inherit; + letter-spacing: inherit; + color: currentcolor; + border: 0px; + box-sizing: content-box; + background: none; + height: 1.4375em; + margin: 0px; + -webkit-tap-highlight-color: transparent; + display: block; + min-width: 0px; + width: 100%; + animation-name: mui-auto-fill-cancel; + animation-duration: 10ms; + padding: 16.5px 14px; +} + +.css-igs3ac { + text-align: left; + position: absolute; + inset: -5px 0px 0px; + margin: 0px; + padding: 0px 8px; + pointer-events: none; + border-radius: inherit; + border-style: solid; + border-width: 1px; + overflow: hidden; + min-width: 0%; + border-color: rgba(0, 0, 0, 0.23); +} + +.devider div:nth-child(1) { + width: 45%; + height: 1px; + background-image: linear-gradient(to right, white, transparent); +} + +.devider.white-bg div:nth-child(1) { + background-image: linear-gradient(to right, #F4AD33, transparent); +} + +.devider div:nth-child(2) { + width: 5px; + height: 5px; + background-color: #fff; +} + +.devider.white-bg div:nth-child(2) { + background-color: #f4ad33; +} + +.devider div:nth-child(3) { + width: 45%; + height: 1px; + background-image: linear-gradient(to left, white, transparent); +} + +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to left, #F4AD33, transparent); +} + +.css-yjsfm1 { + float: unset; + width: auto; + overflow: hidden; + display: block; + padding: 0px; + height: 11px; + font-size: 0.75em; + visibility: hidden; + max-width: 0.01px; + transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms; + white-space: nowrap; +} + +.css-yjsfm1>span { + padding-left: 5px; + padding-right: 5px; + display: inline-block; + opacity: 0; + visibility: visible; +} + + +@keyframes mui-auto-fill-cancel { + 0% { + display: block; + display: block; + } + +} + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-VokD2.style-VokD2 { + top: 46px; + left: 668px; + height: 0px; + width: 0px; +} + +#style-Qemo7.style-Qemo7 { + top: 46px; + left: 868px; + height: 0px; + width: 0px; +} + +#style-ESCFC.style-ESCFC { + top: 145px; + left: 668px; + height: 0px; + width: 0px; +} + +#style-BNR6g.style-BNR6g { + top: 46px; + left: 666px; + height: 0px; + width: 0px; +} + +#style-GFFvA.style-GFFvA { + top: 14px; + left: 378px; + height: 0px; + width: 0px; +} + +#style-VVqsX.style-VVqsX { + top: 14px; + left: 1158px; + height: 0px; + width: 0px; +} + +#style-qjh4f.style-qjh4f { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-dZFJE.style-dZFJE { + top: 14px; + left: 376px; + height: 0px; + width: 0px; +} + +#style-JEQCP.style-JEQCP { + top: 0px; + left: 0px; + position: absolute; +} + +#snipcss-Webapp-container.style-ed2dZ { + right: 70px; + top: 374.3px; +} + +#style-Qkvp2.style-Qkvp2 { + touch-action: none; +} + +#style-bz1Qo.style-bz1Qo { + touch-action: none; +} + +#style-6KZe7.style-6KZe7 { + top: 14px; + left: 378px; + height: 0px; + width: 0px; +} + +#style-pIvvK.style-pIvvK { + top: 14px; + left: 1158px; + height: 0px; + width: 0px; +} + +#style-lMspy.style-lMspy { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-Z7wYp.style-Z7wYp { + top: 14px; + left: 376px; + height: 0px; + width: 0px; +} + +#style-BhfqZ.style-BhfqZ { + top: -2px; + left: 0px; + height: 0px; + width: 0px; +} + +#style-sjrsy.style-sjrsy { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-XMFxd.style-XMFxd { + top: -4px; + left: -4px; + height: 0px; + width: 0px; +} + +#style-RB4oW.style-RB4oW { + top: -2px; + left: -2px; + height: 0px; + width: 0px; +} + +.css-oeby62 { + width: 100%; + height: auto; + background-color: white; + border-radius: 30px 30px 0px 0px; + border-top: 4px solid rgb(244, 173, 51); + padding: 2rem 0px; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: justify; + justify-content: space-between; + flex-direction: column; + gap: 1rem; +} + +.css-fyhhyl { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 1.25rem; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; +} + +.css-1dtr6u8 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: gray; + font-size: 15px; + text-align: center; +} + +.css-1f7zzfx { + display: inline-flex; + flex-direction: column; + position: relative; + min-width: 0px; + padding: 0px; + margin: 0px; + border: 0px; + vertical-align: top; + width: 70%; + text-align: center; + direction: ltr; +} + +.css-1hw9j7s { + display: inline-flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + outline: 0px; + border: 0px; + margin: 0px; + cursor: pointer; + user-select: none; + vertical-align: middle; + appearance: none; + text-decoration: none; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + font-size: 0.875rem; + line-height: 1.75; + letter-spacing: 0.02857em; + text-transform: uppercase; + min-width: 64px; + padding: 6px 16px; + border-radius: 4px; + transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + color: rgb(255, 255, 255); + background-color: rgb(25, 118, 210); + box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 1px -2px, rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px; +} + +.css-1hw9j7s.Mui-disabled { + pointer-events: none; + cursor: default; + color: rgba(0, 0, 0, 0.26); + box-shadow: none; + background-color: rgba(0, 0, 0, 0.12); +} + +.css-1hw9j7s:hover { + text-decoration: none; + background-color: rgb(21, 101, 192); + box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 4px -1px, rgba(0, 0, 0, 0.14) 0px 4px 5px 0px, rgba(0, 0, 0, 0.12) 0px 1px 10px 0px; +} + +.css-pzdgve { + position: relative; + width: 100px; + height: 100px; + display: flex; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; +} + +.css-viw3r { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: rgb(81, 81, 81); + font-size: 16px; +} + +.devider { + width: 80%; + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; +} + +.css-15bsez5 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 500; + line-height: 1.6; + letter-spacing: 0.0075em; + color: black; + font-size: 16px; +} + +.css-12wn12i { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.5; + letter-spacing: 0.00938em; + color: grey; + font-size: 14px; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} + +a:hover { + color: #535bf2; +} + +.css-p0rm37 { + color: rgba(0, 0, 0, 0.6); + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + padding: 0px; + display: block; + transform-origin: left top; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 24px); + position: absolute; + left: 0px; + top: 0px; + transform: translate(14px, 16px) scale(1); + transition: color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms, max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms; + z-index: 1; + pointer-events: none; +} + +.css-1v4ccyo { + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.4375em; + letter-spacing: 0.00938em; + color: rgba(0, 0, 0, 0.87); + box-sizing: border-box; + cursor: text; + display: inline-flex; + -webkit-box-align: center; + align-items: center; + position: relative; + border-radius: 4px; +} + +.css-1utujq6 { + margin: 0px; + font-family: Roboto, Helvetica, Arial, sans-serif; + font-weight: 400; + line-height: 1.235; + letter-spacing: 0.00735em; + color: rgb(244, 173, 51); + position: absolute; + font-size: 16px; +} + +.css-x1zqys { + display: inline-block; + transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + position: absolute; + color: rgb(244, 173, 51); +} + +.devider div:nth-child(1) { + width: 45%; + height: 1px; + background-image: linear-gradient(to right, white, transparent); +} + +.devider.white-bg div:nth-child(1) { + background-image: linear-gradient(to right, #F4AD33, transparent); +} + +.devider div:nth-child(2) { + width: 5px; + height: 5px; + background-color: #fff; +} + +.devider.white-bg div:nth-child(2) { + background-color: #f4ad33; +} + +.devider div:nth-child(3) { + width: 45%; + height: 1px; + background-image: linear-gradient(to left, white, transparent); +} + +.devider.white-bg div:nth-child(3) { + background-image: linear-gradient(to left, #F4AD33, transparent); +} + +.css-1x5jdmq { + font: inherit; + letter-spacing: inherit; + color: currentcolor; + border: 0px; + box-sizing: content-box; + background: none; + height: 1.4375em; + margin: 0px; + -webkit-tap-highlight-color: transparent; + display: block; + min-width: 0px; + width: 100%; + animation-name: mui-auto-fill-cancel; + animation-duration: 10ms; + padding: 16.5px 14px; +} + +.css-igs3ac { + text-align: left; + position: absolute; + inset: -5px 0px 0px; + margin: 0px; + padding: 0px 8px; + pointer-events: none; + border-radius: inherit; + border-style: solid; + border-width: 1px; + overflow: hidden; + min-width: 0%; + border-color: rgba(0, 0, 0, 0.23); +} + +.css-13o7eu2 { + display: block; +} + +.css-yjsfm1 { + float: unset; + width: auto; + overflow: hidden; + display: block; + padding: 0px; + height: 11px; + font-size: 0.75em; + visibility: hidden; + max-width: 0.01px; + transition: max-width 50ms cubic-bezier(0, 0, 0.2, 1) 0ms; + white-space: nowrap; +} + +.css-yjsfm1>span { + padding-left: 5px; + padding-right: 5px; + display: inline-block; + opacity: 0; + visibility: visible; +} + + +@keyframes mui-auto-fill-cancel { + 0% { + display: block; + display: block; + } + +} + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-pQxh1.style-pQxh1 { + width: 100px; + height: 100px; + transform: rotate(-90deg); +} + +.css-x15wq9 { + position: fixed; + top: 0; + left: auto; + bottom: 0; + z-index: 1199; + right: 0; +} + +.css-1sl8dhm { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: 100%; +} + +.css-1yugkl4 { + width: 100%; + height: 90%; + overflow-y: scroll; + overflow-x: hidden; +} + +.css-8atqhb { + width: 100%; +} + +.css-enyiw4-MuiPaper-root-MuiAppBar-root { + background-color: white; + color: #fff; + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + box-sizing: border-box; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + position: static; +} + +.dashboard .dashboard-grid { + width: 100%; + height: 100%; +} + +.css-16lloyr-MuiBottomNavigation-root { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 56px; + background-color: #fff; +} + +.css-hyum1k-MuiToolbar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-left: 16px; + padding-right: 16px; + min-height: 56px; +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + padding-left: 24px; + padding-right: 24px; + } +} + +@media (orientation: landscape) { + .css-hyum1k-MuiToolbar-root { + min-height: 48px; + } +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + min-height: 64px; + } +} + +.css-xeip47-MuiGrid-root { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + width: calc(100% + 16px); + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + margin-top: -16px; + margin-left: -16px; + padding: 2rem; +} + +.css-1bjk3jo-MuiButtonBase-root-MuiBottomNavigationAction-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 0; + padding: 0px 12px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: rgba(0, 0, 0, 0.6); + -webkit-transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, padding-top 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, padding-top 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + min-width: 80px; + max-width: 168px; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.css-1bjk3jo-MuiButtonBase-root-MuiBottomNavigationAction-root.Mui-selected { + color: #1976d2; +} + +.css-16bghm4-MuiDivider-root { + margin: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + border-width: 0; + border-style: solid; + border-color: rgba(0, 0, 0, 0.12); + border-bottom-width: 0; + margin-top: 8px; + margin-bottom: 8px; + height: auto; + border-right-width: thin; + -webkit-align-self: stretch; + -ms-flex-item-align: stretch; + align-self: stretch; +} + +.css-i9gxme { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 50%; + padding: 12px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + text-align: center; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + font-size: 1.75rem; + overflow: visible; + -webkit-transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + margin-left: -12px; + margin-right: 16px; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root:hover { + background-color: rgba(0, 0, 0, 0.04); +} + +.css-1osj8n2-MuiGrid-root { + box-sizing: border-box; + margin: 0; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; +} + +@media (min-width: 600px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 900px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 1200px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +.css-xeip47-MuiGrid-root>.MuiGrid-item { + padding-top: 16px; + padding-left: 16px; +} + +.css-i4bv87-MuiSvgIcon-root { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + width: 1em; + height: 1em; + display: inline-block; + fill: currentColor; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + font-size: 1.5rem; +} + +.css-imwso6-MuiBottomNavigationAction-label { + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 0.75rem; + opacity: 1; + -webkit-transition: font-size 0.2s, opacity 0.2s; + transition: font-size 0.2s, opacity 0.2s; + transition-delay: 0.1s; +} + +.css-imwso6-MuiBottomNavigationAction-label.Mui-selected { + font-size: 0.875rem; +} + +.css-8je8zh-MuiTouchRipple-root { + overflow: hidden; + pointer-events: none; + position: absolute; + z-index: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.css-11byix0-MuiAvatar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + width: 24px; + height: 24px; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 1.25rem; + line-height: 1; + border-radius: 0; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.css-8w0c3l-MuiPaper-root-MuiCard-root { + background-color: #fff; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + border-radius: 4px; + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + overflow: hidden; + max-width: 100%; + text-align: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + padding-top: 1rem; +} + +.css-1pqm26d-MuiAvatar-img { + width: 100%; + height: 100%; + text-align: center; + object-fit: cover; + color: transparent; + text-indent: 10000px; +} + +.css-lhfcda-MuiCardMedia-root { + display: block; + -webkit-background-size: cover; + background-size: cover; + background-repeat: no-repeat; + -webkit-background-position: center; + background-position: center; + height: 50px; + width: 50px; + background-repeat-x: no-repeat; + background-repeat-y: no-repeat; +} + +.css-1i9wt8r-MuiCardContent-root { + padding: 0px; +} + +.css-1i9wt8r-MuiCardContent-root:last-child { + padding-bottom: 24px; +} + +.css-13cyo3g-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 500; + font-size: 15px; + line-height: 1.6; + letter-spacing: 0.0075em; + margin-bottom: 0.35em; + text-align: center; +} + + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-DoY6z.style-DoY6z { + background-image: url("../images/ico-add.png"); +} + +#style-Iex2K.style-Iex2K { + background-image: url("../images/ico-list.png"); +} + +#style-tEYjZ.style-tEYjZ { + background-image: url("../images/ico-law.png"); +} + +#style-NmIv9.style-NmIv9 { + background-image: url("../images/ico-tribunal.png"); +} + +#style-ogmNm.style-ogmNm { + background-image: url("../images/ico-books.png"); +} + +#style-IcKxY.style-IcKxY { + background-image: url("../images/ico-calc.png"); +} + +#style-F4sW5.style-F4sW5 { + width: 100%; + height: 100vh; + position: absolute; + top: 0; + left: 0; + pointer-events: none; +} +#style-F4sW5 .bg{ + width: 100%; + height: 100%; + position: absolute; + background: rgba(0, 0, 0, 0); + z-index: -1; + pointer-events: none; + transition: background 0.3s; +} + +#style-F4sW5 .bg.show{ + pointer-events: auto; + background-color: rgba(0, 0, 0, 0.5); +} +.css-18hsv8r { + width: 250px; + height: 100%; + background-color: #4A4A4A; + text-align: right; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: end; + -webkit-box-align: end; + -ms-flex-align: end; + align-items: end; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + transform: translateX(250px); + transition: transform 0.3s; + pointer-events: auto; +} + +.css-18hsv8r.show{ + transform: translateX(0px); +} + +.css-1160xiw-MuiPaper-root-MuiDrawer-paper { + background-color: #fff; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12); + overflow-y: auto; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + height: 100%; + -webkit-flex: 1 0 auto; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + z-index: 1200; + -webkit-overflow-scrolling: touch; + position: fixed; + top: 0; + outline: 0; + right: 0; +} + +.css-1u2w381-MuiModal-root-MuiDrawer-root { + position: fixed; + z-index: 1200; + right: 0; + bottom: 0; + top: 0; + left: 0; +} + +.css-1sl8dhm { + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: 100%; +} + +.css-1ybg2od-MuiDivider-root { + margin: 0; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + border-width: 0; + border-style: solid; + border-color: rgba(0, 0, 0, 0.12); + border-bottom-width: thin; + margin-left: 16px; + margin-right: 16px; + background-color: white; + opacity: 0.3; +} + +.css-y7auyh-MuiButtonGroup-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + border-radius: 4px; +} + +.css-enyiw4-MuiPaper-root-MuiAppBar-root { + background-color: white; + color: #fff; + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12); + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + box-sizing: border-box; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + position: static; +} + +.css-h4y409-MuiList-root { + list-style: none; + margin: 0; + padding: 0; + position: relative; + padding-top: 8px; + padding-bottom: 8px; +} + +.css-1nxmd3h-MuiListItem-root { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + -webkit-text-decoration: none; + text-decoration: none; + width: 100%; + box-sizing: border-box; + text-align: left; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 50%; + padding: 12px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + text-align: center; + -webkit-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + font-size: 1.75rem; + overflow: visible; + -webkit-transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + margin-left: -12px; + margin-right: 16px; +} + +.css-ancrnh-MuiButtonBase-root-MuiIconButton-root:hover { + background-color: rgba(0, 0, 0, 0.04); +} + +.css-hyum1k-MuiToolbar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-left: 16px; + padding-right: 16px; + min-height: 56px; +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + padding-left: 24px; + padding-right: 24px; + } +} + +@media (orientation: landscape) { + .css-hyum1k-MuiToolbar-root { + min-height: 48px; + } +} + +@media (min-width: 600px) { + .css-hyum1k-MuiToolbar-root { + min-height: 64px; + } +} + +.css-16ac5r2-MuiButtonBase-root-MuiListItemButton-root { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: start; + -ms-flex-pack: start; + -webkit-justify-content: center; + justify-content: center; + position: relative; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; + background-color: transparent; + outline: 0; + border: 0; + margin: 0; + border-radius: 0; + padding: 0; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + -moz-appearance: none; + -webkit-appearance: none; + -webkit-text-decoration: none; + text-decoration: none; + color: inherit; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex-grow: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-justify-content: flex-start; + justify-content: flex-start; + min-width: 0; + box-sizing: border-box; + text-align: left; + padding-top: 8px; + padding-bottom: 8px; + -webkit-transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + padding-left: 16px; + padding-right: 16px; +} + +.css-16ac5r2-MuiButtonBase-root-MuiListItemButton-root:hover { + -webkit-text-decoration: none; + text-decoration: none; + background-color: rgba(0, 0, 0, 0.04); +} + +.css-11byix0-MuiAvatar-root { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-shrink: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + width: 24px; + height: 24px; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-size: 1.25rem; + line-height: 1; + border-radius: 0; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.css-8je8zh-MuiTouchRipple-root { + overflow: hidden; + pointer-events: none; + position: absolute; + z-index: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + border-radius: inherit; +} + +.css-o8jgdr-MuiListItemText-root { + -webkit-flex: 1 1 auto; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + min-width: 0; + margin-top: 4px; + margin-bottom: 4px; + color: white; + direction: rtl; + text-align: right; +} + +.css-1pqm26d-MuiAvatar-img { + width: 100%; + height: 100%; + text-align: center; + object-fit: cover; + color: transparent; + text-indent: 10000px; +} + +.css-10hburv-MuiTypography-root { + margin: 0; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + font-size: 1rem; + line-height: 1.5; + letter-spacing: 0.00938em; + display: block; +} + +.css-1osj8n2-MuiGrid-root { + box-sizing: border-box; + margin: 0; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; +} + +@media (min-width: 600px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 900px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +@media (min-width: 1200px) { + .css-1osj8n2-MuiGrid-root { + -webkit-flex-basis: 50%; + -ms-flex-preferred-size: 50%; + flex-basis: 50%; + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + -ms-flex-positive: 0; + flex-grow: 0; + max-width: 50%; + } +} + +.css-xeip47-MuiGrid-root>.MuiGrid-item { + padding-top: 16px; + padding-left: 16px; +} + +.css-xeip47-MuiGrid-root { + box-sizing: border-box; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + width: calc(100% + 16px); + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + margin-top: -16px; + margin-left: -16px; + padding: 2rem; +} + +.dashboard .dashboard-grid { + width: 100%; + height: 100%; +} + +.css-1yugkl4 { + width: 100%; + height: 90%; + overflow-y: scroll; + overflow-x: hidden; +} + +.css-8w0c3l-MuiPaper-root-MuiCard-root { + background-color: #fff; + color: rgba(0, 0, 0, 0.87); + -webkit-transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + border-radius: 4px; + box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12); + overflow: hidden; + max-width: 100%; + text-align: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + padding-top: 1rem; +} + +/* These were inline style tags. Uses id+class to override almost everything */ +#style-RcKqL.style-RcKqL { + width: 100%; +} + +#style-spA84.style-spA84 { + width: 100%; + text-align: center; +} + +.css-1x5jdmq:focus{ + outline: 0; +} + +.css-p0rm37{ + padding: 0 10px; + background-color: #fff; + transition: transform 0.3s; +} +.css-p0rm37.top{ + transform: translate(15px,-10px) scale(0.9); +} + +.css-nbfpn7{ + stroke-dasharray: 126.92; + stroke-dashoffset: 0px; + stroke: currentColor; + -webkit-transition: stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; + transition: stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; +} \ No newline at end of file diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Black.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Black.ttf new file mode 100644 index 0000000..4b9bd66 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Black.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Black.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Black.woff2 new file mode 100644 index 0000000..f08cace Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Black.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Bold.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Bold.ttf new file mode 100644 index 0000000..efa9b09 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Bold.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Bold.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Bold.woff2 new file mode 100644 index 0000000..65b427f Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Bold.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraBold.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraBold.ttf new file mode 100644 index 0000000..380bd15 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraBold.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraBold.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraBold.woff2 new file mode 100644 index 0000000..c074e70 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraBold.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraLight.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraLight.ttf new file mode 100644 index 0000000..b7b947e Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraLight.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraLight.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraLight.woff2 new file mode 100644 index 0000000..997dea0 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-ExtraLight.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Light.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Light.ttf new file mode 100644 index 0000000..2dfd5c3 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Light.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Light.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Light.woff2 new file mode 100644 index 0000000..d154722 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Light.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Medium.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Medium.ttf new file mode 100644 index 0000000..1e08dd5 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Medium.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Medium.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Medium.woff2 new file mode 100644 index 0000000..495af75 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Medium.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Regular.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Regular.ttf new file mode 100644 index 0000000..64e4a81 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Regular.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Regular.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Regular.woff2 new file mode 100644 index 0000000..c9824c8 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Regular.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-SemiBold.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-SemiBold.ttf new file mode 100644 index 0000000..6b3842a Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-SemiBold.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-SemiBold.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-SemiBold.woff2 new file mode 100644 index 0000000..5301641 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-SemiBold.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Thin.ttf b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Thin.ttf new file mode 100644 index 0000000..b7a7d23 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Thin.ttf differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn-Thin.woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Thin.woff2 new file mode 100644 index 0000000..b7df278 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn-Thin.woff2 differ diff --git a/HybridApp/wwwroot/assets/fonts/Vazirmatn[wght].woff2 b/HybridApp/wwwroot/assets/fonts/Vazirmatn[wght].woff2 new file mode 100644 index 0000000..a501289 Binary files /dev/null and b/HybridApp/wwwroot/assets/fonts/Vazirmatn[wght].woff2 differ diff --git a/HybridApp/wwwroot/assets/images/Hamburger_icon.svg b/HybridApp/wwwroot/assets/images/Hamburger_icon.svg new file mode 100644 index 0000000..233bf21 --- /dev/null +++ b/HybridApp/wwwroot/assets/images/Hamburger_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/HybridApp/wwwroot/assets/images/aparat.png b/HybridApp/wwwroot/assets/images/aparat.png new file mode 100644 index 0000000..5611aad Binary files /dev/null and b/HybridApp/wwwroot/assets/images/aparat.png differ diff --git a/HybridApp/wwwroot/assets/images/bg-intro.png b/HybridApp/wwwroot/assets/images/bg-intro.png new file mode 100644 index 0000000..30302c1 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/bg-intro.png differ diff --git a/HybridApp/wwwroot/assets/images/icc-add.png b/HybridApp/wwwroot/assets/images/icc-add.png new file mode 100644 index 0000000..bdfd5a6 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/icc-add.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-add.png b/HybridApp/wwwroot/assets/images/ico-add.png new file mode 100644 index 0000000..92e9f82 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-add.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-auction.png b/HybridApp/wwwroot/assets/images/ico-auction.png new file mode 100644 index 0000000..65ff3e6 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-auction.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-book.png b/HybridApp/wwwroot/assets/images/ico-book.png new file mode 100644 index 0000000..4e2274e Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-book.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-books.png b/HybridApp/wwwroot/assets/images/ico-books.png new file mode 100644 index 0000000..3131d0c Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-books.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-calc.png b/HybridApp/wwwroot/assets/images/ico-calc.png new file mode 100644 index 0000000..80524ff Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-calc.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-dashboard.png b/HybridApp/wwwroot/assets/images/ico-dashboard.png new file mode 100644 index 0000000..9c2f54e Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-dashboard.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-law.png b/HybridApp/wwwroot/assets/images/ico-law.png new file mode 100644 index 0000000..f5a9af2 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-law.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-list.png b/HybridApp/wwwroot/assets/images/ico-list.png new file mode 100644 index 0000000..fadeabb Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-list.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-menu.png b/HybridApp/wwwroot/assets/images/ico-menu.png new file mode 100644 index 0000000..bcd0c29 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-menu.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-tribunal.png b/HybridApp/wwwroot/assets/images/ico-tribunal.png new file mode 100644 index 0000000..89311ac Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-tribunal.png differ diff --git a/HybridApp/wwwroot/assets/images/ico-user.png b/HybridApp/wwwroot/assets/images/ico-user.png new file mode 100644 index 0000000..e2bd993 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/ico-user.png differ diff --git a/HybridApp/wwwroot/assets/images/instagram.png b/HybridApp/wwwroot/assets/images/instagram.png new file mode 100644 index 0000000..ff0fa41 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/instagram.png differ diff --git a/HybridApp/wwwroot/assets/images/logo-blue.png b/HybridApp/wwwroot/assets/images/logo-blue.png new file mode 100644 index 0000000..fb38bb6 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/logo-blue.png differ diff --git a/HybridApp/wwwroot/assets/images/logo-white.png b/HybridApp/wwwroot/assets/images/logo-white.png new file mode 100644 index 0000000..c7c6800 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/logo-white.png differ diff --git a/HybridApp/wwwroot/assets/images/logo.png b/HybridApp/wwwroot/assets/images/logo.png new file mode 100644 index 0000000..241edfc Binary files /dev/null and b/HybridApp/wwwroot/assets/images/logo.png differ diff --git a/HybridApp/wwwroot/assets/images/mini-logo.png b/HybridApp/wwwroot/assets/images/mini-logo.png new file mode 100644 index 0000000..b81e354 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/mini-logo.png differ diff --git a/HybridApp/wwwroot/assets/images/twitter.png b/HybridApp/wwwroot/assets/images/twitter.png new file mode 100644 index 0000000..271d087 Binary files /dev/null and b/HybridApp/wwwroot/assets/images/twitter.png differ diff --git a/HybridApp/wwwroot/assets/react.svg b/HybridApp/wwwroot/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/HybridApp/wwwroot/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/HybridApp/wwwroot/background.png b/HybridApp/wwwroot/background.png new file mode 100644 index 0000000..e15a3bd Binary files /dev/null and b/HybridApp/wwwroot/background.png differ diff --git a/HybridApp/wwwroot/css/app.css b/HybridApp/wwwroot/css/app.css new file mode 100644 index 0000000..e08eaff --- /dev/null +++ b/HybridApp/wwwroot/css/app.css @@ -0,0 +1,230 @@ +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css'); + +@font-face { + font-family: IRANSans; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url("fonts/iransans-fanum-black.eot"); + src: url("fonts/iransans-fanum-black.woff2") format("woff2"), url("fonts/iransans-fanum-black.woff") format("woff"), url("fonts/iransans-fanum-black.ttf") format("truetype"); +} + +@font-face { + font-family: IRANSans; + font-style: normal; + font-weight: bold; + font-display: swap; + src: url("fonts/iransans-fanum-bold.eot"); + src: url("fonts/iransans-fanum-bold.woff2") format("woff2"), url("fonts/iransans-fanum-bold.woff") format("woff"), url("fonts/iransans-fanum-bold.ttf") format("truetype"); +} + +@font-face { + font-family: IRANSans; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("fonts/iransans-fanum-medium.eot"); + src: url("fonts/iransans-fanum-medium.woff2") format("woff2"), url("fonts/iransans-fanum-medium.woff") format("woff"), url("fonts/iransans-fanum-medium.ttf") format("truetype"); +} + +@font-face { + font-family: IRANSans; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url("fonts/iransans-fanum-light.eot"); + src: url("fonts/iransans-fanum-light.woff2") format("woff2"), url("fonts/iransans-fanum-light.woff") format("woff"), url("fonts/iransans-fanum-light.ttf") format("truetype"); +} + +@font-face { + font-family: IRANSansNum; + font-style: normal; + font-weight: normal; + font-display: swap; + src: url("fonts/iransans-fanum.eot"); + src: url("fonts/iransans-fanum.woff2") format("woff2"), url("fonts/iransans-fanum.woff") format("woff"), url("fonts/iransans-fanum.ttf") format("truetype"); +} + +body{ + background-color:white; +} + +html, body, .mud-typography-caption, .mud-typography-body1, .mud-typography-body2, .mud-button, .mud-typography-h5, +.mud-typography-subtitle1 { + font-family: IRANSans, 'Helvetica Neue', Helvetica, Arial, sans-serif !important; +} + +h1:focus { + outline: none; +} + +a, .btn-link { + color: #0071c1; +} + +.btn-primary { + color: #fff; + background-color: #1b6ec2; + border-color: #1861ac; +} + +.content { + padding-top: 1.1rem; +} + +.valid.modified:not([type=checkbox]) { + outline: 1px solid #26b050; +} + +.invalid { + outline: 1px solid red; +} + +.validation-message { + color: red; +} + +#blazor-error-ui { + background: lightyellow; + bottom: 0; + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); + display: none; + left: 0; + padding: 0.6rem 1.25rem 0.7rem 1.25rem; + position: fixed; + width: 100%; + z-index: 1000; +} + + #blazor-error-ui .dismiss { + cursor: pointer; + position: absolute; + right: 0.75rem; + top: 0.5rem; + } + +.blazor-error-boundary { + background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121; + padding: 1rem 1rem 1rem 3.7rem; + color: white; +} + + .blazor-error-boundary::after { + content: "An error has occurred." + } + +.splash { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + height: 100%; + width: 100%; + justify-content: center; + align-items: center; + background-color: #393939 +} + + .splash img { + display: block; + width: 300px; + margin: auto; + } + .splash div.spinner-border { + display: block; + margin: auto; + } + +.nav-logo { + height: 1.5em +} + +.app-title { + font-size: 1em; + color: #fff; + margin-left: 10px; + margin-right: 10px; + font-weight: bold !important; + position: relative; + top: 3px; +} + +.btn-floating { + position: fixed; + bottom: 10px; + right: 10px; + height: 3em; + width: 3em; + border-radius: 50%; + box-shadow: 2px 2px 3px #999; + display: flex; + justify-content: center; + align-items: center; + line-height: 1; +} + +.zxing-result-container { + display: none +} + +.zxing-video-container { + display: flex; + justify-content: center; + align-items: center; + margin: 10px 0; +} + +.zxing-title { + text-align: center; + font-size: 1.2em +} + + +.rz-calendar { + background-color: rgb(var(--bs-primary-rgb)) !important; + border-radius: 5px !important; +} + + .rz-calendar > .rz-inputtext { + direction: ltr; + text-align: center; + background-color: transparent !important; + color: #fff !important; + } + + +.rz-calendar-button { + position: absolute !important; + left: 0 !important; + right: 0 !important; + bottom: 0 !important; + top: 0 !important; + height: 100% !important; + width: 100% !important; + transform: none !important; +} + + .rz-calendar-button .rzi-calendar { + display: none !important; + } + +.datepicker-plot-area, .datepicker-container.pwt-mobile-view .datepicker-plot-area { + font-family: IRANSans !important; +} +.clear-btn.right{ + display:none; +} +.svg-container { + display: inline-block; + position: relative; + max-width: 750px; + width: 95%; + padding-bottom: 100%; + vertical-align: middle; + overflow: hidden; +} + +.switch { + cursor: pointer; +} \ No newline at end of file diff --git a/HybridApp/wwwroot/css/bootstrap/bootstrap.min.css b/HybridApp/wwwroot/css/bootstrap/bootstrap.min.css new file mode 100644 index 0000000..02ae65b --- /dev/null +++ b/HybridApp/wwwroot/css/bootstrap/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/HybridApp/wwwroot/css/bootstrap/bootstrap.min.css.map b/HybridApp/wwwroot/css/bootstrap/bootstrap.min.css.map new file mode 100644 index 0000000..afcd9e3 --- /dev/null +++ b/HybridApp/wwwroot/css/bootstrap/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` + + + + + + + + + + diff --git a/HybridApp/wwwroot/js/Chart.min.js b/HybridApp/wwwroot/js/Chart.min.js new file mode 100644 index 0000000..a87f614 --- /dev/null +++ b/HybridApp/wwwroot/js/Chart.min.js @@ -0,0 +1,7 @@ +/*! + * Chart.js v2.9.4 + * https://www.chartjs.org + * (c) 2020 Chart.js Contributors + * Released under the MIT License + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(function(){try{return require("moment")}catch(t){}}()):"function"==typeof define&&define.amd?define(["require"],(function(t){return e(function(){try{return t("moment")}catch(t){}}())})):(t=t||self).Chart=e(t.moment)}(this,(function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var e={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},n=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[e[i]]=i);var a=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var r in a)if(a.hasOwnProperty(r)){if(!("channels"in a[r]))throw new Error("missing channels property: "+r);if(!("labels"in a[r]))throw new Error("missing channel labels property: "+r);if(a[r].labels.length!==a[r].channels)throw new Error("channel and label counts mismatch: "+r);var o=a[r].channels,s=a[r].labels;delete a[r].channels,delete a[r].labels,Object.defineProperty(a[r],"channels",{value:o}),Object.defineProperty(a[r],"labels",{value:s})}a.rgb.hsl=function(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s===o?e=0:i===s?e=(a-r)/l:a===s?e=2+(r-i)/l:r===s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},a.rgb.hsv=function(t){var e,n,i,a,r,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),d=u-Math.min(o,s,l),h=function(t){return(u-t)/6/d+.5};return 0===d?a=r=0:(r=d/u,e=h(o),n=h(s),i=h(l),o===u?a=i-n:s===u?a=1/3+e-i:l===u&&(a=2/3+n-e),a<0?a+=1:a>1&&(a-=1)),[360*a,100*r,100*u]},a.rgb.hwb=function(t){var e=t[0],n=t[1],i=t[2];return[a.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]},a.rgb.cmyk=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]},a.rgb.keyword=function(t){var i=n[t];if(i)return i;var a,r,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],d=(r=t,o=u,Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2));d.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split("").map((function(t){return t+t})).join(""));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;function i(t){var e=function(){for(var t={},e=Object.keys(n),i=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if("object"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(i)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:d,getHsla:h,getRgb:function(t){var e=d(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:c,getAlpha:function(t){var e=d(t);if(e)return e[3];if(e=h(t))return e[3];if(e=c(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return"#"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):"")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);return"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return"rgb("+n+"%, "+i+"%, "+a+"%)"},percentaString:g,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"},keyword:function(t){return b[t.slice(0,3)]}};function d(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a="";if(i){a=(i=i[1])[3];for(var r=0;rn?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new y,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],"[object Array]"===(e={}.toString.call(t))?a[r]=t.slice(0):"[object Number]"===e?a[r]=t:console.error("unexpected color value:",t));return n}},y.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},y.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i=0;a--)e.call(n,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-C.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*C.easeInBounce(2*t):.5*C.easeOutBounce(2*t-1)+.5}},P={effects:C};S.easingEffects=C;var A=Math.PI,D=A/180,T=2*A,I=A/2,F=A/4,O=2*A/3,L={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2,i/2),s=e+o,l=n+o,u=e+i-o,d=n+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,i,a=this.animations,r=0;r=n?(H.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},Q=H.options.resolve,tt=["push","pop","shift","splice","unshift"];function et(t,e){var n=t._chartjs;if(n){var i=n.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(tt.forEach((function(e){delete t[e]})),delete t._chartjs)}}var nt=function(t,e){this.initialize(t,e)};H.extend(nt.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,i=this.getDataset(),a=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!i.xAxisID||(t.xAxisID=i.xAxisID||a.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!i.yAxisID||(t.yAxisID=i.yAxisID||a.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&et(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;na?(r=a/e.innerRadius,t.arc(o,s,e.innerRadius-a,i+r,n-r,!0)):t.arc(o,s,a,i+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function ot(t,e,n){var i="inner"===e.borderAlign;i?(t.lineWidth=2*e.borderWidth,t.lineJoin="round"):(t.lineWidth=e.borderWidth,t.lineJoin="bevel"),n.fullCircles&&function(t,e,n,i){var a,r=n.endAngle;for(i&&(n.endAngle=n.startAngle+at,rt(t,n),n.endAngle=r,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=at,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+at,n.startAngle,!0),a=0;as;)a-=at;for(;a=o&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,i="inner"===n.borderAlign?.33:0,a={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/at)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,a.fullCircles){for(a.endAngle=a.startAngle+at,e.beginPath(),e.arc(a.x,a.y,a.outerRadius,a.startAngle,a.endAngle),e.arc(a.x,a.y,a.innerRadius,a.endAngle,a.startAngle,!0),e.closePath(),t=0;tt.x&&(e=bt(e,"left","right")):t.basen?n:i,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>n?n:r,l:l.left||o<0?0:o>e?e:o}}function yt(t,e,n){var i=null===e,a=null===n,r=!(!t||i&&a)&&vt(t);return r&&(i||e>=r.left&&e<=r.right)&&(a||n>=r.top&&n<=r.bottom)}N._set("global",{elements:{rectangle:{backgroundColor:pt,borderColor:pt,borderSkipped:"bottom",borderWidth:0}}});var _t=K.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=vt(t),n=e.right-e.left,i=e.bottom-e.top,a=xt(t,n/2,i/2);return{outer:{x:e.left,y:e.top,w:n,h:i},inner:{x:e.left+a.l,y:e.top+a.t,w:n-a.l-a.r,h:i-a.t-a.b}}}(e),i=n.outer,a=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(i.x,i.y,i.w,i.h),i.w===a.w&&i.h===a.h||(t.save(),t.beginPath(),t.rect(i.x,i.y,i.w,i.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return yt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return mt(n)?yt(n,t,null):yt(n,null,e)},inXRange:function(t){return yt(this._view,t,null)},inYRange:function(t){return yt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return mt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return mt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),kt={},wt=st,Mt=dt,St=gt,Ct=_t;kt.Arc=wt,kt.Line=Mt,kt.Point=St,kt.Rectangle=Ct;var Pt=H._deprecated,At=H.valueOrDefault;function Dt(t,e,n){var i,a,r=n.barThickness,o=e.stackCount,s=e.pixels[t],l=H.isNullOrUndef(r)?function(t,e){var n,i,a,r,o=t._length;for(a=1,r=e.length;a0?Math.min(o,Math.abs(i-n)):o,n=i;return o}(e.scale,e.pixels):-1;return H.isNullOrUndef(r)?(i=l*n.categoryPercentage,a=n.barPercentage):(i=r*o,a=1),{chunk:i/o,ratio:a,start:s-i/2}}N._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),N._set("global",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Tt=it.extend({dataElementType:kt.Rectangle,_dataElementOptions:["backgroundColor","borderColor","borderSkipped","borderWidth","barPercentage","barThickness","categoryPercentage","maxBarThickness","minBarLength"],initialize:function(){var t,e,n=this;it.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Pt("bar chart",e.barPercentage,"scales.[x/y]Axes.barPercentage","dataset.barPercentage"),Pt("bar chart",e.barThickness,"scales.[x/y]Axes.barThickness","dataset.barThickness"),Pt("bar chart",e.categoryPercentage,"scales.[x/y]Axes.categoryPercentage","dataset.categoryPercentage"),Pt("bar chart",n._getValueScale().options.minBarLength,"scales.[x/y]Axes.minBarLength","dataset.minBarLength"),Pt("bar chart",e.maxBarThickness,"scales.[x/y]Axes.maxBarThickness","dataset.maxBarThickness")},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e=0&&p.min>=0?p.min:p.max,y=void 0===p.start?p.end:p.max>=0&&p.min>=0?p.max-p.min:p.min-p.max,_=g.length;if(v||void 0===v&&void 0!==b)for(i=0;i<_&&(a=g[i]).index!==t;++i)a.stack===b&&(r=void 0===(u=h._parseValue(f[a.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(p.min<0&&r<0||p.max>=0&&r>0)&&(x+=r));return o=h.getPixelForValue(x),l=(s=h.getPixelForValue(x+y))-o,void 0!==m&&Math.abs(l)=0&&!c||y<0&&c?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,i){var a="flex"===i.barThickness?function(t,e,n){var i,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t=Rt?-zt:b<-Rt?zt:0)+m,y=Math.cos(b),_=Math.sin(b),k=Math.cos(x),w=Math.sin(x),M=b<=0&&x>=0||x>=zt,S=b<=Nt&&x>=Nt||x>=zt+Nt,C=b<=-Nt&&x>=-Nt||x>=Rt+Nt,P=b===-Rt||x>=Rt?-1:Math.min(y,y*p,k,k*p),A=C?-1:Math.min(_,_*p,w,w*p),D=M?1:Math.max(y,y*p,k,k*p),T=S?1:Math.max(_,_*p,w,w*p);u=(D-P)/2,d=(T-A)/2,h=-(D+P)/2,c=-(T+A)/2}for(i=0,a=g.length;i0&&!isNaN(t)?zt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,i,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,i=H.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Lt(n.hoverBackgroundColor,i(n.backgroundColor)),e.borderColor=Lt(n.hoverBorderColor,i(n.borderColor)),e.borderWidth=Lt(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n0&&Ht(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},"x-axis":function(t,e){return ae(t,e,{intersect:!1})},point:function(t,e){return ee(t,Qt(e,t))},nearest:function(t,e,n){var i=Qt(e,t);n.axis=n.axis||"xy";var a=ie(n.axis);return ne(t,i,n.intersect,a)},x:function(t,e,n){var i=Qt(e,t),a=[],r=!1;return te(t,(function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=Qt(e,t),a=[],r=!1;return te(t,(function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a}}},oe=H.extend;function se(t,e){return H.where(t,(function(t){return t.pos===e}))}function le(t,e){return t.sort((function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function ue(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function de(t,e,n){var i,a,r=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?r.height:r.width,t[n.pos]+=n.size,r.getPadding){var s=r.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(i=e.outerWidth-ue(o,t,"left","right"),a=e.outerHeight-ue(o,t,"top","bottom"),i!==t.w||a!==t.h){t.w=i,t.h=a;var l=n.horizontal?[i,t.w]:[a,t.h];return!(l[0]===l[1]||isNaN(l[0])&&isNaN(l[1]))}}function he(t,e){var n=e.maxPadding;function i(t){var i={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){i[t]=Math.max(e[t],n[t])})),i}return i(t?["left","right"]:["top","bottom"])}function ce(t,e,n){var i,a,r,o,s,l,u=[];for(i=0,a=t.length;idiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}"}))&&ge.default||ge,ve="$chartjs",be="chartjs-size-monitor",xe="chartjs-render-monitor",ye="chartjs-render-animation",_e=["animationstart","webkitAnimationStart"],ke={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function we(t,e){var n=H.getStyle(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?Number(i[1]):void 0}var Me=!!function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}()&&{passive:!0};function Se(t,e,n){t.addEventListener(e,n,Me)}function Ce(t,e,n){t.removeEventListener(e,n,Me)}function Pe(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function Ae(t){var e=document.createElement("div");return e.className=t||"",e}function De(t,e,n){var i,a,r,o,s=t[ve]||(t[ve]={}),l=s.resizer=function(t){var e=Ae(be),n=Ae(be+"-expand"),i=Ae(be+"-shrink");n.appendChild(Ae()),i.appendChild(Ae()),e.appendChild(n),e.appendChild(i),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var a=function(){e._reset(),t()};return Se(n,"scroll",a.bind(n,"expand")),Se(i,"scroll",a.bind(i,"shrink")),e}((i=function(){if(s.resizer){var i=n.options.maintainAspectRatio&&t.parentNode,a=i?i.clientWidth:0;e(Pe("resize",n)),i&&i.clientWidth0){var r=t[0];r.label?n=r.label:r.xLabel?n=r.xLabel:a>0&&r.index-1?t.split("\n"):t}function Ve(t){var e=N.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:ze(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:ze(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:ze(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:ze(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:ze(t.titleFontStyle,e.defaultFontStyle),titleFontSize:ze(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:ze(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:ze(t.footerFontStyle,e.defaultFontStyle),footerFontSize:ze(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function He(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function je(t){return Ee([],We(t))}var qe=K.extend({initialize:function(){this._model=Ve(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,i=n.beforeTitle.apply(t,arguments),a=n.title.apply(t,arguments),r=n.afterTitle.apply(t,arguments),o=[];return o=Ee(o,We(i)),o=Ee(o,We(a)),o=Ee(o,We(r))},getBeforeBody:function(){return je(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return H.each(t,(function(t){var r={before:[],lines:[],after:[]};Ee(r.before,We(i.beforeLabel.call(n,t,e))),Ee(r.lines,i.label.call(n,t,e)),Ee(r.after,We(i.afterLabel.call(n,t,e))),a.push(r)})),a},getAfterBody:function(){return je(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),i=e.footer.apply(t,arguments),a=e.afterFooter.apply(t,arguments),r=[];return r=Ee(r,We(n)),r=Ee(r,We(i)),r=Ee(r,We(a))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=Ve(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var _=[],k=[];y=Be[c.position].call(h,p,h._eventPosition);var w=[];for(e=0,n=p.length;ei.width&&(a=i.width-e.width),a<0&&(a=0)),"top"===d?r+=h:r-="bottom"===d?e.height+h:e.height/2,"center"===d?"left"===u?a+=h:"right"===u&&(a-=h):"left"===u?a-=c:"right"===u&&(a+=c),{x:a,y:r}}(g,x,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d="center",h="center";s.yl.height-e.height&&(h="bottom");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(d="left",a(s.x)&&(d="center",h=o(s.y))):i(s.x)&&(d="right",r(s.x)&&(d="center",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if("center"===c)s=g+m/2,"left"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+p)+u,r=i,o=s-u,l=s+u);else if("left"===h?(i=(a=f+d+u)-u,r=a+u):"right"===h?(i=(a=f+p-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),"top"===c)s=(o=g)-u,l=o;else{s=(o=g+m)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var i,a,r,o=e.title,s=o.length;if(s){var l=Ne(e.rtl,e.x,e.width);for(t.x=He(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline="middle",i=e.titleFontSize,a=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=H.fontString(i,e._titleFontStyle,e._titleFontFamily),r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,H.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),H.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],"mouseout"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!H.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),Ue=Be,Ye=qe;Ye.positioners=Ue;var Ge=H.valueOrDefault;function Xe(){return H.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,n,i){if("xAxes"===t||"yAxes"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?H.merge(e[t][a],[Re.getScaleDefaults(r),o]):H.merge(e[t][a],o)}else H._merger(t,e,n,i)}})}function Ke(){return H.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||Object.create(null),r=n[t];"scales"===t?e[t]=Xe(a,r):"scale"===t?e[t]=H.merge(a,[Re.getScaleDefaults(r.type),r]):H._merger(t,e,n,i)}})}function Ze(t){var e=t.options;H.each(t.scales,(function(e){pe.removeBox(t,e)})),e=Ke(N.global,N[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function $e(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(H.findIndex(t,a)>=0);return i}function Je(t){return"top"===t||"bottom"===t}function Qe(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}N._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var tn=function(t,e){return this.construct(t,e),this};H.extend(tn.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||Object.create(null)).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Ke(N.global,N[t.type],t.options||{}),t}(e);var i=Oe.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=H.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,tn.instances[n.id]=n,Object.defineProperty(n,"data",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return Le.notify(t,"beforeInit"),H.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,"afterInit"),t},clear:function(){return H.canvas.clear(this),this},stop:function(){return J.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(H.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:H.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+"px",i.style.height=o+"px",H.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,"resize",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;H.each(e.xAxes,(function(t,n){t.id||(t.id=$e(e.xAxes,"x-axis-",n))})),H.each(e.yAxes,(function(t,n){t.id||(t.id=$e(e.yAxes,"y-axis-",n))})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&i.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),H.each(i,(function(e){var i=e.options,r=i.id,o=Ge(i.type,e.dtype);Je(i.position)!==Je(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Re.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),H.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Re.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;--n)this.drawDataset(e[n],t);Le.notify(this,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Le.notify(this,"beforeDatasetDraw",[n])&&(t.controller.draw(e),Le.notify(this,"afterDatasetDraw",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Le.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),Le.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return re.modes.single(this,t)},getElementsAtEvent:function(t){return re.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return re.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=re.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return re.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=H.log10(Math.abs(i)),r="";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=H.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toExponential(s)}else{var l=-1*Math.floor(a);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(H.log10(t)));return 0===t?"0":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():""}}},sn=H.isArray,ln=H.isNullOrUndef,un=H.valueOrDefault,dn=H.valueAtIndexOrDefault;function hn(t,e,n){var i,a=t.getTicks().length,r=Math.min(e,a-1),o=t.getPixelForTick(r),s=t._startPixel,l=t._endPixel;if(!(n&&(i=1===a?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(r-1))/2,(o+=rl+1e-6)))return o}function cn(t,e,n,i){var a,r,o,s,l,u,d,h,c,f,g,p,m,v=n.length,b=[],x=[],y=[],_=0,k=0;for(a=0;ae){for(n=0;n=c||d<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,i=Math.min(s.maxWidth,s.chart.width-e),e+6>(a=l.offset?s.maxWidth/d:i/(d-1))&&(a=i/(d-(l.offset?.5:1)),r=s.maxHeight-fn(l.gridLines)-u.padding-gn(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=H.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/a,1)),Math.asin(Math.min(r/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(c,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){H.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){H.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=t._isVisible(),l="bottom"===i.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=fn(o)+gn(r)),u?s&&(e.height=fn(o)+gn(r)):e.height=t.maxHeight,a.display&&s){var d=mn(a),h=t._getLabelSizes(),c=h.first,f=h.last,g=h.widest,p=h.highest,m=.4*d.minor.lineHeight,v=a.padding;if(u){var b=0!==t.labelRotation,x=H.toRadians(t.labelRotation),y=Math.cos(x),_=Math.sin(x),k=_*g.width+y*(p.height-(b?p.offset:0))+(b?0:m);e.height=Math.min(t.maxHeight,e.height+k+v);var w,M,S=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(t.getTicks().length-1);b?(w=l?y*c.width+_*c.offset:_*(c.height-c.offset),M=l?_*(f.height-f.offset):y*f.width+_*f.offset):(w=c.width/2,M=f.width/2),t.paddingLeft=Math.max((w-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-C)*t.width/(t.width-C),0)+3}else{var P=a.mirror?0:g.width+v+m;e.width=Math.min(t.maxWidth,e.width+P),t.paddingTop=c.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){H.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ln(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,i,a=this;for(a.ticks=t.map((function(t){return t.value})),a.beforeTickToLabelConversion(),e=a.convertTicksToLabels(t)||a.ticks,a.afterTickToLabelConversion(),n=0,i=t.length;nn-1?null:this.getPixelForDecimal(t*i+(e?i/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,a,r=this.options.ticks,o=this._length,s=r.maxTicksLimit||o/this._tickSize()+1,l=r.major.enabled?function(t){var e,n,i=[];for(e=0,n=t.length;es)return function(t,e,n){var i,a,r=0,o=e[0];for(n=Math.ceil(n),i=0;iu)return r;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e1?(h-d)/(u-1):null,bn(t,i,H.isNullOrUndef(a)?0:d-a,d),bn(t,i,h,H.isNullOrUndef(a)?t.length:h+a),vn(t)}return bn(t,i),vn(t)},_tickSize:function(){var t=this.options.ticks,e=H.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),i=Math.abs(Math.sin(e)),a=this._getLabelSizes(),r=t.autoSkipPadding||0,o=a?a.widest.width+r:0,s=a?a.highest.height+r:0;return this.isHorizontal()?s*n>o*i?o/n:s/i:s*i=0&&(o=t),void 0!==r&&(t=n.indexOf(r))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;yn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var i,a,r,o=this;return _n(e)||_n(n)||(t=o.chart.data.datasets[n].data[e]),_n(t)||(i=o.isHorizontal()?t.x:t.y),(void 0!==i||void 0!==t&&isNaN(e))&&(a=o._getLabels(),t=H.valueOrDefault(i,t),e=-1!==(r=a.indexOf(t))?r:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),wn={position:"bottom"};kn._defaults=wn;var Mn=H.noop,Sn=H.isNullOrUndef;var Cn=yn.extend({getRightValue:function(t){return"string"==typeof t?+t:yn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=H.sign(t.min),i=H.sign(t.max);n<0&&i<0?t.max=0:n>0&&i>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,i=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:Mn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:H.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=H.niceNum((g-f)/u/l)*l;if(p<1e-14&&Sn(d)&&Sn(h))return[f,g];(r=Math.ceil(g/p)-Math.floor(f/p))>u&&(p=H.niceNum(r*p/u/l)*l),s||Sn(c)?n=Math.pow(10,H._decimalPlaces(p)):(n=Math.pow(10,c),p=Math.ceil(p*n)/n),i=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!Sn(d)&&H.almostWhole(d/p,p/1e3)&&(i=d),!Sn(h)&&H.almostWhole(h/p,p/1e3)&&(a=h)),r=(a-i)/p,r=H.almostEquals(r,Math.round(r),p/1e3)?Math.round(r):Math.ceil(r),i=Math.round(i*n)/n,a=Math.round(a*n)/n,o.push(Sn(d)?i:d);for(var m=1;me.length-1?null:this.getPixelForValue(e[t])}}),In=Pn;Tn._defaults=In;var Fn=H.valueOrDefault,On=H.math.log10;var Ln={position:"left",ticks:{callback:on.formatters.logarithmic}};function Rn(t,e){return H.isFinite(t)&&t>=0?t:e}var zn=yn.extend({determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.options,l=o.chart,u=l.data.datasets,d=o.isHorizontal();function h(t){return d?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var c=s.stacked;if(void 0===c)for(t=0;t0){var e=H.min(t),n=H.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(On(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:Rn(e.min),max:Rn(e.max)},a=t.ticks=function(t,e){var n,i,a=[],r=Fn(t.min,Math.pow(10,Math.floor(On(e.min)))),o=Math.floor(On(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(n=Math.floor(On(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(r),r=i*Math.pow(10,n)):(n=Math.floor(On(r)),i=Math.floor(r/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(r),10===++i&&(i=1,l=++n>=0?1:l),r=Math.round(i*Math.pow(10,n)*l)/l}while(ne.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(On(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;yn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=Fn(t.options.ticks.fontSize,N.global.defaultFontSize)/t._length),t._startValue=On(e),t._valueOffset=n,t._valueRange=(On(t.max)-On(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(On(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),Nn=Ln;zn._defaults=Nn;var Bn=H.valueOrDefault,En=H.valueAtIndexOrDefault,Wn=H.options.resolve,Vn={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:on.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Hn(t){var e=t.ticks;return e.display&&t.display?Bn(e.fontSize,N.global.defaultFontSize)+2*e.backdropPaddingY:0}function jn(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:ta?{start:e-n,end:e}:{start:e,end:e+n}}function qn(t){return 0===t||180===t?"center":t<180?"left":"right"}function Un(t,e,n,i){var a,r,o=n.y+i/2;if(H.isArray(e))for(a=0,r=e.length;a270||t<90)&&(n.y-=e.h)}function Gn(t){return H.isNumber(t)?t:0}var Xn=Cn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Hn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;H.each(e.data.datasets,(function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);H.each(a.data,(function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Hn(this.options))},convertTicksToLabels:function(){var t=this;Cn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=H.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:""}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,i,a=H.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=t.chart.data.labels.length;for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(i.height-i.paddingTop),0)/Math.cos(n.b);a=Gn(a),r=Gn(r),o=Gn(o),s=Gn(s),i.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-a.paddingTop-i-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(H.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,i=this,a=i.ctx,r=i.options,o=r.gridLines,s=r.angleLines,l=Bn(s.lineWidth,o.lineWidth),u=Bn(s.color,o.color);if(r.pointLabels.display&&function(t){var e=t.ctx,n=t.options,i=n.pointLabels,a=Hn(n),r=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=H.options._parseFont(i);e.save(),e.font=o.string,e.textBaseline="middle";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?a/2:0,u=t.getPointPosition(s,r+l+5),d=En(i.fontColor,s,N.global.defaultFontColor);e.fillStyle=d;var h=t.getIndexAngle(s),c=H.toDegrees(h);e.textAlign=qn(c),Yn(c,t._pointLabelSizes[s],u),Un(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(i),o.display&&H.each(i.ticks,(function(t,n){0!==n&&(e=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),function(t,e,n,i){var a,r=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=En(e.color,i-1),u=En(e.lineWidth,i-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{a=t.getPointPosition(0,n),r.moveTo(a.x,a.y);for(var d=1;d=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=H.options._parseFont(n),s=Bn(n.fontColor,N.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign="center",e.textBaseline="middle",H.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:H.noop}),Kn=Vn;Xn._defaults=Kn;var Zn=H._deprecated,$n=H.options.resolve,Jn=H.valueOrDefault,Qn=Number.MIN_SAFE_INTEGER||-9007199254740991,ti=Number.MAX_SAFE_INTEGER||9007199254740991,ei={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ni=Object.keys(ei);function ii(t,e){return t-e}function ai(t){return H.valueOrDefault(t.time.min,t.ticks.min)}function ri(t){return H.valueOrDefault(t.time.max,t.ticks.max)}function oi(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function si(t,e){var n=t._adapter,i=t.options.time,a=i.parser,r=a||i.format,o=e;return"function"==typeof a&&(o=a(o)),H.isFinite(o)||(o="string"==typeof r?n.parse(o,r):n.parse(o)),null!==o?+o:(a||"function"!=typeof r||(o=r(e),H.isFinite(o)||(o=n.parse(o))),o)}function li(t,e){if(H.isNullOrUndef(e))return null;var n=t.options.time,i=si(t,t.getRightValue(e));return null===i?i:(n.round&&(i=+t._adapter.startOf(i,n.round)),i)}function ui(t,e,n,i){var a,r,o,s=ni.length;for(a=ni.indexOf(t);a=0&&(e[r].major=!0);return e}(t,r,o,n):r}var hi=yn.extend({initialize:function(){this.mergeTicksOptions(),yn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),i=t._adapter=new rn._date(e.adapters.date);return Zn("time scale",n.format,"time.format","time.parser"),Zn("time scale",n.min,"time.min","ticks.min"),Zn("time scale",n.max,"time.max","ticks.max"),H.mergeIf(n.displayFormats,i.formats()),yn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),yn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o,s=this,l=s.chart,u=s._adapter,d=s.options,h=d.time.unit||"day",c=ti,f=Qn,g=[],p=[],m=[],v=s._getLabels();for(t=0,n=v.length;t1?function(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e1e5*u)throw e+" and "+n+" are too far apart with stepSize of "+u+" "+l;for(a=h;a=a&&n<=r&&d.push(n);return i.min=a,i.max=r,i._unit=l.unit||(s.autoSkip?ui(l.minUnit,i.min,i.max,h):function(t,e,n,i,a){var r,o;for(r=ni.length-1;r>=ni.indexOf(n);r--)if(o=ni[r],ei[o].common&&t._adapter.diff(a,i,o)>=e-1)return o;return ni[n?ni.indexOf(n):0]}(i,d.length,l.minUnit,i.min,i.max)),i._majorUnit=s.major.enabled&&"year"!==i._unit?function(t){for(var e=ni.indexOf(t)+1,n=ni.length;ee&&s=0&&t0?s:1}}),ci={position:"bottom",distribution:"linear",bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}};hi._defaults=ci;var fi={category:kn,linear:Tn,logarithmic:zn,radialLinear:Xn,time:hi},gi={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};rn._date.override("function"==typeof t?{_id:"moment",formats:function(){return gi},parse:function(e,n){return"string"==typeof e&&"string"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,i){return t(e).add(n,i).valueOf()},diff:function(e,n,i){return t(e).diff(t(n),i)},startOf:function(e,n,i){return e=t(e),"isoWeek"===n?e.isoWeekday(i).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),N._set("global",{plugins:{filler:{propagate:!0}}});var pi={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e=n)&&i;switch(r){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return r;default:return!1}}function vi(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,i,a,r,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,d=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,i=o.getPointPositionForValue(0,e),a=0;a0;--r)H.canvas.lineTo(t,n[r],n[r-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),r=a-1;r>0;--r)t.arc(o,s,l,n[r].angle,n[r-1].angle,!0)}}function ki(t,e,n,i,a,r){var o,s,l,u,d,h,c,f,g=e.length,p=i.spanGaps,m=[],v=[],b=0,x=0;for(t.beginPath(),o=0,s=g;o=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||N.global.defaultColor,o&&s&&r.length&&(H.canvas.clipArea(u,t.chartArea),ki(u,r,o,a,s,i._loop),H.canvas.unclipArea(u)))}},Mi=H.rtl.getRtlAdapter,Si=H.noop,Ci=H.valueOrDefault;function Pi(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}N._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement("ul"),r=t.data.datasets;for(a.setAttribute("class",t.id+"-legend"),e=0,n=r.length;el.width)&&(h+=o+n.padding,d[d.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:i,height:o},d[d.length-1]+=i+n.padding})),l.height+=h}else{var c=n.padding,f=t.columnWidths=[],g=t.columnHeights=[],p=n.padding,m=0,v=0;H.each(t.legendItems,(function(t,e){var i=Pi(n,o)+o/2+a.measureText(t.text).width;e>0&&v+o+2*c>l.height&&(p+=m+n.padding,f.push(m),g.push(v),m=0,v=0),m=Math.max(m,i),v+=o+c,s[e]={left:0,top:0,width:i,height:o}})),p+=m,f.push(m),g.push(v),l.width+=p}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:Si,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,i=N.global,a=i.defaultColor,r=i.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var d,h=Mi(e.rtl,t.left,t.minSize.width),c=t.ctx,f=Ci(n.fontColor,i.defaultFontColor),g=H.options._parseFont(n),p=g.size;c.textAlign=h.textAlign("left"),c.textBaseline="middle",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=g.string;var m=Pi(n,p),v=t.legendHitBoxes,b=function(t,i){switch(e.align){case"start":return n.padding;case"end":return t-i;default:return(t-i+n.padding)/2}},x=t.isHorizontal();d=x?{x:t.left+b(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+b(o,s[0]),line:0},H.rtl.overrideTextDirection(t.ctx,e.textDirection);var y=p+n.padding;H.each(t.legendItems,(function(e,i){var f=c.measureText(e.text).width,g=m+p/2+f,_=d.x,k=d.y;h.setWidth(t.minSize.width),x?i>0&&_+g+n.padding>t.left+t.minSize.width&&(k=d.y+=y,d.line++,_=d.x=t.left+b(l,u[d.line])):i>0&&k+y>t.top+t.minSize.height&&(_=d.x=_+t.columnWidths[d.line]+n.padding,d.line++,k=d.y=t.top+b(o,s[d.line]));var w=h.x(_);!function(t,e,i){if(!(isNaN(m)||m<=0)){c.save();var o=Ci(i.lineWidth,r.borderWidth);if(c.fillStyle=Ci(i.fillStyle,a),c.lineCap=Ci(i.lineCap,r.borderCapStyle),c.lineDashOffset=Ci(i.lineDashOffset,r.borderDashOffset),c.lineJoin=Ci(i.lineJoin,r.borderJoinStyle),c.lineWidth=o,c.strokeStyle=Ci(i.strokeStyle,a),c.setLineDash&&c.setLineDash(Ci(i.lineDash,r.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+p/2;H.canvas.drawPoint(c,i.pointStyle,s,l,u,i.rotation)}else c.fillRect(h.leftForLtr(t,m),e,m,p),0!==o&&c.strokeRect(h.leftForLtr(t,m),e,m,p);c.restore()}}(w,k,e),v[i].left=h.leftForLtr(w,v[i].width),v[i].top=k,function(t,e,n,i){var a=p/2,r=h.xPlus(t,m+a),o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(h.xPlus(r,i),o),c.stroke())}(w,k,e,f),x?d.x+=g+n.padding:d.y+=y})),H.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,i,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,n=0;n=(i=a[n]).left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height)return r.legendItems[n];return null},handleEvent:function(t){var e,n=this,i=n.options,a="mouseup"===t.type?"click":t.type;if("mousemove"===a){if(!i.onHover&&!i.onLeave)return}else{if("click"!==a)return;if(!i.onClick)return}e=n._getLegendItemAt(t.x,t.y),"click"===a?e&&i.onClick&&i.onClick.call(n,t.native,e):(i.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),i.onHover&&e&&i.onHover.call(n,t.native,e))}});function Di(t,e){var n=new Ai({ctx:t.ctx,options:e,chart:t});pe.configure(t,n,e),pe.addBox(t,n),t.legend=n}var Ti={id:"legend",_element:Ai,beforeInit:function(t){var e=t.options.legend;e&&Di(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(H.mergeIf(e,N.global.legend),n?(pe.configure(t,n,e),n.options=e):Di(t,e)):n&&(pe.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Ii=H.noop;N._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Fi=K.extend({initialize:function(t){H.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Ii,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:Ii,beforeSetDimensions:Ii,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Ii,beforeBuildLabels:Ii,buildLabels:Ii,afterBuildLabels:Ii,beforeFit:Ii,fit:function(){var t,e=this,n=e.options,i=e.minSize={},a=e.isHorizontal();n.display?(t=(H.isArray(n.text)?n.text.length:1)*H.options._parseFont(n).lineHeight+2*n.padding,e.width=i.width=a?e.maxWidth:t,e.height=i.height=a?t:e.maxHeight):e.width=i.width=e.height=i.height=0},afterFit:Ii,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var i,a,r,o=H.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=H.valueOrDefault(n.fontColor,N.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,i=f-h):(a="left"===n.position?h+l:f-l,r=d+(c-d)/2,i=c-d,u=Math.PI*("left"===n.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign="center",e.textBaseline="middle";var g=n.text;if(H.isArray(g))for(var p=0,m=0;m=0;i--){var a=t[i];if(e(a))return a}},H.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},H.almostEquals=function(t,e,n){return Math.abs(t-e)=t},H.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},H.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},H.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},H.toRadians=function(t){return t*(Math.PI/180)},H.toDegrees=function(t){return t*(180/Math.PI)},H._decimalPlaces=function(t){if(H.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},H.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},H.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},H.aliasPixel=function(t){return t%2==0?0:.5},H._alignPixel=function(t,e,n){var i=t.currentDevicePixelRatio,a=n/2;return Math.round((e-a)*i)/i+a},H.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},H.EPSILON=Number.EPSILON||1e-14,H.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},H.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},H.niceNum=function(t,e){var n=Math.floor(H.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},H.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},H.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var l=parseFloat(H.getStyle(r,"padding-left")),u=parseFloat(H.getStyle(r,"padding-top")),d=parseFloat(H.getStyle(r,"padding-right")),h=parseFloat(H.getStyle(r,"padding-bottom")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},H.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},H.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},H._calculatePadding=function(t,e,n){return(e=H.getStyle(t,e)).indexOf("%")>-1?n*parseInt(e,10)/100:parseInt(e,10)},H._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},H.getMaximumWidth=function(t){var e=H._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-H._calculatePadding(e,"padding-left",n)-H._calculatePadding(e,"padding-right",n),a=H.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},H.getMaximumHeight=function(t){var e=H._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-H._calculatePadding(e,"padding-top",n)-H._calculatePadding(e,"padding-bottom",n),a=H.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},H.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},H.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+"px",i.style.width=r+"px")}},H.fontString=function(t,e,n){return e+" "+t+"px "+n},H.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var o,s,l,u,d,h=0,c=n.length;for(o=0;on.length){for(o=0;oi&&(i=r),i},H.numberOfLabelLines=function(t){var e=1;return H.each(t,(function(t){H.isArray(t)&&t.length>e&&(e=t.length)})),e},H.color=_?function(t){return t instanceof CanvasGradient&&(t=N.global.defaultColor),_(t)}:function(t){return console.error("Color.js not found!"),t},H.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:H.color(t).saturate(.5).darken(.1).rgbString()}}(),en._adapters=rn,en.Animation=$,en.animationService=J,en.controllers=Jt,en.DatasetController=it,en.defaults=N,en.Element=K,en.elements=kt,en.Interaction=re,en.layouts=pe,en.platform=Oe,en.plugins=Le,en.Scale=yn,en.scaleService=Re,en.Ticks=on,en.Tooltip=Ye,en.helpers.each(fi,(function(t,e){en.scaleService.registerScaleType(e,t,t._defaults)})),Li)Li.hasOwnProperty(Bi)&&en.plugins.register(Li[Bi]);en.platform.initialize();var Ei=en;return"undefined"!=typeof window&&(window.Chart=en),en.Chart=en,en.Legend=Li.legend._element,en.Title=Li.title._element,en.pluginService=en.plugins,en.PluginBase=en.Element.extend({}),en.canvasHelpers=en.helpers.canvas,en.layoutService=en.layouts,en.LinearScaleBase=Cn,en.helpers.each(["Bar","Bubble","Doughnut","Line","PolarArea","Radar","Scatter"],(function(t){en[t]=function(e,n){return new en(e,en.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Ei})); diff --git a/HybridApp/wwwroot/js/datepicker.min.js b/HybridApp/wwwroot/js/datepicker.min.js new file mode 100644 index 0000000..125e46b --- /dev/null +++ b/HybridApp/wwwroot/js/datepicker.min.js @@ -0,0 +1,197 @@ +function blazorReady( + dotnetReference, + elementId, + calendarType, + calendarSwitchEnabled, + hasExplicitDigitType, + digitType, + initialValue, + dateFormat, + minDate, + pickerAlign, + pickerTop, + themeName +) { + $('#' + elementId + '.blazor-datepicker').each(function () { + let $datePicker = Zepto(this); + $datePicker.pDatepicker( + { + calendarType: calendarType, + onShow: function () { + // Add class for themes + let instanceId = $datePicker.pDatePicker.model.view.id; + var dp = document.getElementById(instanceId); + if (dp.classList.contains(themeName) == false) { + dp.classList.add(themeName); + } + adjustPosition($datePicker, pickerAlign, pickerTop); + }, + toolbox: { + calendarSwitch: { + enabled: calendarSwitchEnabled, + onSwitch: function () { + var elementId = $datePicker.attr('id'); + if (hasExplicitDigitType) { + let modifiedValue; + if (digitType == 'fa') { + modifiedValue = toPersianNum($datePicker.val()); + } else if (digitType == 'en') { + modifiedValue = toEnglishNum($datePicker.val()); + } + $datePicker.val(modifiedValue); + } + adjustPosition($datePicker, pickerAlign, pickerTop); + dotnetReference.invokeMethodAsync("SetDate", null, elementId, true); + } + }, + todayButton: { + onToday: function () { + var elementId = $datePicker.attr('id'); + if (hasExplicitDigitType) { + let modifiedValue; + if (digitType == 'fa') { + modifiedValue = toPersianNum($datePicker.val()); + } else if (digitType == 'en') { + modifiedValue = toEnglishNum($datePicker.val()); + } + $datePicker.val(modifiedValue); + } + adjustPosition($datePicker, pickerAlign, pickerTop); + dotnetReference.invokeMethodAsync("SetDate", null, elementId, false); + } + } + }, + altField: "#mydate", + altFormat: dateFormat, + observer: true, + format: dateFormat, + initialValue: initialValue, + initialValueType: calendarType, + autoClose: true, + minDate: minDate, + position: "auto", + onSelect: function (date) { + var elementId = $datePicker.attr('id'); + dotnetReference.invokeMethodAsync("SetDate", date, elementId, false); + }, + yearPicker: { + onSelect: function () { + adjustPosition($datePicker, pickerAlign, pickerTop); + } + }, + monthPicker: { + onSelect: function () { + adjustPosition($datePicker, pickerAlign, pickerTop); + } + }, + navigator: { + onNext: function () { + adjustPosition($datePicker, pickerAlign, pickerTop); + }, + onPrev: function () { + adjustPosition($datePicker, pickerAlign, pickerTop); + }, + onSwitch: function () { + adjustPosition($datePicker, pickerAlign, pickerTop); + } + } + }, + ) + }); + + $(document).click(function (e) { + try { + var selectedObject = e.target.className; + + if (selectedObject != "") { + if (!(selectedObject.includes('year-item')) && !(selectedObject.includes('month-item')) && + !(selectedObject.includes('pwt-btn')) || (selectedObject.includes('pwt-btn-close'))) { + $('.datepicker-container').addClass('pwt-hide'); + } + } + } + catch + { + console.log("ssss") + } + }); +}; + +function clearInput(inp) { + $(inp).val(''); +} + +function adjustPosition($datePicker, align, top) { + let instanceId = $datePicker.pDatePicker.model.view.id; + let picker = $(`#${instanceId} > #plotId`) + // Adjust position + if (align == "left") { + var pickerPopupWidth = picker.width(); + var elementWidth = $datePicker.width(); + + var popUpRightPosition = elementWidth - pickerPopupWidth; + + picker.css("right", popUpRightPosition); + } + + picker.css("top", top + "px") +} + +function toPersianNum(num, dontTrim) { + + var i = 0, + + dontTrim = dontTrim || false, + + num = dontTrim ? num.toString() : num.toString().trim(), + len = num.length, + + res = '', + pos, + + persianNumbers = typeof persianNumber == 'undefined' ? + ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'] : + persianNumbers; + + for (; i < len; i++) + if ((pos = persianNumbers[num.charAt(i)])) + res += pos; + else + res += num.charAt(i); + + return res; +}; + +function toEnglishNum(num, dontTrim) { + var i = 0, + j = 0, + dontTrim = dontTrim || false, + num = dontTrim ? num.toString() : num.toString().trim(), + len = num.length, + res = '', + pos, + persianNumbers = typeof persianNumber == 'undefined' ? + ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'] : + persianNumbers; + + for (; i < len; i++) + if (~(pos = persianNumbers.indexOf(num.charAt(i)))) + res += pos; + else + res += num.charAt(i); + return res; +}; + +try { + !function (e, t) { "function" == typeof define && define.amd ? define(function () { return t(e) }) : t(e) }(this, function (e) { var t = function () { function t(e) { return null == e ? String(e) : B[q.call(e)] || "object" } function n(e) { return "function" == t(e) } function i(e) { return null != e && e == e.window } function a(e) { return null != e && e.nodeType == e.DOCUMENT_NODE } function r(e) { return "object" == t(e) } function o(e) { return r(e) && !i(e) && Object.getPrototypeOf(e) == Object.prototype } function s(e) { var t = !!e && "length" in e && e.length, n = x.type(e); return "function" != n && !i(e) && ("array" == n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e) } function l(e) { return e.length > 0 ? x.fn.concat.apply([], e) : e } function u(e) { return e.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase() } function d(e) { return e in j ? j[e] : j[e] = new RegExp("(^|\\s)" + e + "(\\s|$)") } function c(e, t) { return "number" != typeof t || A[u(e)] ? t : t + "px" } function h(e) { return "children" in e ? O.call(e.children) : x.map(e.childNodes, function (e) { return 1 == e.nodeType ? e : void 0 }) } function f(e, t) { var n, i = e ? e.length : 0; for (n = 0; i > n; n++)this[n] = e[n]; this.length = i, this.selector = t || "" } function m(e, t, n) { for (k in t) n && (o(t[k]) || X(t[k])) ? (o(t[k]) && !o(e[k]) && (e[k] = {}), X(t[k]) && !X(e[k]) && (e[k] = []), m(e[k], t[k], n)) : t[k] !== b && (e[k] = t[k]) } function p(e, t) { return null == t ? x(e) : x(e).filter(t) } function v(e, t, i, a) { return n(t) ? t.call(e, i, a) : t } function y(e, t, n) { null == n ? e.removeAttribute(t) : e.setAttribute(t, n) } function g(e, t) { var n = e.className || "", i = n && n.baseVal !== b; return t === b ? i ? n.baseVal : n : void (i ? n.baseVal = t : e.className = t) } function w(e) { try { return e ? "true" == e || "false" != e && ("null" == e ? null : +e + "" == e ? +e : /^[\[\{]/.test(e) ? x.parseJSON(e) : e) : e } catch (t) { return e } } var b, k, x, D, M, T, S = [], _ = S.concat, P = S.filter, O = S.slice, E = e.document, C = {}, j = {}, A = { "column-count": 1, columns: 1, "font-weight": 1, "line-height": 1, opacity: 1, "z-index": 1, zoom: 1 }, Y = /^\s*<(\w+|!)[^>]*>/, Z = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, N = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, I = /^(?:body|html)$/i, L = /([A-Z])/g, F = ["val", "css", "html", "text", "data", "width", "height", "offset"], V = E.createElement("table"), R = E.createElement("tr"), z = { tr: E.createElement("tbody"), tbody: V, thead: V, tfoot: V, td: R, th: R, "*": E.createElement("div") }, H = /complete|loaded|interactive/, U = /^[\w-]*$/, B = {}, q = B.toString, J = {}, $ = E.createElement("div"), W = { tabindex: "tabIndex", readonly: "readOnly", for: "htmlFor", class: "className", maxlength: "maxLength", cellspacing: "cellSpacing", cellpadding: "cellPadding", rowspan: "rowSpan", colspan: "colSpan", usemap: "useMap", frameborder: "frameBorder", contenteditable: "contentEditable" }, X = Array.isArray || function (e) { return e instanceof Array }; + return J.matches = function (e, t) { if (!t || !e || 1 !== e.nodeType) return !1; + var n = e.matches || e.webkitMatchesSelector || e.mozMatchesSelector || e.oMatchesSelector || e.matchesSelector; if (n) return n.call(e, t); var i, a = e.parentNode, r = !a; return r && (a = $).appendChild(e), i = ~J.qsa(a, t).indexOf(e), r && $.removeChild(e), i }, M = function (e) { return e.replace(/-+(.)?/g, function (e, t) { return t ? t.toUpperCase() : "" }) }, T = function (e) { return P.call(e, function (t, n) { return e.indexOf(t) == n }) }, J.fragment = function (e, t, n) { var i, a, r; return Z.test(e) && (i = x(E.createElement(RegExp.$1))), i || (e.replace && (e = e.replace(N, "<$1>")), t === b && (t = Y.test(e) && RegExp.$1), t in z || (t = "*"), (r = z[t]).innerHTML = "" + e, i = x.each(O.call(r.childNodes), function () { r.removeChild(this) })), o(n) && (a = x(i), x.each(n, function (e, t) { F.indexOf(e) > -1 ? a[e](t) : a.attr(e, t) })), i }, J.Z = function (e, t) { return new f(e, t) }, J.isZ = function (e) { return e instanceof J.Z }, J.init = function (e, t) { var i; if (!e) return J.Z(); if ("string" == typeof e) if ("<" == (e = e.trim())[0] && Y.test(e)) i = J.fragment(e, RegExp.$1, t), e = null; else { if (t !== b) return x(t).find(e); i = J.qsa(E, e) } else { if (n(e)) return x(E).ready(e); if (J.isZ(e)) return e; if (X(e)) i = function (e) { return P.call(e, function (e) { return null != e }) }(e); else if (r(e)) i = [e], e = null; else if (Y.test(e)) i = J.fragment(e.trim(), RegExp.$1, t), e = null; else { if (t !== b) return x(t).find(e); i = J.qsa(E, e) } } return J.Z(i, e) }, (x = function (e, t) { return J.init(e, t) }).extend = function (e) { var t, n = O.call(arguments, 1); return "boolean" == typeof e && (t = e, e = n.shift()), n.forEach(function (n) { m(e, n, t) }), e }, J.qsa = function (e, t) { var n, i = "#" == t[0], a = !i && "." == t[0], r = i || a ? t.slice(1) : t, o = U.test(r); return e.getElementById && o && i ? (n = e.getElementById(r)) ? [n] : [] : 1 !== e.nodeType && 9 !== e.nodeType && 11 !== e.nodeType ? [] : O.call(o && !i && e.getElementsByClassName ? a ? e.getElementsByClassName(r) : e.getElementsByTagName(t) : e.querySelectorAll(t)) }, x.contains = E.documentElement.contains ? function (e, t) { return e !== t && e.contains(t) } : function (e, t) { for (; t && (t = t.parentNode);)if (t === e) return !0; return !1 }, x.type = t, x.isFunction = n, x.isWindow = i, x.isArray = X, x.isPlainObject = o, x.isEmptyObject = function (e) { var t; for (t in e) return !1; return !0 }, x.isNumeric = function (e) { var t = Number(e), n = typeof e; return null != e && "boolean" != n && ("string" != n || e.length) && !isNaN(t) && isFinite(t) || !1 }, x.inArray = function (e, t, n) { return S.indexOf.call(t, e, n) }, x.camelCase = M, x.trim = function (e) { return null == e ? "" : String.prototype.trim.call(e) }, x.uuid = 0, x.support = {}, x.expr = {}, x.noop = function () { }, x.map = function (e, t) { var n, i, a, r = []; if (s(e)) for (i = 0; i < e.length; i++)null != (n = t(e[i], i)) && r.push(n); else for (a in e) null != (n = t(e[a], a)) && r.push(n); return l(r) }, x.each = function (e, t) { var n, i; if (s(e)) { for (n = 0; n < e.length; n++)if (!1 === t.call(e[n], n, e[n])) return e } else for (i in e) if (!1 === t.call(e[i], i, e[i])) return e; return e }, x.grep = function (e, t) { return P.call(e, t) }, e.JSON && (x.parseJSON = JSON.parse), x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function (e, t) { B["[object " + t + "]"] = t.toLowerCase() }), x.fn = { constructor: J.Z, length: 0, forEach: S.forEach, reduce: S.reduce, push: S.push, sort: S.sort, splice: S.splice, indexOf: S.indexOf, concat: function () { var e, t, n = []; for (e = 0; e < arguments.length; e++)t = arguments[e], n[e] = J.isZ(t) ? t.toArray() : t; return _.apply(J.isZ(this) ? this.toArray() : this, n) }, map: function (e) { return x(x.map(this, function (t, n) { return e.call(t, n, t) })) }, slice: function () { return x(O.apply(this, arguments)) }, ready: function (e) { return H.test(E.readyState) && E.body ? e(x) : E.addEventListener("DOMContentLoaded", function () { e(x) }, !1), this }, get: function (e) { return e === b ? O.call(this) : this[e >= 0 ? e : e + this.length] }, toArray: function () { return this.get() }, size: function () { return this.length }, remove: function () { return this.each(function () { null != this.parentNode && this.parentNode.removeChild(this) }) }, each: function (e) { return S.every.call(this, function (t, n) { return !1 !== e.call(t, n, t) }), this }, + filter: function (e) { return n(e) ? this.not(this.not(e)) : x(P.call(this, function (t) { return J.matches(t, e) })) }, + add: function (e, t) { return x(T(this.concat(x(e, t)))) }, + is: function (e) { return this.length > 0 && J.matches(this[0], e) }, + not: function (e) { var t = []; if (n(e) && e.call !== b) this.each(function (n) { e.call(this, n) || t.push(this) }); else { var i = "string" == typeof e ? this.filter(e) : s(e) && n(e.item) ? O.call(e) : x(e); this.forEach(function (e) { i.indexOf(e) < 0 && t.push(e) }) } return x(t) }, has: function (e) { return this.filter(function () { return r(e) ? x.contains(this, e) : x(this).find(e).size() }) }, eq: function (e) { return -1 === e ? this.slice(e) : this.slice(e, +e + 1) }, first: function () { var e = this[0]; return e && !r(e) ? e : x(e) }, last: function () { var e = this[this.length - 1]; return e && !r(e) ? e : x(e) }, find: function (e) { var t = this; return e ? "object" == typeof e ? x(e).filter(function () { var e = this; return S.some.call(t, function (t) { return x.contains(t, e) }) }) : 1 == this.length ? x(J.qsa(this[0], e)) : this.map(function () { return J.qsa(this, e) }) : x() }, closest: + function (e, t) { var n = [], i = "object" == typeof e && x(e); return this.each(function (r, o) + { for (; o && !(i ? i.indexOf(o) >= 0 : J.matches(o, e));)o = o !== t && !a(o) && o.parentNode; o && n.indexOf(o) < 0 && n.push(o) }), x(n) }, + parents: function (e) { for (var t = [], n = this; n.length > 0;)n = x.map(n, function (e) { return (e = e.parentNode) && !a(e) && t.indexOf(e) < 0 ? (t.push(e), e) : void 0 }); return p(t, e) }, parent: function (e) { return p(T(this.pluck("parentNode")), e) }, children: function (e) { return p(this.map(function () { return h(this) }), e) }, contents: function () { return this.map(function () { return this.contentDocument || O.call(this.childNodes) }) }, siblings: function (e) { return p(this.map(function (e, t) { return P.call(h(t.parentNode), function (e) { return e !== t }) }), e) }, empty: function () { return this.each(function () { this.innerHTML = "" }) }, pluck: function (e) { return x.map(this, function (t) { return t[e] }) }, show: function () { return this.each(function () { var e, t, n; "none" == this.style.display && (this.style.display = ""), "none" == getComputedStyle(this, "").getPropertyValue("display") && (this.style.display = (e = this.nodeName, C[e] || (t = E.createElement(e), E.body.appendChild(t), n = getComputedStyle(t, "").getPropertyValue("display"), t.parentNode.removeChild(t), "none" == n && (n = "block"), C[e] = n), C[e])) }) }, replaceWith: function (e) { return this.before(e).remove() }, wrap: function (e) { var t = n(e); if (this[0] && !t) var i = x(e).get(0), a = i.parentNode || this.length > 1; return this.each(function (n) { x(this).wrapAll(t ? e.call(this, n) : a ? i.cloneNode(!0) : i) }) }, wrapAll: function (e) { if (this[0]) { x(this[0]).before(e = x(e)); for (var t; (t = e.children()).length;)e = t.first(); x(e).append(this) } return this }, wrapInner: function (e) { var t = n(e); return this.each(function (n) { var i = x(this), a = i.contents(), r = t ? e.call(this, n) : e; a.length ? a.wrapAll(r) : i.append(r) }) }, unwrap: function () { return this.parent().each(function () { x(this).replaceWith(x(this).children()) }), this }, clone: function () { return this.map(function () { return this.cloneNode(!0) }) }, hide: function () { return this.css("display", "none") }, toggle: function (e) { return this.each(function () { var t = x(this); (e === b ? "none" == t.css("display") : e) ? t.show() : t.hide() }) }, prev: function (e) { return x(this.pluck("previousElementSibling")).filter(e || "*") }, next: function (e) { return x(this.pluck("nextElementSibling")).filter(e || "*") }, html: function (e) { return 0 in arguments ? this.each(function (t) { var n = this.innerHTML; x(this).empty().append(v(this, e, t, n)) }) : 0 in this ? this[0].innerHTML : null }, text: function (e) { return 0 in arguments ? this.each(function (t) { var n = v(this, e, t, this.textContent); this.textContent = null == n ? "" : "" + n }) : 0 in this ? this.pluck("textContent").join("") : null }, attr: function (e, t) { var n; return "string" != typeof e || 1 in arguments ? this.each(function (n) { if (1 === this.nodeType) if (r(e)) for (k in e) y(this, k, e[k]); else y(this, e, v(this, t, n, this.getAttribute(e))) }) : 0 in this && 1 == this[0].nodeType && null != (n = this[0].getAttribute(e)) ? n : b }, removeAttr: function (e) { return this.each(function () { 1 === this.nodeType && e.split(" ").forEach(function (e) { y(this, e) }, this) }) }, prop: function (e, t) { return e = W[e] || e, 1 in arguments ? this.each(function (n) { this[e] = v(this, t, n, this[e]) }) : this[0] && this[0][e] }, removeProp: function (e) { return e = W[e] || e, this.each(function () { delete this[e] }) }, data: function (e, t) { var n = "data-" + e.replace(L, "-$1").toLowerCase(), i = 1 in arguments ? this.attr(n, t) : this.attr(n); return null !== i ? w(i) : b }, val: function (e) { return 0 in arguments ? (null == e && (e = ""), this.each(function (t) { this.value = v(this, e, t, this.value) })) : this[0] && (this[0].multiple ? x(this[0]).find("option").filter(function () { return this.selected }).pluck("value") : this[0].value) }, offset: function (t) { if (t) return this.each(function (e) { var n = x(this), i = v(this, t, e, n.offset()), a = n.offsetParent().offset(), r = { top: i.top - a.top, left: i.left - a.left }; "static" == n.css("position") && (r.position = "relative"), n.css(r) }); if (!this.length) return null; if (E.documentElement !== this[0] && !x.contains(E.documentElement, this[0])) return { top: 0, left: 0 }; var n = this[0].getBoundingClientRect(); return { left: n.left + e.pageXOffset, top: n.top + e.pageYOffset, width: Math.round(n.width), height: Math.round(n.height) } }, css: function (e, n) { if (arguments.length < 2) { var i = this[0]; if ("string" == typeof e) { if (!i) return; return i.style[M(e)] || getComputedStyle(i, "").getPropertyValue(e) } if (X(e)) { if (!i) return; var a = {}, r = getComputedStyle(i, ""); return x.each(e, function (e, t) { a[t] = i.style[M(t)] || r.getPropertyValue(t) }), a } } var o = ""; if ("string" == t(e)) n || 0 === n ? o = u(e) + ":" + c(e, n) : this.each(function () { this.style.removeProperty(u(e)) }); else for (k in e) e[k] || 0 === e[k] ? o += u(k) + ":" + c(k, e[k]) + ";" : this.each(function () { this.style.removeProperty(u(k)) }); return this.each(function () { this.style.cssText += ";" + o }) }, index: function (e) { return e ? this.indexOf(x(e)[0]) : this.parent().children().indexOf(this[0]) }, hasClass: function (e) { return !!e && S.some.call(this, function (e) { return this.test(g(e)) }, d(e)) }, addClass: function (e) { return e ? this.each(function (t) { if ("className" in this) { D = []; var n = g(this); v(this, e, t, n).split(/\s+/g).forEach(function (e) { x(this).hasClass(e) || D.push(e) }, this), D.length && g(this, n + (n ? " " : "") + D.join(" ")) } }) : this }, removeClass: function (e) { return this.each(function (t) { if ("className" in this) { if (e === b) return g(this, ""); D = g(this), v(this, e, t, D).split(/\s+/g).forEach(function (e) { D = D.replace(d(e), " ") }), g(this, D.trim()) } }) }, toggleClass: function (e, t) { return e ? this.each(function (n) { var i = x(this); v(this, e, n, g(this)).split(/\s+/g).forEach(function (e) { (t === b ? !i.hasClass(e) : t) ? i.addClass(e) : i.removeClass(e) }) }) : this }, scrollTop: function (e) { if (this.length) { var t = "scrollTop" in this[0]; return e === b ? t ? this[0].scrollTop : this[0].pageYOffset : this.each(t ? function () { this.scrollTop = e } : function () { this.scrollTo(this.scrollX, e) }) } }, scrollLeft: function (e) { if (this.length) { var t = "scrollLeft" in this[0]; return e === b ? t ? this[0].scrollLeft : this[0].pageXOffset : this.each(t ? function () { this.scrollLeft = e } : function () { this.scrollTo(e, this.scrollY) }) } }, position: function () { if (this.length) { var e = this[0], t = this.offsetParent(), n = this.offset(), i = I.test(t[0].nodeName) ? { top: 0, left: 0 } : t.offset(); return n.top -= parseFloat(x(e).css("margin-top")) || 0, n.left -= parseFloat(x(e).css("margin-left")) || 0, i.top += parseFloat(x(t[0]).css("border-top-width")) || 0, i.left += parseFloat(x(t[0]).css("border-left-width")) || 0, { top: n.top - i.top, left: n.left - i.left } } }, offsetParent: function () { return this.map(function () { for (var e = this.offsetParent || E.body; e && !I.test(e.nodeName) && "static" == x(e).css("position");)e = e.offsetParent; return e }) } }, x.fn.detach = x.fn.remove, ["width", "height"].forEach(function (e) { var t = e.replace(/./, function (e) { return e[0].toUpperCase() }); x.fn[e] = function (n) { var r, o = this[0]; return n === b ? i(o) ? o["inner" + t] : a(o) ? o.documentElement["scroll" + t] : (r = this.offset()) && r[e] : this.each(function (t) { (o = x(this)).css(e, v(this, n, t, o[e]())) }) } }), ["after", "prepend", "before", "append"].forEach(function (n, i) { var a = i % 2; x.fn[n] = function () { var n, r, o = x.map(arguments, function (e) { var i = []; return "array" == (n = t(e)) ? (e.forEach(function (e) { return e.nodeType !== b ? i.push(e) : x.zepto.isZ(e) ? i = i.concat(e.get()) : void (i = i.concat(J.fragment(e))) }), i) : "object" == n || null == e ? e : J.fragment(e) }), s = this.length > 1; return o.length < 1 ? this : this.each(function (t, n) { r = a ? n : n.parentNode, n = 0 == i ? n.nextSibling : 1 == i ? n.firstChild : 2 == i ? n : null; var l = x.contains(E.documentElement, r); o.forEach(function (t) { if (s) t = t.cloneNode(!0); else if (!r) return x(t).remove(); r.insertBefore(t, n), l && function e(t, n) { n(t); for (var i = 0, a = t.childNodes.length; a > i; i++)e(t.childNodes[i], n) }(t, function (t) { if (!(null == t.nodeName || "SCRIPT" !== t.nodeName.toUpperCase() || t.type && "text/javascript" !== t.type || t.src)) { var n = t.ownerDocument ? t.ownerDocument.defaultView : e; n.eval.call(n, t.innerHTML) } }) }) }) }, x.fn[a ? n + "To" : "insert" + (i ? "Before" : "After")] = function (e) { return x(e)[n](this), this } }), J.Z.prototype = f.prototype = x.fn, J.uniq = T, J.deserializeValue = w, x.zepto = J, x }(); return e.Zepto = t, void 0 === e.$ && (e.$ = t), function (t) { function n(e) { return e._zid || (e._zid = h++) } function i(e, t, i, r) { if ((t = a(t)).ns) var o = function (e) { return new RegExp("(?:^| )" + e.replace(" ", " .* ?") + "(?: |$)") }(t.ns); return (v[n(e)] || []).filter(function (e) { return e && (!t.e || e.e == t.e) && (!t.ns || o.test(e.ns)) && (!i || n(e.fn) === n(i)) && (!r || e.sel == r) }) } function a(e) { var t = ("" + e).split("."); return { e: t[0], ns: t.slice(1).sort().join(" ") } } function r(e, t) { return e.del && !g && e.e in w || !!t } function o(e) { return b[e] || g && w[e] || e } function s(e, i, s, l, d, h, f) { var m = n(e), p = v[m] || (v[m] = []); i.split(/\s/).forEach(function (n) { if ("ready" == n) return t(document).ready(s); var i = a(n); i.fn = s, i.sel = d, i.e in b && (s = function (e) { var n = e.relatedTarget; return !n || n !== this && !t.contains(this, n) ? i.fn.apply(this, arguments) : void 0 }), i.del = h; var m = h || s; i.proxy = function (t) { if (!(t = u(t)).isImmediatePropagationStopped()) { t.data = l; var n = m.apply(e, t._args == c ? [t] : [t].concat(t._args)); return !1 === n && (t.preventDefault(), t.stopPropagation()), n } }, i.i = p.length, p.push(i), "addEventListener" in e && e.addEventListener(o(i.e), i.proxy, r(i, f)) }) } function l(e, t, a, s, l) { var u = n(e); (t || "").split(/\s/).forEach(function (t) { i(e, t, a, s).forEach(function (t) { delete v[u][t.i], "removeEventListener" in e && e.removeEventListener(o(t.e), t.proxy, r(t, l)) }) }) } function u(e, n) { return (n || !e.isDefaultPrevented) && (n || (n = e), t.each(M, function (t, i) { var a = n[t]; e[t] = function () { return this[i] = k, a && a.apply(n, arguments) }, e[i] = x }), e.timeStamp || (e.timeStamp = Date.now()), (n.defaultPrevented !== c ? n.defaultPrevented : "returnValue" in n ? !1 === n.returnValue : n.getPreventDefault && n.getPreventDefault()) && (e.isDefaultPrevented = k)), e } function d(e) { var t, n = { originalEvent: e }; for (t in e) D.test(t) || e[t] === c || (n[t] = e[t]); return u(n, e) } var c, h = 1, f = Array.prototype.slice, m = t.isFunction, p = function (e) { return "string" == typeof e }, v = {}, y = {}, g = "onfocusin" in e, w = { focus: "focusin", blur: "focusout" }, b = { mouseenter: "mouseover", mouseleave: "mouseout" }; y.click = y.mousedown = y.mouseup = y.mousemove = "MouseEvents", t.event = { add: s, remove: l }, t.proxy = function (e, i) { var a = 2 in arguments && f.call(arguments, 2); if (m(e)) { var r = function () { return e.apply(i, a ? a.concat(f.call(arguments)) : arguments) }; return r._zid = n(e), r } if (p(i)) return a ? (a.unshift(e[i], e), t.proxy.apply(null, a)) : t.proxy(e[i], e); throw new TypeError("expected function") }, t.fn.bind = function (e, t, n) { return this.on(e, t, n) }, t.fn.unbind = function (e, t) { return this.off(e, t) }, t.fn.one = function (e, t, n, i) { return this.on(e, t, n, i, 1) }; var k = function () { return !0 }, x = function () { return !1 }, D = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/, M = { preventDefault: "isDefaultPrevented", stopImmediatePropagation: "isImmediatePropagationStopped", stopPropagation: "isPropagationStopped" }; t.fn.delegate = function (e, t, n) { return this.on(t, e, n) }, t.fn.undelegate = function (e, t, n) { return this.off(t, e, n) }, t.fn.live = function (e, n) { return t(document.body).delegate(this.selector, e, n), this }, t.fn.die = function (e, n) { return t(document.body).undelegate(this.selector, e, n), this }, t.fn.on = function (e, n, i, a, r) { var o, u, h = this; return e && !p(e) ? (t.each(e, function (e, t) { h.on(e, n, i, t, r) }), h) : (p(n) || m(a) || !1 === a || (a = i, i = n, n = c), (a === c || !1 === i) && (a = i, i = c), !1 === a && (a = x), h.each(function (c, h) { r && (o = function (e) { return l(h, e.type, a), a.apply(this, arguments) }), n && (u = function (e) { var i, r = t(e.target).closest(n, h).get(0); return r && r !== h ? (i = t.extend(d(e), { currentTarget: r, liveFired: h }), (o || a).apply(r, [i].concat(f.call(arguments, 1)))) : void 0 }), s(h, e, a, i, n, u || o) })) }, t.fn.off = function (e, n, i) { var a = this; return e && !p(e) ? (t.each(e, function (e, t) { a.off(e, n, t) }), a) : (p(n) || m(i) || !1 === i || (i = n, n = c), !1 === i && (i = x), a.each(function () { l(this, e, i, n) })) }, t.fn.trigger = function (e, n) { return (e = p(e) || t.isPlainObject(e) ? t.Event(e) : u(e))._args = n, this.each(function () { e.type in w && "function" == typeof this[e.type] ? this[e.type]() : "dispatchEvent" in this ? this.dispatchEvent(e) : t(this).triggerHandler(e, n) }) }, t.fn.triggerHandler = function (e, n) { var a, r; return this.each(function (o, s) { (a = d(p(e) ? t.Event(e) : e))._args = n, a.target = s, t.each(i(s, e.type || e), function (e, t) { return r = t.proxy(a), !a.isImmediatePropagationStopped() && void 0 }) }), r }, "focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function (e) { t.fn[e] = function (t) { return 0 in arguments ? this.bind(e, t) : this.trigger(e) } }), t.Event = function (e, t) { p(e) || (e = (t = e).type); var n = document.createEvent(y[e] || "Events"), i = !0; if (t) for (var a in t) "bubbles" == a ? i = !!t[a] : n[a] = t[a]; return n.initEvent(e, i, !0), u(n) } }(t), function (t) { function n(e, n, i) { var a = t.Event(n); return t(e).trigger(a, i), !a.isDefaultPrevented() } function i(e, t, i, a) { return e.global ? n(t || y, i, a) : void 0 } function a(e) { e.global && 0 == t.active++ && i(e, null, "ajaxStart") } function r(e) { e.global && !--t.active && i(e, null, "ajaxStop") } function o(e, t) { var n = t.context; return !1 !== t.beforeSend.call(n, e, t) && !1 !== i(t, n, "ajaxBeforeSend", [e, t]) && void i(t, n, "ajaxSend", [e, t]) } function s(e, t, n, a) { var r = n.context, o = "success"; n.success.call(r, e, o, t), a && a.resolveWith(r, [e, o, t]), i(n, r, "ajaxSuccess", [t, n, e]), u(o, t, n) } function l(e, t, n, a, r) { var o = a.context; a.error.call(o, n, t, e), r && r.rejectWith(o, [n, t, e]), i(a, o, "ajaxError", [n, a, e || t]), u(t, n, a) } function u(e, t, n) { var a = n.context; n.complete.call(a, t, e), i(n, a, "ajaxComplete", [t, n]), r(n) } function d() { } function c(e) { return e && (e = e.split(";", 2)[0]), e && (e == x ? "html" : e == k ? "json" : w.test(e) ? "script" : b.test(e) && "xml") || "text" } function h(e, t) { return "" == t ? e : (e + "&" + t).replace(/[&?]{1,2}/, "?") } function f(e, n, i, a) { return t.isFunction(n) && (a = i, i = n, n = void 0), t.isFunction(i) || (a = i, i = void 0), { url: e, data: n, success: i, dataType: a } } var m, p, v = +new Date, y = e.document, g = /)<[^<]*)*<\/script>/gi, w = /^(?:text|application)\/javascript/i, b = /^(?:text|application)\/xml/i, k = "application/json", x = "text/html", D = /^\s*$/, M = y.createElement("a"); M.href = e.location.href, t.active = 0, t.ajaxJSONP = function (n, i) { if (!("type" in n)) return t.ajax(n); var a, r, u = n.jsonpCallback, d = (t.isFunction(u) ? u() : u) || "Zepto" + v++, c = y.createElement("script"), h = e[d], f = function (e) { t(c).triggerHandler("error", e || "abort") }, m = { abort: f }; return i && i.promise(m), t(c).on("load error", function (o, u) { clearTimeout(r), t(c).off().remove(), "error" != o.type && a ? s(a[0], m, n, i) : l(null, u || "error", m, n, i), e[d] = h, a && t.isFunction(h) && h(a[0]), h = a = void 0 }), !1 === o(m, n) ? (f("abort"), m) : (e[d] = function () { a = arguments }, c.src = n.url.replace(/\?(.+)=\?/, "?$1=" + d), y.head.appendChild(c), n.timeout > 0 && (r = setTimeout(function () { f("timeout") }, n.timeout)), m) }, t.ajaxSettings = { type: "GET", beforeSend: d, success: d, error: d, complete: d, context: null, global: !0, xhr: function () { return new e.XMLHttpRequest }, accepts: { script: "text/javascript, application/javascript, application/x-javascript", json: k, xml: "application/xml, text/xml", html: x, text: "text/plain" }, crossDomain: !1, timeout: 0, processData: !0, cache: !0, dataFilter: d }, t.ajax = function (n) { var i, r, u = t.extend({}, n || {}), f = t.Deferred && t.Deferred(); for (m in t.ajaxSettings) void 0 === u[m] && (u[m] = t.ajaxSettings[m]); a(u), u.crossDomain || ((i = y.createElement("a")).href = u.url, i.href = i.href, u.crossDomain = M.protocol + "//" + M.host != i.protocol + "//" + i.host), u.url || (u.url = e.location.toString()), (r = u.url.indexOf("#")) > -1 && (u.url = u.url.slice(0, r)), function (e) { e.processData && e.data && "string" != t.type(e.data) && (e.data = t.param(e.data, e.traditional)), !e.data || e.type && "GET" != e.type.toUpperCase() && "jsonp" != e.dataType || (e.url = h(e.url, e.data), e.data = void 0) }(u); var v = u.dataType, g = /\?.+=\?/.test(u.url); if (g && (v = "jsonp"), !1 !== u.cache && (n && !0 === n.cache || "script" != v && "jsonp" != v) || (u.url = h(u.url, "_=" + Date.now())), "jsonp" == v) return g || (u.url = h(u.url, u.jsonp ? u.jsonp + "=?" : !1 === u.jsonp ? "" : "callback=?")), t.ajaxJSONP(u, f); var w, b = u.accepts[v], k = {}, x = function (e, t) { k[e.toLowerCase()] = [e, t] }, T = /^([\w-]+:)\/\//.test(u.url) ? RegExp.$1 : e.location.protocol, S = u.xhr(), _ = S.setRequestHeader; if (f && f.promise(S), u.crossDomain || x("X-Requested-With", "XMLHttpRequest"), x("Accept", b || "*/*"), (b = u.mimeType || b) && (b.indexOf(",") > -1 && (b = b.split(",", 2)[0]), S.overrideMimeType && S.overrideMimeType(b)), (u.contentType || !1 !== u.contentType && u.data && "GET" != u.type.toUpperCase()) && x("Content-Type", u.contentType || "application/x-www-form-urlencoded"), u.headers) for (p in u.headers) x(p, u.headers[p]); if (S.setRequestHeader = x, S.onreadystatechange = function () { if (4 == S.readyState) { S.onreadystatechange = d, clearTimeout(w); var e, n = !1; if (S.status >= 200 && S.status < 300 || 304 == S.status || 0 == S.status && "file:" == T) { if (v = v || c(u.mimeType || S.getResponseHeader("content-type")), "arraybuffer" == S.responseType || "blob" == S.responseType) e = S.response; else { e = S.responseText; try { e = function (e, t, n) { if (n.dataFilter == d) return e; var i = n.context; return n.dataFilter.call(i, e, t) }(e, v, u), "script" == v ? (0, eval)(e) : "xml" == v ? e = S.responseXML : "json" == v && (e = D.test(e) ? null : t.parseJSON(e)) } catch (e) { n = e } if (n) return l(n, "parsererror", S, u, f) } s(e, S, u, f) } else l(S.statusText || null, S.status ? "error" : "abort", S, u, f) } }, !1 === o(S, u)) return S.abort(), l(null, "abort", S, u, f), S; var P = !("async" in u) || u.async; if (S.open(u.type, u.url, P, u.username, u.password), u.xhrFields) for (p in u.xhrFields) S[p] = u.xhrFields[p]; for (p in k) _.apply(S, k[p]); return u.timeout > 0 && (w = setTimeout(function () { S.onreadystatechange = d, S.abort(), l(null, "timeout", S, u, f) }, u.timeout)), S.send(u.data ? u.data : null), S }, t.get = function () { return t.ajax(f.apply(null, arguments)) }, t.post = function () { var e = f.apply(null, arguments); return e.type = "POST", t.ajax(e) }, t.getJSON = function () { var e = f.apply(null, arguments); return e.dataType = "json", t.ajax(e) }, t.fn.load = function (e, n, i) { if (!this.length) return this; var a, r = this, o = e.split(/\s/), s = f(e, n, i), l = s.success; return o.length > 1 && (s.url = o[0], a = o[1]), s.success = function (e) { r.html(a ? t("

").html(e.replace(g, "")).find(a) : e), l && l.apply(r, arguments) }, t.ajax(s), this }; var T = encodeURIComponent; t.param = function (e, n) { var i = []; return i.add = function (e, n) { t.isFunction(n) && (n = n()), null == n && (n = ""), this.push(T(e) + "=" + T(n)) }, function e(n, i, a, r) { var o, s = t.isArray(i), l = t.isPlainObject(i); t.each(i, function (i, u) { o = t.type(u), r && (i = a ? r : r + "[" + (l || "object" == o || "array" == o ? i : "") + "]"), !r && s ? n.add(u.name, u.value) : "array" == o || !a && "object" == o ? e(n, u, a, i) : n.add(i, u) }) }(i, e, n), i.join("&").replace(/%20/g, "+") } }(t), function (e) { e.fn.serializeArray = function () { var t, n, i = [], a = function (e) { return e.forEach ? e.forEach(a) : void i.push({ name: t, value: e }) }; return this[0] && e.each(this[0].elements, function (i, r) { n = r.type, (t = r.name) && "fieldset" != r.nodeName.toLowerCase() && !r.disabled && "submit" != n && "reset" != n && "button" != n && "file" != n && ("radio" != n && "checkbox" != n || r.checked) && a(e(r).val()) }), i }, e.fn.serialize = function () { var e = []; return this.serializeArray().forEach(function (t) { e.push(encodeURIComponent(t.name) + "=" + encodeURIComponent(t.value)) }), e.join("&") }, e.fn.submit = function (t) { if (0 in arguments) this.bind("submit", t); else if (this.length) { var n = e.Event("submit"); this.eq(0).trigger(n), n.isDefaultPrevented() || this.get(0).submit() } return this } }(t), function () { try { getComputedStyle(void 0) } catch (n) { var t = getComputedStyle; e.getComputedStyle = function (e, n) { try { return t(e, n) } catch (e) { return null } } } }(), t }), function (e, t) { "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.persianDate = t() : e.persianDate = t() }(this, function () { return function (e) { var t = {}; function n(i) { if (t[i]) return t[i].exports; var a = t[i] = { i: i, l: !1, exports: {} }; return e[i].call(a.exports, a, a.exports, n), a.l = !0, a.exports } return n.m = e, n.c = t, n.i = function (e) { return e }, n.d = function (e, t, i) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: i }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 8) }([function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(4).durationUnit, r = function () { function e() { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e) } return i(e, [{ key: "toPersianDigit", value: function (e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; return e.toString().replace(/\d+/g, function (e) { var n = [], i = [], a = void 0, r = void 0; for (a = 0; a < e.length; a += 1)n.push(e.charCodeAt(a)); for (r = 0; r < n.length; r += 1)i.push(String.fromCharCode(n[r] + (t && !0 === t ? 1584 : 1728))); return i.join("") }) } }, { key: "leftZeroFill", value: function (e, t) { for (var n = e + ""; n.length < t;)n = "0" + n; return n } }, { key: "normalizeDuration", value: function () { var e = void 0, t = void 0; return "string" == typeof arguments[0] ? (e = arguments[0], t = arguments[1]) : (t = arguments[0], e = arguments[1]), a.year.indexOf(e) > -1 ? e = "year" : a.month.indexOf(e) > -1 ? e = "month" : a.week.indexOf(e) > -1 ? e = "week" : a.day.indexOf(e) > -1 ? e = "day" : a.hour.indexOf(e) > -1 ? e = "hour" : a.minute.indexOf(e) > -1 ? e = "minute" : a.second.indexOf(e) > -1 ? e = "second" : a.millisecond.indexOf(e) > -1 && (e = "millisecond"), { unit: e, value: t } } }, { key: "absRound", value: function (e) { return e < 0 ? Math.ceil(e) : Math.floor(e) } }, { key: "absFloor", value: function (e) { return e < 0 ? Math.ceil(e) || 0 : Math.floor(e) } }]), e }(); e.exports = r }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(10), r = n(2), o = n(0), s = n(5), l = n(11), u = (new o).toPersianDigit, d = (new o).leftZeroFill, c = (new o).normalizeDuration, h = n(7), f = n(6), m = function () { function t(e) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, t), this.calendarType = t.calendarType, this.localType = t.localType, this.leapYearMode = t.leapYearMode, this.algorithms = new r(this), this.version = "1.1.0", this._utcMode = !1, "fa" !== this.localType ? this.formatPersian = !1 : this.formatPersian = "_default", this.State = this.algorithms.State, this.setup(e), this.State.isInvalidDate ? new Date([-1, -1]) : this } return i(t, [{ key: "setup", value: function (e) { if (a.isDate(e)) this._gDateToCalculators(e); else if (a.isArray(e)) { if (!l.validateInputArray(e)) return this.State.isInvalidDate = !0, !1; this.algorithmsCalc([e[0], e[1] ? e[1] : 1, e[2] ? e[2] : 1, e[3] ? e[3] : 0, e[4] ? e[4] : 0, e[5] ? e[5] : 0, e[6] ? e[6] : 0]) } else if (a.isNumber(e)) { var n = new Date(e); this._gDateToCalculators(n) } else if (e instanceof t) this.algorithmsCalc([e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]); else if (e && "/Date(" === e.substring(0, 6)) { var i = new Date(parseInt(e.substr(6))); this._gDateToCalculators(i) } else { var r = new Date; this._gDateToCalculators(r) } } }, { key: "_getSyncedClass", value: function (e) { return new (t.toCalendar(this.calendarType).toLocale(this.localType).toLeapYearMode(this.leapYearMode))(e) } }, { key: "_gDateToCalculators", value: function (e) { this.algorithms.calcGregorian([e.getFullYear(), e.getMonth(), e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds()]) } }, { key: "rangeName", value: function () { var e = this.calendarType; return "fa" === this.localType ? "persian" === e ? h.persian : h.gregorian : "persian" === e ? f.persian : f.gregorian } }, { key: "toLeapYearMode", value: function (e) { return this.leapYearMode = e, "astronomical" === e && "persian" == this.calendarType ? this.leapYearMode = "astronomical" : "algorithmic" === e && "persian" == this.calendarType && (this.leapYearMode = "algorithmic"), this.algorithms.updateFromGregorian(), this } }, { key: "toCalendar", value: function (e) { return this.calendarType = e, this.algorithms.updateFromGregorian(), this } }, { key: "toLocale", value: function (e) { return this.localType = e, "fa" !== this.localType ? this.formatPersian = !1 : this.formatPersian = "_default", this } }, { key: "_locale", value: function () { var e = this.calendarType; return "fa" === this.localType ? "persian" === e ? h.persian : h.gregorian : "persian" === e ? f.persian : f.gregorian } }, { key: "_weekName", value: function (e) { return this._locale().weekdays[e - 1] } }, { key: "_weekNameShort", value: function (e) { return this._locale().weekdaysShort[e - 1] } }, { key: "_weekNameMin", value: function (e) { return this._locale().weekdaysMin[e - 1] } }, { key: "_dayName", value: function (e) { return this._locale().persianDaysName[e - 1] } }, { key: "_monthName", value: function (e) { return this._locale().months[e - 1] } }, { key: "_monthNameShort", value: function (e) { return this._locale().monthsShort[e - 1] } }, { key: "isPersianDate", value: function (e) { return e instanceof t } }, { key: "clone", value: function () { return this._getSyncedClass(this.State.gDate) } }, { key: "algorithmsCalc", value: function (e) { return this.isPersianDate(e) && (e = [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]), "persian" === this.calendarType && "algorithmic" == this.leapYearMode ? this.algorithms.calcPersian(e) : "persian" === this.calendarType && "astronomical" == this.leapYearMode ? this.algorithms.calcPersiana(e) : "gregorian" === this.calendarType ? (e[1] = e[1] - 1, this.algorithms.calcGregorian(e)) : void 0 } }, { key: "calendar", value: function () { var e = void 0; return "persian" == this.calendarType ? "astronomical" == this.leapYearMode ? e = "persianAstro" : "algorithmic" == this.leapYearMode && (e = "persianAlgo") : e = "gregorian", this.State[e] } }, { key: "duration", value: function (e, t) { return new s(e, t) } }, { key: "isDuration", value: function (e) { return e instanceof s } }, { key: "years", value: function (e) { return this.year(e) } }, { key: "year", value: function (e) { return e || 0 === e ? (this.algorithmsCalc([e, this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()]), this) : this.calendar().year } }, { key: "month", value: function (e) { return e || 0 === e ? (this.algorithmsCalc([this.year(), e, this.date()]), this) : this.calendar().month + 1 } }, { key: "days", value: function () { return this.day() } }, { key: "day", value: function () { return this.calendar().weekday } }, { key: "dates", value: function (e) { return this.date(e) } }, { key: "date", value: function (e) { return e || 0 === e ? (this.algorithmsCalc([this.year(), this.month(), e]), this) : this.calendar().day } }, { key: "hour", value: function (e) { return this.hours(e) } }, { key: "hours", value: function (e) { return e || 0 === e ? (0 === e && (e = 24), this.algorithmsCalc([this.year(), this.month(), this.date(), e]), this) : this.State.gDate.getHours() } }, { key: "minute", value: function (e) { return this.minutes(e) } }, { key: "minutes", value: function (e) { return e || 0 === e ? (this.algorithmsCalc([this.year(), this.month(), this.date(), this.hour(), e]), this) : this.State.gDate.getMinutes() } }, { key: "second", value: function (e) { return this.seconds(e) } }, { key: "seconds", value: function (e) { return e || 0 === e ? (this.algorithmsCalc([this.year(), this.month(), this.date(), this.hour(), this.minute(), e]), this) : this.State.gDate.getSeconds() } }, { key: "millisecond", value: function (e) { return this.milliseconds(e) } }, { key: "milliseconds", value: function (e) { return e || 0 === e ? (this.algorithmsCalc([this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), e]), this) : this.State.gregorian.millisecond } }, { key: "unix", value: function (e) { var t = void 0; if (e) return this._getSyncedClass(1e3 * e); var n = this.State.gDate.valueOf().toString(); return t = n.substring(0, n.length - 3), parseInt(t) } }, { key: "valueOf", value: function () { return this.State.gDate.valueOf() } }, { key: "getFirstWeekDayOfMonth", value: function (e, t) { return this._getSyncedClass([e, t, 1]).day() } }, { key: "diff", value: function (e, t, n) { var i = e, a = this.State.gDate - i.toDate() - 0, r = this.year() - i.year(), o = this.month() - i.month(), s = -1 * (this.date() - i.date()), l = void 0; return l = "months" === t || "month" === t ? 12 * r + o + s / 30 : "years" === t || "year" === t ? r + (o + s / 30) / 12 : "seconds" === t || "second" === t ? a / 1e3 : "minutes" === t || "minute" === t ? a / 6e4 : "hours" === t || "hour" === t ? a / 36e5 : "days" === t || "day" === t ? a / 864e5 : "weeks" === t || "week" === t ? a / 6048e5 : a, n ? l : Math.round(l) } }, { key: "startOf", value: function (e) { var n = t.toCalendar(this.calendarType).toLocale(this.localType), i = new t(this.valueOf() - 864e5 * (this.calendar().weekday - 1)).toArray(); switch (e) { case "years": case "year": return new n([this.year(), 1, 1]); case "months": case "month": return new n([this.year(), this.month(), 1]); case "days": case "day": return new n([this.year(), this.month(), this.date(), 0, 0, 0]); case "hours": case "hour": return new n([this.year(), this.month(), this.date(), this.hours(), 0, 0]); case "minutes": case "minute": return new n([this.year(), this.month(), this.date(), this.hours(), this.minutes(), 0]); case "seconds": case "second": return new n([this.year(), this.month(), this.date(), this.hours(), this.minutes(), this.seconds()]); case "weeks": case "week": return new n(i); default: return this.clone() } } }, { key: "endOf", value: function (e) { var n = t.toCalendar(this.calendarType).toLocale(this.localType); switch (e) { case "years": case "year": var i = this.isLeapYear() ? 30 : 29; return new n([this.year(), 12, i, 23, 59, 59]); case "months": case "month": var a = this.daysInMonth(this.year(), this.month()); return new n([this.year(), this.month(), a, 23, 59, 59]); case "days": case "day": return new n([this.year(), this.month(), this.date(), 23, 59, 59]); case "hours": case "hour": return new n([this.year(), this.month(), this.date(), this.hours(), 59, 59]); case "minutes": case "minute": return new n([this.year(), this.month(), this.date(), this.hours(), this.minutes(), 59]); case "seconds": case "second": return new n([this.year(), this.month(), this.date(), this.hours(), this.minutes(), this.seconds()]); case "weeks": case "week": var r = this.calendar().weekday; return new n([this.year(), this.month(), this.date() + (7 - r)]); default: return this.clone() } } }, { key: "sod", value: function () { return this.startOf("day") } }, { key: "eod", value: function () { return this.endOf("day") } }, { key: "zone", value: function (e) { return e || 0 === e ? (this.State.zone = e, this) : this.State.zone } }, { key: "local", value: function () { var e = void 0; if (this._utcMode) { var n = new Date(this.toDate()).getTimezoneOffset(), i = 60 * n * 1e3; e = n < 0 ? this.valueOf() - i : this.valueOf() + i, this.toCalendar(t.calendarType); var a = new Date(e); return this._gDateToCalculators(a), this._utcMode = !1, this.zone(n), this } return this } }, { key: "utc", value: function (e) { var t = void 0; if (e) return this._getSyncedClass(e).utc(); if (this._utcMode) return this; var n = 60 * this.zone() * 1e3; t = this.zone() < 0 ? this.valueOf() + n : this.valueOf() - n; var i = new Date(t), a = this._getSyncedClass(i); return this.algorithmsCalc(a), this._utcMode = !0, this.zone(0), this } }, { key: "isUtc", value: function () { return this._utcMode } }, { key: "isDST", value: function () { var e = this.month(), t = this.date(); return 1 == e && t > 1 || 6 == e && t < 31 || e < 6 && e >= 2 } }, { key: "isLeapYear", value: function (e) { return void 0 === e && (e = this.year()), "persian" == this.calendarType && "algorithmic" === this.leapYearMode ? this.algorithms.leap_persian(e) : "persian" == this.calendarType && "astronomical" === this.leapYearMode ? this.algorithms.leap_persiana(e) : "gregorian" == this.calendarType ? this.algorithms.leap_gregorian(e) : void 0 } }, { key: "daysInMonth", value: function (e, t) { var n = e || this.year(), i = t || this.month(); return "persian" === this.calendarType ? i < 1 || i > 12 ? 0 : i < 7 ? 31 : i < 12 ? 30 : this.isLeapYear(n) ? 30 : 29 : "gregorian" === this.calendarType ? new Date(n, i, 0).getDate() : void 0 } }, { key: "toDate", value: function () { return this.State.gDate } }, { key: "toArray", value: function () { return [this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()] } }, { key: "formatNumber", value: function () { var t = void 0; return "_default" === this.formatPersian ? t = void 0 !== e && void 0 !== e.exports ? !1 !== this.formatPersian : !1 !== window.formatPersian : !0 === this.formatPersian ? t = !0 : !1 === this.formatPersian ? t = !1 : Error('Invalid Config "formatPersian" !!'), t } }, { key: "format", value: function (e) { if (this.State.isInvalidDate) return !1; var t = this, n = /([[^[]*])|(\\)?(Mo|MM?M?M?|Do|DD?D?D?|dddddd?|ddddd?|dddd?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|zz?|ZZ?|X|LT|ll?l?l?|LL?L?L?)/g, i = { year: t.year(), month: t.month(), hour: t.hours(), minute: t.minutes(), second: t.seconds(), date: t.date(), timezone: t.zone(), unix: t.unix() }, a = t.formatNumber(), r = function (e) { return a ? u(e) : e }; function o(e) { switch (e) { case "a": return a ? i.hour >= 12 ? "ب ظ" : "ق ظ" : i.hour >= 12 ? "PM" : "AM"; case "H": return r(i.hour); case "HH": return r(d(i.hour, 2)); case "h": return r(i.hour % 12); case "hh": return r(d(i.hour % 12, 2)); case "m": case "mm": return r(d(i.minute, 2)); case "s": return r(i.second); case "ss": return r(d(i.second, 2)); case "D": return r(d(i.date)); case "DD": return r(d(i.date, 2)); case "DDD": var n = t.startOf("year"); return r(d(t.diff(n, "days"), 3)); case "DDDD": var o = t.startOf("year"); return r(d(t.diff(o, "days"), 3)); case "d": return r(t.calendar().weekday); case "ddd": return t._weekNameShort(t.calendar().weekday); case "dddd": return t._weekName(t.calendar().weekday); case "ddddd": return t._dayName(t.calendar().day); case "dddddd": return t._weekNameMin(t.calendar().weekday); case "w": var s = t.startOf("year"), l = parseInt(t.diff(s, "days") / 7) + 1; return r(l); case "ww": var u = t.startOf("year"), c = d(parseInt(t.diff(u, "days") / 7) + 1, 2); return r(c); case "M": return r(i.month); case "MM": return r(d(i.month, 2)); case "MMM": return t._monthNameShort(i.month); case "MMMM": return t._monthName(i.month); case "YY": var h = i.year.toString().split(""); return r(h[2] + h[3]); case "YYYY": return r(i.year); case "Z": var f = "+", m = Math.round(i.timezone / 60), p = i.timezone % 60; p < 0 && (p *= -1), m < 0 && (f = "-", m *= -1); var v = f + d(m, 2) + ":" + d(p, 2); return r(v); case "ZZ": var y = "+", g = Math.round(i.timezone / 60), w = i.timezone % 60; w < 0 && (w *= -1), g < 0 && (y = "-", g *= -1); var b = y + d(g, 2) + "" + d(w, 2); return r(b); case "X": return t.unix(); case "LT": return t.format("H:m a"); case "L": return t.format("YYYY/MM/DD"); case "l": return t.format("YYYY/M/D"); case "LL": return t.format("MMMM DD YYYY"); case "ll": return t.format("MMM DD YYYY"); case "LLL": return t.format("MMMM YYYY DD H:m a"); case "lll": return t.format("MMM YYYY DD H:m a"); case "LLLL": return t.format("dddd D MMMM YYYY H:m a"); case "llll": return t.format("ddd D MMM YYYY H:m a") } } if (e) return e.replace(n, o); return "YYYY-MM-DD HH:mm:ss a".replace(n, o) } }, { key: "add", value: function (e, n) { if (0 === n) return this; var i = c(e, n).unit, a = this.toArray(); if (n = c(e, n).value, "year" === i) { var r = a[2], o = this.daysInMonth(a[0] + n, a[1]); return a[2] > o && (r = o), new t([a[0] + n, a[1], r, a[3], a[4], a[5], a[6], a[7]]) } if ("month" === i) { var s = Math.floor(n / 12), l = n - 12 * s, u = null; a[1] + l > 12 ? (s += 1, u = a[1] + l - 12) : u = a[1] + l; var d = a[2], h = new t([a[0] + s, u, 1, a[3], a[4], a[5], a[6], a[7]]).toArray(), f = this.daysInMonth(a[0] + s, u); return a[2] > f && (d = f), new t([h[0], h[1], d, h[3], h[4], h[5], h[6], h[7]]) } if ("day" === i) { var m = new t(this.valueOf()).hour(12); return new t(m.valueOf() + 864e5 * n).hour(a[3]) } if ("week" === i) { var p = new t(this.valueOf()).hour(12); return new t(p.valueOf() + 7 * n * 864e5).hour(a[3]) } if ("hour" === i) { var v = this.valueOf() + 36e5 * n; return this.unix(v / 1e3) } if ("minute" === i) { var y = this.valueOf() + 6e4 * n; return this.unix(y / 1e3) } if ("second" === i) { var g = this.valueOf() + 1e3 * n; return this.unix(g / 1e3) } if ("millisecond" === i) { var w = this.valueOf() + n; return this.unix(w / 1e3) } return this._getSyncedClass(this.valueOf()) } }, { key: "subtract", value: function (e, t) { return this.add(e, -1 * t) } }, { key: "isSameDay", value: function (e) { return this && e && this.date() == e.date() && this.year() == e.year() && this.month() == e.month() } }, { key: "isSameMonth", value: function (e) { return this && e && this.year() == this.year() && this.month() == e.month() } }], [{ key: "rangeName", value: function () { var e = t, n = e.calendarType; return "fa" === e.localType ? "persian" === n ? h.persian : h.gregorian : "persian" === n ? f.persian : f.gregorian } }, { key: "toLeapYearMode", value: function (e) { var n = t; return n.leapYearMode = e, n } }, { key: "toCalendar", value: function (e) { var n = t; return n.calendarType = e, n } }, { key: "toLocale", value: function (e) { var n = t; return n.localType = e, "fa" !== n.localType ? n.formatPersian = !1 : n.formatPersian = "_default", n } }, { key: "isPersianDate", value: function (e) { return e instanceof t } }, { key: "duration", value: function (e, t) { return new s(e, t) } }, { key: "isDuration", value: function (e) { return e instanceof s } }, { key: "unix", value: function (e) { return e ? new t(1e3 * e) : (new t).unix() } }, { key: "getFirstWeekDayOfMonth", value: function (e, n) { return new t([e, n, 1]).day() } }, { key: "utc", value: function (e) { return e ? new t(e).utc() : (new t).utc() } }, { key: "isSameDay", value: function (e, t) { return e && t && e.date() == t.date() && e.year() == t.year() && e.month() == t.month() } }, { key: "isSameMonth", value: function (e, t) { return e && t && e.year() == t.year() && e.month() == t.month() } }]), t }(); e.exports = m }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(3), r = n(9), o = function () { function e(t) { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.parent = t, this.ASTRO = new a, this.State = new r, this.J0000 = 1721424.5, this.J1970 = 2440587.5, this.JMJD = 2400000.5, this.NormLeap = [!1, !0], this.GREGORIAN_EPOCH = 1721425.5, this.PERSIAN_EPOCH = 1948320.5 } return i(e, [{ key: "leap_gregorian", value: function (e) { return e % 4 == 0 && !(e % 100 == 0 && e % 400 != 0) } }, { key: "gregorian_to_jd", value: function (e, t, n) { return this.GREGORIAN_EPOCH - 1 + 365 * (e - 1) + Math.floor((e - 1) / 4) + -Math.floor((e - 1) / 100) + Math.floor((e - 1) / 400) + Math.floor((367 * t - 362) / 12 + (t <= 2 ? 0 : this.leap_gregorian(e) ? -1 : -2) + n) } }, { key: "jd_to_gregorian", value: function (e) { var t, n, i, a, r, o, s, l, u, d, c, h, f = void 0; return n = (t = Math.floor(e - .5) + .5) - this.GREGORIAN_EPOCH, i = Math.floor(n / 146097), a = this.ASTRO.mod(n, 146097), r = Math.floor(a / 36524), o = this.ASTRO.mod(a, 36524), s = Math.floor(o / 1461), l = this.ASTRO.mod(o, 1461), f = 400 * i + 100 * r + 4 * s + (u = Math.floor(l / 365)), 4 !== r && 4 !== u && f++, d = t - this.gregorian_to_jd(f, 1, 1), c = t < this.gregorian_to_jd(f, 3, 1) ? 0 : this.leap_gregorian(f) ? 1 : 2, [f, h = Math.floor((12 * (d + c) + 373) / 367), t - this.gregorian_to_jd(f, h, 1) + 1] } }, { key: "tehran_equinox", value: function (e) { var t; return 52.5 / 360, (t = this.ASTRO.equinox(e, 0)) - this.ASTRO.deltat(e) / 86400 + this.ASTRO.equationOfTime(t) + 52.5 / 360 } }, { key: "tehran_equinox_jd", value: function (e) { var t; return t = this.tehran_equinox(e), Math.floor(t) } }, { key: "persiana_year", value: function (e) { var t = this.jd_to_gregorian(e)[0] - 2, n = void 0, i = void 0; for (n = this.tehran_equinox_jd(t); n > e;)t--, n = this.tehran_equinox_jd(t); for (i = n - 1; !(n <= e && e < i);)n = i, t++, i = this.tehran_equinox_jd(t); return [Math.round((n - this.PERSIAN_EPOCH) / this.ASTRO.TropicalYear) + 1, n] } }, { key: "jd_to_persiana", value: function (e) { var t, n, i, a, r; return e = Math.floor(e) + .5, t = (i = this.persiana_year(e))[0], a = i[1], Math.floor((e - a) / 30) + 1, [t, n = (r = Math.floor(e) - this.persiana_to_jd(t, 1, 1) + 1) <= 186 ? Math.ceil(r / 31) : Math.ceil((r - 6) / 30), Math.floor(e) - this.persiana_to_jd(t, n, 1) + 1] } }, { key: "persiana_to_jd", value: function (e, t, n) { var i = void 0, a = void 0; for (a = this.PERSIAN_EPOCH - 1 + this.ASTRO.TropicalYear * (e - 1 - 1), i = [e - 1, 0]; i[0] < e;)a = (i = this.persiana_year(a))[1] + (this.ASTRO.TropicalYear + 2); return i[1] + (t <= 7 ? 31 * (t - 1) : 30 * (t - 1) + 6) + (n - 1) } }, { key: "leap_persiana", value: function (e) { return this.persiana_to_jd(e + 1, 1, 1) - this.persiana_to_jd(e, 1, 1) > 365 } }, { key: "leap_persian", value: function (e) { return 682 * ((e - (e > 0 ? 474 : 473)) % 2820 + 474 + 38) % 2816 < 682 } }, { key: "persian_to_jd", value: function (e, t, n) { var i, a; return i = e - (e >= 0 ? 474 : 473), a = 474 + this.ASTRO.mod(i, 2820), n + (t <= 7 ? 31 * (t - 1) : 30 * (t - 1) + 6) + Math.floor((682 * a - 110) / 2816) + 365 * (a - 1) + 1029983 * Math.floor(i / 2820) + (this.PERSIAN_EPOCH - 1) } }, { key: "jd_to_persian", value: function (e) { var t, n, i, a, r, o = void 0, s = void 0, l = void 0, u = void 0; return n = (e = Math.floor(e) + .5) - this.persian_to_jd(475, 1, 1), i = Math.floor(n / 1029983), 1029982 === (a = this.ASTRO.mod(n, 1029983)) ? s = 2820 : (l = Math.floor(a / 366), u = this.ASTRO.mod(a, 366), s = Math.floor((2134 * l + 2816 * u + 2815) / 1028522) + l + 1), (o = s + 2820 * i + 474) <= 0 && o--, [o, t = (r = e - this.persian_to_jd(o, 1, 1) + 1) <= 186 ? Math.ceil(r / 31) : Math.ceil((r - 6) / 30), e - this.persian_to_jd(o, t, 1) + 1] } }, { key: "gWeekDayToPersian", value: function (e) { return e + 2 === 8 ? 1 : e + 2 === 7 ? 7 : e + 2 } }, { key: "updateFromGregorian", value: function () { var e, t, n, i, a, r = void 0, o = void 0; t = this.State.gregorian.year, n = this.State.gregorian.month, i = this.State.gregorian.day, this.State.gDate = new Date(t, n, i, this.State.gregorian.hour, this.State.gregorian.minute, this.State.gregorian.second, this.State.gregorian.millisecond), !1 === this.parent._utcMode && (this.State.zone = this.State.gDate.getTimezoneOffset()), this.State.gregorian.year = this.State.gDate.getFullYear(), this.State.gregorian.month = this.State.gDate.getMonth(), this.State.gregorian.day = this.State.gDate.getDate(), e = this.gregorian_to_jd(t, n + 1, i) + Math.floor(.5) / 86400, this.State.julianday = e, this.State.modifiedjulianday = e - this.JMJD, r = this.ASTRO.jwday(e), this.State.gregorian.weekday = r + 1, this.State.gregorian.leap = this.NormLeap[this.leap_gregorian(t) ? 1 : 0], r = this.ASTRO.jwday(e), "persian" == this.parent.calendarType && "algorithmic" == this.parent.leapYearMode && (o = this.jd_to_persian(e), this.State.persian.year = o[0], this.State.persian.month = o[1] - 1, this.State.persian.day = o[2], this.State.persian.weekday = this.gWeekDayToPersian(r), this.State.persian.leap = this.NormLeap[this.leap_persian(o[0]) ? 1 : 0]), "persian" == this.parent.calendarType && "astronomical" == this.parent.leapYearMode && (o = this.jd_to_persiana(e), this.State.persianAstro.year = o[0], this.State.persianAstro.month = o[1] - 1, this.State.persianAstro.day = o[2], this.State.persianAstro.weekday = this.gWeekDayToPersian(r), this.State.persianAstro.leap = this.NormLeap[this.leap_persiana(o[0]) ? 1 : 0]), null !== this.State.gregserial.day && (this.State.gregserial.day = e - this.J0000), a = 864e5 * (e - this.J1970), this.State.unixtime = Math.round(a / 1e3) } }, { key: "calcGregorian", value: function (e) { (e[0] || 0 === e[0]) && (this.State.gregorian.year = e[0]), (e[1] || 0 === e[1]) && (this.State.gregorian.month = e[1]), (e[2] || 0 === e[2]) && (this.State.gregorian.day = e[2]), (e[3] || 0 === e[3]) && (this.State.gregorian.hour = e[3]), (e[4] || 0 === e[4]) && (this.State.gregorian.minute = e[4]), (e[5] || 0 === e[5]) && (this.State.gregorian.second = e[5]), (e[6] || 0 === e[6]) && (this.State.gregorian.millisecond = e[6]), this.updateFromGregorian() } }, { key: "calcJulian", value: function () { var e, t; e = this.State.julianday, t = this.jd_to_gregorian(e), this.State.gregorian.year = t[0], this.State.gregorian.month = t[1] - 1, this.State.gregorian.day = t[2], this.updateFromGregorian() } }, { key: "setJulian", value: function (e) { this.State.julianday = e, this.calcJulian() } }, { key: "calcPersian", value: function (e) { (e[0] || 0 === e[0]) && (this.State.persian.year = e[0]), (e[1] || 0 === e[1]) && (this.State.persian.month = e[1]), (e[2] || 0 === e[2]) && (this.State.persian.day = e[2]), (e[3] || 0 === e[3]) && (this.State.gregorian.hour = e[3]), (e[4] || 0 === e[4]) && (this.State.gregorian.minute = e[4]), (e[5] || 0 === e[5]) && (this.State.gregorian.second = e[5]), (e[6] || 0 === e[6]) && (this.State.gregorian.millisecond = e[6]), this.setJulian(this.persian_to_jd(this.State.persian.year, this.State.persian.month, this.State.persian.day)) } }, { key: "calcPersiana", value: function (e) { (e[0] || 0 === e[0]) && (this.State.persianAstro.year = e[0]), (e[1] || 0 === e[1]) && (this.State.persianAstro.month = e[1]), (e[2] || 0 === e[2]) && (this.State.persianAstro.day = e[2]), (e[3] || 0 === e[3]) && (this.State.gregorian.hour = e[3]), (e[4] || 0 === e[4]) && (this.State.gregorian.minute = e[4]), (e[5] || 0 === e[5]) && (this.State.gregorian.second = e[5]), (e[6] || 0 === e[6]) && (this.State.gregorian.millisecond = e[6]), this.setJulian(this.persiana_to_jd(this.State.persianAstro.year, this.State.persianAstro.month, this.State.persianAstro.day + .5)) } }]), e }(); e.exports = o }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = function () { function e() { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.J2000 = 2451545, this.JulianCentury = 36525, this.JulianMillennium = 10 * this.JulianCentury, this.TropicalYear = 365.24219878, this.oterms = [-4680.93, -1.55, 1999.25, -51.38, -249.67, -39.05, 7.12, 27.87, 5.79, 2.45], this.nutArgMult = [0, 0, 0, 0, 1, -2, 0, 0, 2, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, -2, 1, 0, 2, 2, 0, 0, 0, 2, 1, 0, 0, 1, 2, 2, -2, -1, 0, 2, 2, -2, 0, 1, 0, 0, -2, 0, 0, 2, 1, 0, 0, -1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, 0, -1, 2, 2, 0, 0, -1, 0, 1, 0, 0, 1, 2, 1, -2, 0, 2, 0, 0, 0, 0, -2, 2, 1, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 0, 0, -2, 0, 1, 2, 2, 0, 0, 0, 2, 0, -2, 0, 0, 2, 0, 0, 0, -1, 2, 1, 0, 2, 0, 0, 0, 2, 0, -1, 0, 1, -2, 2, 0, 2, 2, 0, 1, 0, 0, 1, -2, 0, 1, 0, 1, 0, -1, 0, 0, 1, 0, 0, 2, -2, 0, 2, 0, -1, 2, 1, 2, 0, 1, 2, 2, 0, 1, 0, 2, 2, -2, 1, 1, 0, 0, 0, -1, 0, 2, 2, 2, 0, 0, 2, 1, 2, 0, 1, 0, 0, -2, 0, 2, 2, 2, -2, 0, 1, 2, 1, 2, 0, -2, 0, 1, 2, 0, 0, 0, 1, 0, -1, 1, 0, 0, -2, -1, 0, 2, 1, -2, 0, 0, 0, 1, 0, 0, 2, 2, 1, -2, 0, 2, 0, 1, -2, 1, 0, 2, 1, 0, 0, 1, -2, 0, -1, 0, 1, 0, 0, -2, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2, 0, -1, -1, 1, 0, 0, 0, 1, 1, 0, 0, 0, -1, 1, 2, 2, 2, -1, -1, 2, 2, 0, 0, -2, 2, 2, 0, 0, 3, 2, 2, 2, -1, 0, 2, 2], this.nutArgCoeff = [-171996, -1742, 92095, 89, -13187, -16, 5736, -31, -2274, -2, 977, -5, 2062, 2, -895, 5, 1426, -34, 54, -1, 712, 1, -7, 0, -517, 12, 224, -6, -386, -4, 200, 0, -301, 0, 129, -1, 217, -5, -95, 3, -158, 0, 0, 0, 129, 1, -70, 0, 123, 0, -53, 0, 63, 0, 0, 0, 63, 1, -33, 0, -59, 0, 26, 0, -58, -1, 32, 0, -51, 0, 27, 0, 48, 0, 0, 0, 46, 0, -24, 0, -38, 0, 16, 0, -31, 0, 13, 0, 29, 0, 0, 0, 29, 0, -12, 0, 26, 0, 0, 0, -22, 0, 0, 0, 21, 0, -10, 0, 17, -1, 0, 0, 16, 0, -8, 0, -16, 1, 7, 0, -15, 0, 9, 0, -13, 0, 7, 0, -12, 0, 6, 0, 11, 0, 0, 0, -10, 0, 5, 0, -8, 0, 3, 0, 7, 0, -3, 0, -7, 0, 0, 0, -7, 0, 3, 0, -7, 0, 3, 0, 6, 0, 0, 0, 6, 0, -3, 0, 6, 0, -3, 0, -6, 0, 3, 0, -6, 0, 3, 0, 5, 0, 0, 0, -5, 0, 3, 0, -5, 0, 3, 0, -5, 0, 3, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, -4, 0, 0, 0, -4, 0, 0, 0, -4, 0, 0, 0, 3, 0, 0, 0, -3, 0, 0, 0, -3, 0, 0, 0, -3, 0, 0, 0, -3, 0, 0, 0, -3, 0, 0, 0, -3, 0, 0, 0, -3, 0, 0, 0], this.deltaTtab = [121, 112, 103, 95, 88, 82, 77, 72, 68, 63, 60, 56, 53, 51, 48, 46, 44, 42, 40, 38, 35, 33, 31, 29, 26, 24, 22, 20, 18, 16, 14, 12, 11, 10, 9, 8, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 15, 15, 14, 13, 13.1, 12.5, 12.2, 12, 12, 12, 12, 12, 12, 11.9, 11.6, 11, 10.2, 9.2, 8.2, 7.1, 6.2, 5.6, 5.4, 5.3, 5.4, 5.6, 5.9, 6.2, 6.5, 6.8, 7.1, 7.3, 7.5, 7.6, 7.7, 7.3, 6.2, 5.2, 2.7, 1.4, -1.2, -2.8, -3.8, -4.8, -5.5, -5.3, -5.6, -5.7, -5.9, -6, -6.3, -6.5, -6.2, -4.7, -2.8, -.1, 2.6, 5.3, 7.7, 10.4, 13.3, 16, 18.2, 20.2, 21.1, 22.4, 23.5, 23.8, 24.3, 24, 23.9, 23.9, 23.7, 24, 24.3, 25.3, 26.2, 27.3, 28.2, 29.1, 30, 30.7, 31.4, 32.2, 33.1, 34, 35, 36.5, 38.3, 40.2, 42.2, 44.5, 46.5, 48.5, 50.5, 52.2, 53.8, 54.9, 55.8, 56.9, 58.3, 60, 61.6, 63, 65, 66.6], this.EquinoxpTerms = [485, 324.96, 1934.136, 203, 337.23, 32964.467, 199, 342.08, 20.186, 182, 27.85, 445267.112, 156, 73.14, 45036.886, 136, 171.52, 22518.443, 77, 222.54, 65928.934, 74, 296.72, 3034.906, 70, 243.58, 9037.513, 58, 119.81, 33718.147, 52, 297.17, 150.678, 50, 21.02, 2281.226, 45, 247.54, 29929.562, 44, 325.15, 31555.956, 29, 60.93, 4443.417, 18, 155.12, 67555.328, 17, 288.79, 4562.452, 16, 198.04, 62894.029, 14, 199.76, 31436.921, 12, 95.39, 14577.848, 12, 287.11, 31931.756, 12, 320.81, 34777.259, 9, 227.73, 1222.114, 8, 15.45, 16859.074], this.JDE0tab1000 = [new Array(1721139.29189, 365242.1374, .06134, .00111, -71e-5), new Array(1721233.25401, 365241.72562, -.05323, .00907, 25e-5), new Array(1721325.70455, 365242.49558, -.11677, -.00297, 74e-5), new Array(1721414.39987, 365242.88257, -.00769, -.00933, -6e-5)], this.JDE0tab2000 = [new Array(2451623.80984, 365242.37404, .05169, -.00411, -57e-5), new Array(2451716.56767, 365241.62603, .00325, .00888, -3e-4), new Array(2451810.21715, 365242.01767, -.11575, .00337, 78e-5), new Array(2451900.05952, 365242.74049, -.06223, -.00823, 32e-5)] } return i(e, [{ key: "dtr", value: function (e) { return e * Math.PI / 180 } }, { key: "rtd", value: function (e) { return 180 * e / Math.PI } }, { key: "fixangle", value: function (e) { return e - 360 * Math.floor(e / 360) } }, { key: "fixangr", value: function (e) { return e - 2 * Math.PI * Math.floor(e / (2 * Math.PI)) } }, { key: "dsin", value: function (e) { return Math.sin(this.dtr(e)) } }, { key: "dcos", value: function (e) { return Math.cos(this.dtr(e)) } }, { key: "mod", value: function (e, t) { return e - t * Math.floor(e / t) } }, { key: "jwday", value: function (e) { return this.mod(Math.floor(e + 1.5), 7) } }, { key: "obliqeq", value: function (e) { var t, n, i, a; if (i = n = (e - this.J2000) / (100 * this.JulianCentury), t = 23.43929111111111, Math.abs(n) < 1) for (a = 0; a < 10; a++)t += this.oterms[a] / 3600 * i, i *= n; return t } }, { key: "nutation", value: function (e) { var t, n, i, a, r, o, s = (e - 2451545) / 36525, l = [], u = 0, d = 0; for (a = s * (i = s * s), l[0] = this.dtr(297.850363 + 445267.11148 * s - .0019142 * i + a / 189474), l[1] = this.dtr(357.52772 + 35999.05034 * s - 1603e-7 * i - a / 3e5), l[2] = this.dtr(134.96298 + 477198.867398 * s + .0086972 * i + a / 56250), l[3] = this.dtr(93.27191 + 483202.017538 * s - .0036825 * i + a / 327270), l[4] = this.dtr(125.04452 - 1934.136261 * s + .0020708 * i + a / 45e4), t = 0; t < 5; t++)l[t] = this.fixangr(l[t]); for (r = s / 10, t = 0; t < 63; t++) { for (o = 0, n = 0; n < 5; n++)0 !== this.nutArgMult[5 * t + n] && (o += this.nutArgMult[5 * t + n] * l[n]); u += (this.nutArgCoeff[4 * t + 0] + this.nutArgCoeff[4 * t + 1] * r) * Math.sin(o), d += (this.nutArgCoeff[4 * t + 2] + this.nutArgCoeff[4 * t + 3] * r) * Math.cos(o) } return [u / 36e6, d / 36e6] } }, { key: "deltat", value: function (e) { var t, n, i, a; return e >= 1620 && e <= 2e3 ? (n = (e - 1620) / 2 - (i = Math.floor((e - 1620) / 2)), t = this.deltaTtab[i] + (this.deltaTtab[i + 1] - this.deltaTtab[i]) * n) : (a = (e - 2e3) / 100, e < 948 ? t = 2177 + 497 * a + 44.1 * a * a : (t = 102 + 102 * a + 25.3 * a * a, e > 2e3 && e < 2100 && (t += .37 * (e - 2100)))), t } }, { key: "equinox", value: function (e, t) { var n, i, a, r, o = void 0, s = void 0, l = void 0, u = void 0, d = void 0; for (e < 1e3 ? (l = this.JDE0tab1000, d = e / 1e3) : (l = this.JDE0tab2000, d = (e - 2e3) / 1e3), r = 35999.373 * (a = ((i = l[t][0] + l[t][1] * d + l[t][2] * d * d + l[t][3] * d * d * d + l[t][4] * d * d * d * d) - 2451545) / 36525) - 2.47, n = 1 + .0334 * this.dcos(r) + 7e-4 * this.dcos(2 * r), u = 0, o = s = 0; o < 24; o++)u += this.EquinoxpTerms[s] * this.dcos(this.EquinoxpTerms[s + 1] + this.EquinoxpTerms[s + 2] * a), s += 3; return i + 1e-5 * u / n } }, { key: "sunpos", value: function (e) { var t, n, i, a, r, o, s, l, u, d, c, h, f = void 0, m = void 0, p = void 0, v = void 0; return f = 280.46646 + 36000.76983 * (t = (e - this.J2000) / this.JulianCentury) + 3032e-7 * (n = t * t), f = this.fixangle(f), m = 357.52911 + 35999.05029 * t + -1537e-7 * n, m = this.fixangle(m), i = .016708634 + -42037e-9 * t + -1.267e-7 * n, r = f + (a = (1.914602 + -.004817 * t + -14e-6 * n) * this.dsin(m) + (.019993 - 101e-6 * t) * this.dsin(2 * m) + 289e-6 * this.dsin(3 * m)), o = m + a, s = 1.000001018 * (1 - i * i) / (1 + i * this.dcos(o)), l = 125.04 - 1934.136 * t, u = r + -.00569 + -.00478 * this.dsin(l), d = (c = this.obliqeq(e)) + .00256 * this.dcos(l), p = this.rtd(Math.atan2(this.dcos(c) * this.dsin(r), this.dcos(r))), p = this.fixangle(p), h = this.rtd(Math.asin(this.dsin(c) * this.dsin(r))), v = this.rtd(Math.atan2(this.dcos(d) * this.dsin(u), this.dcos(u))), [f, m, i, a, r, o, s, u, p, h, v = this.fixangle(v), this.rtd(Math.asin(this.dsin(d) * this.dsin(u)))] } }, { key: "equationOfTime", value: function (e) { var t, n, i, a, r = void 0, o = void 0; return o = 280.4664567 + 360007.6982779 * (a = (e - this.J2000) / this.JulianMillennium) + .03032028 * a * a + a * a * a / 49931 + -a * a * a * a / 15300 + -a * a * a * a * a / 2e6, o = this.fixangle(o), t = this.sunpos(e)[10], n = this.nutation(e)[0], i = this.obliqeq(e) + this.nutation(e)[1], r = o + -.0057183 + -t + n * this.dcos(i), r -= 20 * Math.floor(r / 20), r /= 1440 } }]), e }(); e.exports = a }, function (e, t, n) { "use strict"; e.exports = { durationUnit: { year: ["y", "years", "year"], month: ["M", "months", "month"], day: ["d", "days", "day"], hour: ["h", "hours", "hour"], minute: ["m", "minutes", "minute"], second: ["s", "second", "seconds"], millisecond: ["ms", "milliseconds", "millisecond"], week: ["W", "w", "weeks", "week"] } } }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(0), r = (new a).normalizeDuration, o = (new a).absRound, s = (new a).absFloor, l = function () { function e(t, n) { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e); var i, a = {}, l = this._data = {}, u = r(t, n); a[u.unit] = u.value, i = a.milliseconds || a.millisecond || a.ms || 0; var d = a.years || a.year || a.y || 0, c = a.months || a.month || a.M || 0, h = a.weeks || a.w || a.week || 0, f = a.days || a.d || a.day || 0, m = a.hours || a.hour || a.h || 0, p = a.minutes || a.minute || a.m || 0, v = a.seconds || a.second || a.s || 0; return this._milliseconds = i + 1e3 * v + 6e4 * p + 36e5 * m, this._days = f + 7 * h, this._months = c + 12 * d, l.milliseconds = i % 1e3, v += s(i / 1e3), l.seconds = v % 60, p += o(v / 60), l.minutes = p % 60, m += o(p / 60), l.hours = m % 24, f += o(m / 24), f += 7 * h, l.days = f % 30, c += o(f / 30), l.months = c % 12, d += o(c / 12), l.years = d, this } return i(e, [{ key: "valueOf", value: function () { return this._milliseconds + 864e5 * this._days + 2592e6 * this._months } }]), e }(); e.exports = l }, function (e, t, n) { "use strict"; e.exports = { gregorian: { months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], weekdays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], weekdaysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"] }, persian: { months: ["Farvardin", "Ordibehesht", "Khordad", "Tir", "Mordad", "Shahrivar", "Mehr", "Aban", "Azar", "Dey", "Bahman", "Esfand"], monthsShort: ["Far", "Ord", "Kho", "Tir", "Mor", "Sha", "Meh", "Aba", "Aza", "Dey", "Bah", "Esf"], weekdays: ["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], weekdaysShort: ["Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri"], weekdaysMin: ["Sa", "Su", "Mo", "Tu", "We", "Th", "Fr"], persianDaysName: ["Urmazd", "Bahman", "Ordibehesht", "Shahrivar", "Sepandarmaz", "Khurdad", "Amordad", "Dey-be-azar", "Azar", "Aban", "Khorshid", "Mah", "Tir", "Gush", "Dey-be-mehr", "Mehr", "Sorush", "Rashn", "Farvardin", "Bahram", "Ram", "Bad", "Dey-be-din", "Din", "Ord", "Ashtad", "Asman", "Zamyad", "Mantre-sepand", "Anaram", "Ziadi"] } } }, function (e, t, n) { "use strict"; e.exports = { gregorian: { months: "ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"), monthsShort: "ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"), weekdays: "یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"), weekdaysShort: "یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"), weekdaysMin: "ی_د_س_چ_پ_ج_ش".split("_") }, persian: { months: ["فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند"], monthsShort: ["فرو", "ارد", "خرد", "تیر", "مرد", "شهر", "مهر", "آبا", "آذر", "دی", "بهم", "اسف"], weekdays: ["شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهار شنبه", "پنج‌شنبه", "جمعه"], weekdaysShort: ["ش", "ی", "د", "س", "چ", "پ", "ج"], weekdaysMin: ["ش", "ی", "د", "س", "چ", "پ", "ج"], persianDaysName: ["اورمزد", "بهمن", "اوردیبهشت", "شهریور", "سپندارمذ", "خورداد", "امرداد", "دی به آذز", "آذز", "آبان", "خورشید", "ماه", "تیر", "گوش", "دی به مهر", "مهر", "سروش", "رشن", "فروردین", "بهرام", "رام", "باد", "دی به دین", "دین", "ارد", "اشتاد", "آسمان", "زامیاد", "مانتره سپند", "انارام", "زیادی"] } } }, function (e, t, n) { "use strict"; var i = n(1); i.calendarType = "persian", i.leapYearMode = "astronomical", i.localType = "fa", e.exports = i }, function (e, t, n) { "use strict"; e.exports = function e() { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.isInvalidDate = null, this.gDate = null, this.modifiedjulianday = 0, this.julianday = 0, this.gregserial = { day: 0 }, this.zone = 0, this.gregorian = { year: 0, month: 0, day: 0, hour: 0, minute: 0, second: 0, millisecond: 0, weekday: 0, unix: 0, leap: 0 }, this.juliancalendar = { year: 0, month: 0, day: 0, leap: 0, weekday: 0 }, this.islamic = { year: 0, month: 0, day: 0, leap: 0, weekday: 0 }, this.persianAlgo = this.persian = { year: 0, month: 0, day: 0, leap: 0, weekday: 0 }, this.persianAstro = { year: 0, month: 0, day: 0, leap: 0, weekday: 0 }, this.isoweek = { year: 0, week: 0, day: 0 }, this.isoday = { year: 0, day: 0 } } }, function (e, t, n) { "use strict"; e.exports = { isArray: function (e) { return "[object Array]" === Object.prototype.toString.call(e) }, isNumber: function (e) { return "number" == typeof e }, isDate: function (e) { return e instanceof Date } } }, function (e, t, n) { "use strict"; e.exports = { validateInputArray: function (e) { var t = !0; return (e[1] < 1 || e[1] > 12) && (t = !1), (e[2] < 1 || e[1] > 31) && (t = !1), (e[3] < 0 || e[3] > 24) && (t = !1), (e[4] < 0 || e[4] > 60) && (t = !1), (e[5] < 0 || e[5] > 60) && (t = !1), t } } }]) }), function (e, t) { "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.persianDatepicker = t() : e.persianDatepicker = t() }(this, function () { return function (e) { var t = {}; function n(i) { if (t[i]) return t[i].exports; var a = t[i] = { i: i, l: !1, exports: {} }; return e[i].call(a.exports, a, a.exports, n), a.l = !0, a.exports } return n.m = e, n.c = t, n.i = function (e) { return e }, n.d = function (e, t, i) { n.o(e, t) || Object.defineProperty(e, t, { configurable: !1, enumerable: !0, get: i }) }, n.n = function (e) { var t = e && e.__esModule ? function () { return e.default } : function () { return e }; return n.d(t, "a", t), t }, n.o = function (e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, n.p = "", n(n.s = 5) }([function (e, t, n) { "use strict"; var i, a, r = { debounce: function (e, t, n) { var i; return function () { var a = this, r = arguments, o = n && !i; clearTimeout(i), i = setTimeout(function () { i = null, n || e.apply(a, r) }, t), o && e.apply(a, r) } }, log: function (e) { console.log(e) }, isMobile: (a = !1, i = navigator.userAgent || navigator.vendor || window.opera, (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(i) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(i.substr(0, 4))) && (a = !0), a), debug: function (e, t) { window.persianDatepickerDebug && (e.constructor.name ? console.log("Debug: " + e.constructor.name + " : " + t) : console.log("Debug: " + t)) }, delay: function (e, t) { clearTimeout(window.datepickerTimer), window.datepickerTimer = setTimeout(e, t) } }; e.exports = r }, function (e, t, n) { "use strict"; e.exports = '\n
\n {{#navigator.enabled}}\n
\n
{{navigator.text.btnNextText}}
\n
{{navigator.switch.text}}
\n
{{navigator.text.btnPrevText}}
\n
\n {{/navigator.enabled}}\n
\n {{#days.enabled}}\n {{#days.viewMode}}\n
\n
\n
\n
\n
\n {{#weekdays.list}}\n
{{.}}
\n {{/weekdays.list}}\n
\n
\n \n \n {{#days.list}}\n \n \n {{#.}}\n {{#enabled}}\n \n {{/enabled}}\n {{^enabled}}\n \n {{/enabled}}\n \n {{/.}}\n \n {{/days.list}}\n \n
\n {{title}}\n {{#altCalendarShowHint}}\n {{alterCalTitle}}\n {{/altCalendarShowHint}}\n \n {{title}}\n {{#altCalendarShowHint}}\n {{alterCalTitle}}\n {{/altCalendarShowHint}}\n
\n
\n
\n {{/days.viewMode}}\n {{/days.enabled}}\n \n {{#month.enabled}}\n {{#month.viewMode}}\n
\n {{#month.list}}\n {{#enabled}} \n
{{title}}
\n {{/enabled}}\n {{^enabled}} \n
{{title}}
\n {{/enabled}}\n {{/month.list}}\n
\n {{/month.viewMode}}\n {{/month.enabled}}\n \n {{#year.enabled }}\n {{#year.viewMode }}\n
\n {{#year.list}}\n {{#enabled}}\n
{{title}}
\n {{/enabled}}\n {{^enabled}}\n
{{title}}
\n {{/enabled}} \n {{/year.list}}\n
\n {{/year.viewMode }}\n {{/year.enabled }}\n \n
\n {{#time}}\n {{#enabled}}\n
\n {{#hour.enabled}}\n
\n
\n \n
\n
\n
\n :\n
\n {{/hour.enabled}}\n {{#minute.enabled}}\n
\n
\n \n
\n
\n
\n :\n
\n {{/minute.enabled}}\n {{#second.enabled}}\n
\n
\n \n
\n
\n
\n
\n {{/second.enabled}}\n {{#meridian.enabled}}\n
\n
\n \n
\n
\n {{/meridian.enabled}}\n
\n {{/enabled}}\n {{/time}}\n \n {{#toolbox}}\n {{#enabled}}\n
\n {{#toolbox.submitButton.enabled}}\n
{{submitButtonText}}
\n {{/toolbox.submitButton.enabled}} \n {{#toolbox.todayButton.enabled}}\n
{{todayButtonText}}
\n {{/toolbox.todayButton.enabled}} \n {{#toolbox.calendarSwitch.enabled}}\n
{{calendarSwitchText}}
\n {{/toolbox.calendarSwitch.enabled}}\n
X
\n {{/enabled}}\n {{^enabled}}\n {{#onlyTimePicker}}\n
\n
{{submitButtonText}}
\n
\n {{/onlyTimePicker}}\n {{/enabled}}\n {{/toolbox}}\n
\n' }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(11), r = n(12), o = n(13), s = n(6), l = n(3), u = n(7), d = n(8), c = n(10), h = function () { function e(t, n) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.components(t, n) } return i(e, [{ key: "components", value: function (e, t) { return this.initialUnix = null, this.inputElement = e, this.options = new d(t, this), this.PersianDate = new c(this), this.state = new a(this), this.api = new l(this), this.input = new s(this, e), this.view = new o(this), this.toolbox = new r(this), this.updateInput = function (e) { this.input.update(e) }, this.state.setViewDateTime("unix", this.input.getOnInitState()), this.state.setSelectedDateTime("unix", this.input.getOnInitState()), this.view.render(), this.navigator = new u(this), this.api } }]), e }(); e.exports = h }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = function () { function e(t) { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.model = t } return i(e, [{ key: "show", value: function () { return this.model.view.show(), this.model.options.onShow(this.model), this.model } }, { key: "getState", value: function () { return this.model.state } }, { key: "hide", value: function () { return this.model.view.hide(), this.model.options.onHide(this.model), this.model } }, { key: "toggle", value: function () { return this.model.view.toggle(), this.model.options.onToggle(this.model), this.model } }, { key: "destroy", value: function () { this.model && (this.model.view.destroy(), this.model.options.onDestroy(this.model), delete this.model) } }, { key: "setDate", value: function (e) { return this.model.state.setSelectedDateTime("unix", e), this.model.state.setViewDateTime("unix", e), this.model.state.setSelectedDateTime("unix", e), this.model.view.render(this.view), this.model.options.onSet(e), this.model } }, { key: "options", get: function () { return this.model.options }, set: function (e) { var t = Zepto.extend(!0, this.model.options, e); this.model.view.destroy(), this.model.components(this.model.inputElement, t) } }]), e }(); e.exports = a }, function (e, t, n) { "use strict"; var i = n(0), a = { calendarType: "persian", calendar: { persian: { locale: "fa", showHint: !1, leapYearMode: "algorithmic" }, gregorian: { locale: "en", showHint: !1 } }, responsive: !0, inline: !1, initialValue: !0, initialValueType: "gregorian", persianDigit: !0, viewMode: "day", format: "LLLL", formatter: function (e) { return this.model.PersianDate.date(e).format(this.format) }, altField: !1, altFormat: "unix", altFieldFormatter: function (e) { var t = this.altFormat.toLowerCase(); return "gregorian" === t || "g" === t ? new Date(e) : "unix" === t || "u" === t ? e : this.model.PersianDate.date(e).format(this.altFormat) }, minDate: null, maxDate: null, navigator: { enabled: !0, scroll: { enabled: !0 }, text: { btnNextText: "<", btnPrevText: ">" }, onNext: function (e) { i.debug(e, "Event: onNext") }, onPrev: function (e) { i.debug(e, "Event: onPrev") }, onSwitch: function (e) { i.debug(e, "dayPicker Event: onSwitch") } }, toolbox: { enabled: !0, text: { btnToday: "امروز" }, submitButton: { enabled: i.isMobile, text: { fa: "تایید", en: "submit" }, onSubmit: function (e) { i.debug(e, "dayPicker Event: onSubmit") } }, todayButton: { enabled: !0, text: { fa: "امروز", en: "today" }, onToday: function (e) { i.debug(e, "dayPicker Event: onToday") } }, calendarSwitch: { enabled: !0, format: "MMMM", onSwitch: function (e) { i.debug(e, "dayPicker Event: onSwitch") } }, onToday: function (e) { i.debug(e, "dayPicker Event: onToday") } }, onlyTimePicker: !1, onlySelectOnDate: !0, checkDate: function () { return !0 }, checkMonth: function () { return !0 }, checkYear: function () { return !0 }, timePicker: { enabled: !1, step: 1, hour: { enabled: !0, step: null }, minute: { enabled: !0, step: null }, second: { enabled: !0, step: null }, meridian: { enabled: !1 } }, dayPicker: { enabled: !0, titleFormat: "YYYY MMMM", titleFormatter: function (e, t) { return this.model.PersianDate.date([e, t]).format(this.model.options.dayPicker.titleFormat) }, onSelect: function (e) { i.debug(this, "dayPicker Event: onSelect : " + e) } }, monthPicker: { enabled: !0, titleFormat: "YYYY", titleFormatter: function (e) { return this.model.PersianDate.date(e).format(this.model.options.monthPicker.titleFormat) }, onSelect: function (e) { i.debug(this, "monthPicker Event: onSelect : " + e) } }, yearPicker: { enabled: !0, titleFormat: "YYYY", titleFormatter: function (e) { var t = 12 * parseInt(e / 12, 10), n = this.model.PersianDate.date([t]), i = this.model.PersianDate.date([t + 11]); return n.format(this.model.options.yearPicker.titleFormat) + "-" + i.format(this.model.options.yearPicker.titleFormat) }, onSelect: function (e) { i.debug(this, "yearPicker Event: onSelect : " + e) } }, onSelect: function (e) { i.debug(this, "datepicker Event: onSelect : " + e) }, onSet: function (e) { i.debug(this, "datepicker Event: onSet : " + e) }, position: "auto", onShow: function (e) { i.debug(e, "Event: onShow ") }, onHide: function (e) { i.debug(e, "Event: onHide ") }, onToggle: function (e) { i.debug(e, "Event: onToggle ") }, onDestroy: function (e) { i.debug(e, "Event: onDestroy ") }, autoClose: !1, template: null, observer: !1, inputDelay: 800 }; e.exports = a }, function (e, t, n) { "use strict"; var i, a = n(2); (i = Zepto).fn.persianDatepicker = i.fn.pDatepicker = function (e) { var t = Array.prototype.slice.call(arguments), n = this; return this || i.error("Invalid selector"), i(this).each(function () { var r = t.concat([]), o = i(this).data("datepicker"), s = null; o && "string" == typeof r[0] ? (s = r[0], o[s](r[0])) : n.pDatePicker = new a(this, e) }), i(this).data("datepicker", n.pDatePicker), n.pDatePicker } }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(0), r = n(9), o = function () { function e(t, n) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.model = t, this._firstUpdate = !0, this.elem = n, this.model.options.observer && this.observe(), this.addInitialClass(), this.initialUnix = null, 0 == this.model.options.inline && this._attachInputElementEvents(), this } return i(e, [{ key: "addInitialClass", value: function () { Zepto(this.elem).addClass("pwt-datepicker-input-element") } }, { key: "parseInput", value: function (e) { var t = new r; if (void 0 !== t.parse(e)) { var n = this.model.PersianDate.date(t.parse(e)).valueOf(); this.model.state.setSelectedDateTime("unix", n), this.model.state.setViewDateTime("unix", n), this.model.view.render() } } }, { key: "observe", value: function () { var e = this; Zepto(e.elem).bind("paste", function (t) { a.delay(function () { e.parseInput(t.target.value) }, 60) }); var t = void 0, n = e.model.options.inputDelay, i = !1, r = [17, 91]; Zepto(document).keydown(function (e) { Zepto.inArray(e.keyCode, r) > 0 && (i = !0) }).keyup(function (e) { Zepto.inArray(e.keyCode, r) > 0 && (i = !1) }), Zepto(e.elem).bind("keyup", function (a) { var o = Zepto(this), s = !1; (8 === a.keyCode || a.keyCode < 105 && a.keyCode > 96 || a.keyCode < 58 && a.keyCode > 47 || i && (86 == a.keyCode || Zepto.inArray(a.keyCode, r) > 0)) && (s = !0), s && (clearTimeout(t), t = setTimeout(function () { !function (t) { e.parseInput(t.val()) }(o) }, n)) }), Zepto(e.elem).on("keydown", function () { clearTimeout(t) }) } }, { key: "_attachInputElementEvents", value: function () { var e = this, t = function t(n) { Zepto(n.target).is(e.elem) || Zepto(n.target).is(e.model.view.Zeptocontainer) || 0 != Zepto(n.target).closest("#" + e.model.view.Zeptocontainer.attr("id")).length || Zepto(n.target).is(Zepto(e.elem).children()) || (e.model.api.hide(), Zepto("body").unbind("click", t)) }; Zepto(this.elem).on("focus click", a.debounce(function (n) { return e.model.api.show(), !1 === e.model.state.ui.isInline && Zepto("body").unbind("click", t).bind("click", t), a.isMobile && Zepto(this).blur(), n.stopPropagation(), !1 }, 200)), Zepto(this.elem).on("keydown", a.debounce(function (t) { if (9 === t.which) return e.model.api.hide(), !1 }, 200)) } }, { key: "getInputPosition", value: function () { return Zepto(this.elem).offset() } }, { key: "getInputSize", value: function () { const e = Zepto(this.elem)[0]; return { width: parseInt(e.offsetWidth), height: parseInt(e.offsetHeight) } } }, { key: "_updateAltField", value: function (e) { var t = this.model.options.altFieldFormatter(e); Zepto(this.model.options.altField).val(t) } }, { key: "_updateInputField", value: function (e) { var t = this.model.options.formatter(e); Zepto(this.elem).val() != t && Zepto(this.elem).val(t) } }, { key: "update", value: function (e) { 0 == this.model.options.initialValue && this._firstUpdate ? this._firstUpdate = !1 : (this._updateInputField(e), this._updateAltField(e)) } }, { key: "getOnInitState", value: function () { var e = null, t = Zepto(this.elem), n = void 0; if ((n = "INPUT" === t[0].nodeName ? t[0].getAttribute("value") : t.data("date")) && n.match("^([0-1][0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$")) { var i = n.split(":"), a = new Date; a.setHours(i[0]), a.setMinutes(i[1]), i[2] ? a.setSeconds(i[2]) : a.setSeconds(0), this.initialUnix = a.valueOf() } else { if ("persian" === this.model.options.initialValueType && n) { var o = new r, s = new persianDate(o.parse(n)).valueOf(); e = new Date(s).valueOf() } else "unix" === this.model.options.initialValueType && n ? e = parseInt(n) : n && (e = new Date(n).valueOf()); this.initialUnix = e && "undefined" != e ? e : (new Date).valueOf() } return this.initialUnix } }]), e }(); e.exports = o }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(14), r = function () { function e(t) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.model = t, this.liveAttach(), this._attachEvents(), this } return i(e, [{ key: "liveAttach", value: function () { if (this.model.options.navigator.scroll.enabled) { var e = this, t = Zepto("#" + e.model.view.id + " .datepicker-grid-view")[0]; a(t).wheel(function (t, n) { n > 0 ? e.model.state.navigate("next") : e.model.state.navigate("prev"), e.model.view.render(), t.preventDefault() }), this.model.options.timePicker.enabled && Zepto("#" + e.model.view.id + " .time-segment").each(function () { a(this).wheel(function (t, n) { var i = Zepto(t.target), a = i.data("time-key") ? i.data("time-key") : i.parents("[data-time-key]").data("time-key"); a && (n > 0 ? e.timeUp(a) : e.timeDown(a)), e.model.view.render(), t.preventDefault() }) }) } } }, { key: "timeUp", value: function (e) { if (null != this.model.options.timePicker[e]) { var t = void 0, n = void 0, i = this; "meridian" == e ? (t = 12, n = "PM" == this.model.state.view.meridian ? this.model.PersianDate.date(this.model.state.selected.unixDate).add("hour", t).valueOf() : this.model.PersianDate.date(this.model.state.selected.unixDate).subtract("hour", t).valueOf(), this.model.state.meridianToggle()) : (t = this.model.options.timePicker[e].step, n = this.model.PersianDate.date(this.model.state.selected.unixDate).add(e, t).valueOf()), this.model.state.setViewDateTime("unix", n), this.model.state.setSelectedDateTime("unix", n), this.model.view.renderTimePartial(), clearTimeout(this.scrollDelayTimeDown), this.scrollDelayTimeUp = setTimeout(function () { i.model.view.markSelectedDay() }, 300) } } }, { key: "timeDown", value: function (e) { if (null != this.model.options.timePicker[e]) { var t = void 0, n = void 0, i = this; "meridian" == e ? (t = 12, n = "AM" == this.model.state.view.meridian ? this.model.PersianDate.date(this.model.state.selected.unixDate).add("hour", t).valueOf() : this.model.PersianDate.date(this.model.state.selected.unixDate).subtract("hour", t).valueOf(), this.model.state.meridianToggle()) : (t = this.model.options.timePicker[e].step, n = this.model.PersianDate.date(this.model.state.selected.unixDate).subtract(e, t).valueOf()), this.model.state.setViewDateTime("unix", n), this.model.state.setSelectedDateTime("unix", n), this.model.view.renderTimePartial(), clearTimeout(this.scrollDelayTimeDown), this.scrollDelayTimeDown = setTimeout(function () { i.model.view.markSelectedDay() }, 300) } } }, { key: "_attachEvents", value: function () { var e = this; this.model.options.navigator.enabled && Zepto(document).on("click", "#" + e.model.view.id + " .pwt-btn", function () { Zepto(this).is(".pwt-btn-next") ? (e.model.state.navigate("next"), e.model.view.render(), e.model.options.navigator.onNext(e.model)) : Zepto(this).is(".pwt-btn-switch") ? (e.model.state.switchViewMode(), e.model.view.render(), e.model.options.navigator.onSwitch(e.model)) : Zepto(this).is(".pwt-btn-prev") && (e.model.state.navigate("prev"), e.model.view.render(), e.model.options.navigator.onPrev(e.model)) }), this.model.options.timePicker.enabled && (Zepto(document).on("click", "#" + e.model.view.id + " .up-btn", function () { var t = Zepto(this).data("time-key"); e.timeUp(t), e.model.options.onSelect(e.model.state.selected.unixDate) }), Zepto(document).on("click", "#" + e.model.view.id + " .down-btn", function () { var t = Zepto(this).data("time-key"); e.timeDown(t), e.model.options.onSelect(e.model.state.selected.unixDate) })), this.model.options.dayPicker.enabled && Zepto(document).on("click", "#" + e.model.view.id + " .datepicker-day-view td:not(.disabled)", function () { var t = Zepto(this).data("unix"), n = void 0; e.model.state.setSelectedDateTime("unix", t), n = e.model.state.selected.month !== e.model.state.view.month, e.model.state.setViewDateTime("unix", e.model.state.selected.unixDate), e.model.options.autoClose && (e.model.view.hide(), e.model.options.onHide(e)), n ? e.model.view.render() : e.model.view.markSelectedDay(), e.model.options.dayPicker.onSelect(t), e.model.options.onSelect(t) }), this.model.options.monthPicker.enabled && Zepto(document).on("click", "#" + e.model.view.id + " .datepicker-month-view .month-item:not(.month-item-disable)", function () { var t = Zepto(this).data("month"), n = Zepto(this).data("year"); e.model.state.switchViewModeTo("day"), e.model.options.onlySelectOnDate || (e.model.state.setSelectedDateTime("year", n), e.model.state.setSelectedDateTime("month", t), e.model.options.autoClose && (e.model.view.hide(), e.model.options.onHide(e))), e.model.state.setViewDateTime("month", t), e.model.view.render(), e.model.options.monthPicker.onSelect(t), e.model.options.onSelect(e.model.state.selected.unixDate) }), this.model.options.yearPicker.enabled && Zepto(document).on("click", "#" + e.model.view.id + " .datepicker-year-view .year-item:not(.year-item-disable)", function () { var t = Zepto(this).data("year"); e.model.state.switchViewModeTo("month"), e.model.options.onlySelectOnDate || (e.model.state.setSelectedDateTime("year", t), e.model.options.autoClose && (e.model.view.hide(), e.model.options.onHide(e))), e.model.state.setViewDateTime("year", t), e.model.view.render(), e.model.options.yearPicker.onSelect(t), e.model.options.onSelect(e.model.state.selected.unixDate) }) } }]), e }(); e.exports = r }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = n(4), r = n(1), o = function () { function e(t, n) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.model = n, this._compatibility(Zepto.extend(!0, this, a, t)) } return i(e, [{ key: "_compatibility", value: function (e) { e.inline && (e.toolbox.submitButton.enabled = !1), e.template || (e.template = r), persianDate.toCalendar(e.calendarType), persianDate.toLocale(e.calendar[e.calendarType].locale), e.onlyTimePicker && (e.dayPicker.enabled = !1, e.monthPicker.enabled = !1, e.yearPicker.enabled = !1, e.navigator.enabled = !1, e.toolbox.enabled = !1, e.timePicker.enabled = !0), null === e.timePicker.hour.step && (e.timePicker.hour.step = e.timePicker.step), null === e.timePicker.minute.step && (e.timePicker.minute.step = e.timePicker.step), null === e.timePicker.second.step && (e.timePicker.second.step = e.timePicker.step), !1 === e.dayPicker.enabled && (e.onlySelectOnDate = !1), e._viewModeList = [], e.dayPicker.enabled && e._viewModeList.push("day"), e.monthPicker.enabled && e._viewModeList.push("month"), e.yearPicker.enabled && e._viewModeList.push("year") } }]), e }(); e.exports = o }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = function () { function e() { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.pattern = { iso: /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]+)?(Z)?$/g, jalali: /^[1-4]\d{3}(\/|-|\.)((0?[1-6](\/|-|\.)((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))(\/|-|\.)(30|([1-2][0-9])|(0?[1-9]))))$/g } } return i(e, [{ key: "parse", value: function (e) { var t = new RegExp(this.pattern.iso), n = new RegExp(this.pattern.jalali); return String.prototype.toEnglishDigits = function () { var e = "۰".charCodeAt(0); return this.replace(/[۰-۹]/g, function (t) { return t.charCodeAt(0) - e }) }, e = e.toEnglishDigits(), n.test(e) ? e.split(/\/|-|\,|\./).map(Number) : t.test(e) ? e.split(/\/|-|\,|\:|\T|\Z/g).map(Number) : void 0 } }]), e }(); e.exports = a }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = function () { function e(t) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.model = t, this.model.options.calendar_ = this.model.options.calendarType, this.model.options.locale_ = this.model.options.calendar[this.model.options.calendarType].locale, this } return i(e, [{ key: "date", value: function (e) { window.inspdCount || 0 === window.inspdCount ? window.inspdCount++ : window.inspdCount = 0; var t = void 0; return t = persianDate.toCalendar(this.model.options.calendar_), this.model.options.calendar[this.model.options.calendarType].leapYearMode && t.toLeapYearMode(this.model.options.calendar[this.model.options.calendarType].leapYearMode), new t(e).toLocale(this.model.options.locale_) } }]), e }(); e.exports = a }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = function () { function e(t) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.model = t, this.filetredDate = this.model.options.minDate || this.model.options.maxDate, this.viewModeList = this.model.options._viewModeList, this.viewMode = this.viewModeList.indexOf(t.options.viewMode) > 0 ? t.options.viewMode : this.viewModeList[0], this.viewModeIndex = this.viewModeList.indexOf(t.options.viewMode) > 0 ? this.viewModeList.indexOf(t.options.viewMode) : 0, this.filterDate = { start: { year: 0, month: 0, date: 0, hour: 0, minute: 0, second: 0, unixDate: 0 }, end: { year: 0, month: 0, date: 0, hour: 0, minute: 0, second: 0, unixDate: 0 } }, this.view = { year: 0, month: 0, date: 0, hour: 0, minute: 0, second: 0, unixDate: 0, dateObject: null, meridian: "AM" }, this.selected = { year: 0, month: 0, date: 0, hour: 0, hour12: 0, minute: 0, second: 0, unixDate: 0, dateObject: null }, this.ui = { isOpen: !1, isInline: this.model.options.inline }, this._setFilterDate(this.model.options.minDate, this.model.options.maxDate), this } return i(e, [{ key: "_setFilterDate", value: function (e, t) { e || (e = -2e15), t || (t = 2e15); var n = this.model.PersianDate.date(e); this.filterDate.start.unixDate = e, this.filterDate.start.hour = n.hour(), this.filterDate.start.minute = n.minute(), this.filterDate.start.second = n.second(), this.filterDate.start.month = n.month(), this.filterDate.start.date = n.date(), this.filterDate.start.year = n.year(); var i = this.model.PersianDate.date(t); this.filterDate.end.unixDate = t, this.filterDate.end.hour = i.hour(), this.filterDate.end.minute = i.minute(), this.filterDate.end.second = i.second(), this.filterDate.end.month = i.month(), this.filterDate.end.date = i.date(), this.filterDate.end.year = i.year() } }, { key: "navigate", value: function (e) { if ("next" == e) { if ("year" == this.viewMode && this.setViewDateTime("year", this.view.year + 12), "month" == this.viewMode) { var t = this.view.year + 1; 0 === t && (t = 1), this.setViewDateTime("year", t) } if ("day" == this.viewMode) { var n = this.view.year + 1; 0 === n && (n = 1), this.view.month + 1 == 13 ? (this.setViewDateTime("year", n), this.setViewDateTime("month", 1)) : this.setViewDateTime("month", this.view.month + 1) } } else { if ("year" == this.viewMode && this.setViewDateTime("year", this.view.year - 12), "month" == this.viewMode) { var i = this.view.year - 1; 0 === i && (i = -1), this.setViewDateTime("year", i) } if ("day" == this.viewMode) if (this.view.month - 1 <= 0) { var a = this.view.year - 1; 0 === a && (a = -1), this.setViewDateTime("year", a), this.setViewDateTime("month", 12) } else this.setViewDateTime("month", this.view.month - 1) } } }, { key: "switchViewMode", value: function () { return this.viewModeIndex = this.viewModeIndex + 1 >= this.viewModeList.length ? 0 : this.viewModeIndex + 1, this.viewMode = this.viewModeList[this.viewModeIndex] ? this.viewModeList[this.viewModeIndex] : this.viewModeList[0], this._setViewDateTimeUnix(), this } }, { key: "switchViewModeTo", value: function (e) { this.viewModeList.indexOf(e) >= 0 && (this.viewMode = e, this.viewModeIndex = this.viewModeList.indexOf(e)) } }, { key: "setSelectedDateTime", value: function (e, t) { switch (e) { case "unix": this.selected.unixDate = t; var n = this.model.PersianDate.date(t); this.selected.year = n.year(), this.selected.month = n.month(), this.selected.date = n.date(), this.selected.hour = n.hour(), this.selected.hour12 = n.format("hh"), this.selected.minute = n.minute(), this.selected.second = n.second(); break; case "year": this.selected.year = t; break; case "month": this.selected.month = t; break; case "date": this.selected.date = t; break; case "hour": this.selected.hour = t; break; case "minute": this.selected.minute = t; break; case "second": this.selected.second = t }return this._updateSelectedUnix(), this } }, { key: "_updateSelectedUnix", value: function () { return this.selected.dateObject = this.model.PersianDate.date([this.selected.year, this.selected.month, this.selected.date, this.view.hour, this.view.minute, this.view.second]), this.selected.unixDate = this.selected.dateObject.valueOf(), this.model.updateInput(this.selected.unixDate), this } }, { key: "_setViewDateTimeUnix", value: function () { var e = (new persianDate).daysInMonth(this.view.year, this.view.month); return this.view.date > e && (this.view.date = e), this.view.dateObject = this.model.PersianDate.date([this.view.year, this.view.month, this.view.date, this.view.hour, this.view.minute, this.view.second]), this.view.year = this.view.dateObject.year(), this.view.month = this.view.dateObject.month(), this.view.date = this.view.dateObject.date(), this.view.hour = this.view.dateObject.hour(), this.view.hour12 = this.view.dateObject.format("hh"), this.view.minute = this.view.dateObject.minute(), this.view.second = this.view.dateObject.second(), this.view.unixDate = this.view.dateObject.valueOf(), this } }, { key: "setViewDateTime", value: function (e, t) { switch (e) { case "unix": var n = this.model.PersianDate.date(t); this.view.year = n.year(), this.view.month = n.month(), this.view.date = n.date(), this.view.hour = n.hour(), this.view.minute = n.minute(), this.view.second = n.second(); break; case "year": this.view.year = t; break; case "month": this.view.month = t; break; case "date": this.view.date = t; break; case "hour": this.view.hour = t; break; case "minute": this.view.minute = t; break; case "second": this.view.second = t }return this._setViewDateTimeUnix(), this } }, { key: "meridianToggle", value: function () { "AM" === this.view.meridian ? this.view.meridian = "PM" : "PM" === this.view.meridian && (this.view.meridian = "AM") } }]), e }(); e.exports = a }, function (e, t, n) { "use strict"; var i = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var a = function () { function e(t) { return function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.model = t, this._attachEvents(), this } return i(e, [{ key: "_toggleCalendartype", value: function () { "persian" == this.model.options.calendar_ ? (this.model.options.calendar_ = "gregorian", this.model.options.locale_ = this.model.options.calendar.gregorian.locale) : (this.model.options.calendar_ = "persian", this.model.options.locale_ = this.model.options.calendar.persian.locale) } }, { key: "_attachEvents", value: function () { var e = this; Zepto(document).on("click", "#" + e.model.view.id + " .pwt-btn-today", function () { e.model.state.setSelectedDateTime("unix", (new Date).valueOf()), e.model.state.setViewDateTime("unix", (new Date).valueOf()), e.model.view.reRender(), e.model.options.toolbox.onToday(e.model), e.model.options.toolbox.todayButton.onToday(e.model) }), Zepto(document).on("click", "#" + e.model.view.id + " .pwt-btn-calendar", function () { e._toggleCalendartype(), e.model.state.setSelectedDateTime("unix", e.model.state.selected.unixDate), e.model.state.setViewDateTime("unix", e.model.state.view.unixDate), e.model.view.render(), e.model.options.toolbox.calendarSwitch.onSwitch(e.model) }), Zepto(document).on("click", "#" + e.model.view.id + " .pwt-btn-submit", function () { e.model.view.hide(), e.model.options.toolbox.submitButton.onSubmit(e.model), e.model.options.onHide(this) }) } }]), e }(); e.exports = a }, function (e, t, n) { "use strict"; var i = function () { return function (e, t) { if (Array.isArray(e)) return e; if (Symbol.iterator in Object(e)) return function (e, t) { var n = [], i = !0, a = !1, r = void 0; try { for (var o, s = e[Symbol.iterator](); !(i = (o = s.next()).done) && (n.push(o.value), !t || n.length !== t); i = !0); } catch (e) { a = !0, r = e } finally { try { !i && s.return && s.return() } finally { if (a) throw r } } return n }(e, t); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), a = function () { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function (t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(); var r = n(1), o = n(0), s = n(15), l = function () { function e(t) { !function (e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") }(this, e), this.yearsViewCount = 12, this.model = t, this.rendered = null, this.Zeptocontainer = null, this.id = "persianDateInstance-" + parseInt(1e3 * Math.random(100)); return this.model.state.ui.isInline ? this.Zeptocontainer = Zepto('
').appendTo(this.model.inputElement) : (this.Zeptocontainer = Zepto('
').appendTo("body"), this.hide(), this.setPickerBoxPosition(), this.addCompatibilityClass()), this } return a(e, [{ key: "addCompatibilityClass", value: function () { o.isMobile && this.model.options.responsive && this.Zeptocontainer.addClass("pwt-mobile-view") } }, { key: "destroy", value: function () { this.Zeptocontainer.remove() } }, { key: "setPickerBoxPosition", value: function () { const e = this.model.input.getInputPosition(), t = this.model.input.getInputSize(); if (o.isMobile && this.model.options.responsive) return !1; if ("auto" === this.model.options.position) { const n = parseInt(e.left) + parseInt(t.width), i = parseInt(e.top) + parseInt(t.height); this.Zeptocontainer.css({ left: n + "px", top: i + "px" }) } else this.Zeptocontainer.css({ right: this.model.options.position[1] + e.left + "px", top: this.model.options.position[0] + e.top + "px" }) } }, { key: "show", value: function () { this.Zeptocontainer.removeClass("pwt-hide"), this.setPickerBoxPosition() } }, { key: "hide", value: function () { this.Zeptocontainer.addClass("pwt-hide") } }, { key: "toggle", value: function () { this.Zeptocontainer.toggleClass("pwt-hide") } }, { key: "_getNavSwitchText", value: function (e) { var t = void 0; return "day" == this.model.state.viewMode ? t = this.model.options.dayPicker.titleFormatter.call(this, e.year, e.month) : "month" == this.model.state.viewMode ? t = this.model.options.monthPicker.titleFormatter.call(this, e.dateObject.valueOf()) : "year" == this.model.state.viewMode && (t = this.model.options.yearPicker.titleFormatter.call(this, e.year)), t } }, { key: "checkYearAccess", value: function (e) { if (this.model.state.filetredDate) { var t = this.model.state.filterDate.start.year, n = this.model.state.filterDate.end.year; if (t && e < t) return !1; if (n && e > n) return !1 } return this.model.options.checkYear(e) } }, { key: "_getYearViewModel", value: function (e) { var t = this, n = this.model.options.yearPicker.enabled; if (!n) return { enabled: !1 }; var i = [].concat(function (e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++)n[t] = e[t]; return n } return Array.from(e) }(Array(this.yearsViewCount).keys())).map(function (n) { return n + parseInt(e.year / t.yearsViewCount) * t.yearsViewCount }), a = [], r = this.model.PersianDate.date(), o = !0, s = !1, l = void 0; try { for (var u, d = i[Symbol.iterator](); !(o = (u = d.next()).done); o = !0) { var c = u.value; r.year([c]), a.push({ title: r.format("YYYY"), enabled: this.checkYearAccess(c), dataYear: c, selected: this.model.state.selected.year == c }) } } catch (e) { s = !0, l = e } finally { try { !o && d.return && d.return() } finally { if (s) throw l } } return { enabled: n, viewMode: "year" == this.model.state.viewMode, list: a } } }, { key: "checkMonthAccess", value: function (e) { e += 1; var t = this.model.state.view.year; if (this.model.state.filetredDate) { var n = this.model.state.filterDate.start.month, i = this.model.state.filterDate.end.month, a = this.model.state.filterDate.start.year, r = this.model.state.filterDate.end.year; if (n && i && (t == r && e > i || t > r) || t == a && e < n || t < a) return !1; if (i && (t == r && e > i || t > r)) return !1; if (n && (t == a && e < n || t < a)) return !1 } return this.model.options.checkMonth(e, t) } }, { key: "_getMonthViewModel", value: function () { var e = this.model.options.monthPicker.enabled; if (!e) return { enabled: !1 }; var t = [], n = !0, a = !1, r = void 0; try { for (var o, s = this.model.PersianDate.date().rangeName().months.entries()[Symbol.iterator](); !(n = (o = s.next()).done); n = !0) { var l = i(o.value, 2), u = l[0], d = l[1]; t.push({ title: d, enabled: this.checkMonthAccess(u), year: this.model.state.view.year, dataMonth: u + 1, selected: this.model.state.selected.year == this.model.state.view.year && this.model.state.selected.month == u + 1 }) } } catch (e) { a = !0, r = e } finally { try { !n && s.return && s.return() } finally { if (a) throw r } } return { enabled: e, viewMode: "month" == this.model.state.viewMode, list: t } } }, { key: "checkDayAccess", value: function (e) { if (this.minDate = this.model.options.minDate, this.maxDate = this.model.options.maxDate, this.model.state.filetredDate) if (this.minDate && this.maxDate) { if (this.minDate = this.model.PersianDate.date(this.minDate).startOf("day").valueOf(), this.maxDate = this.model.PersianDate.date(this.maxDate).endOf("day").valueOf(), !(e >= this.minDate && e <= this.maxDate)) return !1 } else if (this.minDate) { if (this.minDate = this.model.PersianDate.date(this.minDate).startOf("day").valueOf(), e <= this.minDate) return !1 } else if (this.maxDate && (this.maxDate = this.model.PersianDate.date(this.maxDate).endOf("day").valueOf(), e >= this.maxDate)) return !1; return this.model.options.checkDate(e) } }, { key: "_getDayViewModel", value: function () { if ("day" != this.model.state.viewMode) return []; var e = this.model.options.dayPicker.enabled; if (!e) return { enabled: !1 }; var t = this.model.state.view.month, n = this.model.state.view.year, a = this.model.PersianDate.date(), r = a.daysInMonth(n, t), o = a.getFirstWeekDayOfMonth(n, t) - 1, s = [], l = 0, u = 0, d = this._getAnotherCalendar(), c = !0, h = !1, f = void 0; try { for (var m, p = [["null", "null", "null", "null", "null", "null", "null"], ["null", "null", "null", "null", "null", "null", "null"], ["null", "null", "null", "null", "null", "null", "null"], ["null", "null", "null", "null", "null", "null", "null"], ["null", "null", "null", "null", "null", "null", "null"], ["null", "null", "null", "null", "null", "null", "null"]].entries()[Symbol.iterator](); !(c = (m = p.next()).done); c = !0) { var v = i(m.value, 2), y = v[0], g = v[1]; s[y] = []; var w = !0, b = !1, k = void 0; try { for (var x, D = g.entries()[Symbol.iterator](); !(w = (x = D.next()).done); w = !0) { var M = i(x.value, 1)[0], T = void 0, S = void 0; 0 === y && M < o ? (T = this.model.state.view.dateObject.startOf("month").hour(12).subtract("days", o - M), S = !0) : 0 === y && M >= o || y <= 5 && l < r ? (l += 1, T = new persianDate([this.model.state.view.year, this.model.state.view.month, l]), S = !1) : (u += 1, T = this.model.state.view.dateObject.endOf("month").hour(12).add("days", u), S = !0), s[y].push({ title: T.format("D"), alterCalTitle: new persianDate(T.valueOf()).toCalendar(d[0]).toLocale(d[1]).format("D"), dataDate: [T.year(), T.month(), T.date()].join(","), dataUnix: T.hour(12).valueOf(), otherMonth: S, enabled: this.checkDayAccess(T.valueOf()) }) } } catch (e) { b = !0, k = e } finally { try { !w && D.return && D.return() } finally { if (b) throw k } } } } catch (e) { h = !0, f = e } finally { try { !c && p.return && p.return() } finally { if (h) throw f } } return { enabled: e, viewMode: "day" == this.model.state.viewMode, list: s } } }, { key: "markSelectedDay", value: function () { var e = this.model.state.selected; this.Zeptocontainer.find(".table-days td").each(function () { Zepto(this).data("date") == [e.year, e.month, e.date].join(",") ? Zepto(this).addClass("selected") : Zepto(this).removeClass("selected") }) } }, { key: "markToday", value: function () { var e = new persianDate; this.Zeptocontainer.find(".table-days td").each(function () { Zepto(this).data("date") == [e.year(), e.month(), e.date()].join(",") ? Zepto(this).addClass("today") : Zepto(this).removeClass("today") }) } }, { key: "_getTimeViewModel", value: function () { var e = this.model.options.timePicker.enabled; if (!e) return { enabled: !1 }; return { enabled: e, hour: { title: this.model.options.timePicker.meridian.enabled ? this.model.state.view.dateObject.format("hh") : this.model.state.view.dateObject.format("HH"), enabled: this.model.options.timePicker.hour.enabled }, minute: { title: this.model.state.view.dateObject.format("mm"), enabled: this.model.options.timePicker.minute.enabled }, second: { title: this.model.state.view.dateObject.format("ss"), enabled: this.model.options.timePicker.second.enabled }, meridian: { title: this.model.state.view.dateObject.format("a"), enabled: this.model.options.timePicker.meridian.enabled } } } }, { key: "_getWeekViewModel", value: function () { return { enabled: !0, list: this.model.PersianDate.date().rangeName().weekdaysMin } } }, { key: "getCssClass", value: function () { return [this.model.state.ui.isInline ? "datepicker-plot-area-inline-view" : "", this.model.options.timePicker.meridian.enabled ? "" : "datepicker-state-no-meridian", this.model.options.onlyTimePicker ? "datepicker-state-only-time" : "", this.model.options.timePicker.second.enabled ? "" : "datepicker-state-no-second", "gregorian" == this.model.options.calendar_ ? "datepicker-gregorian" : "datepicker-persian"].join(" ") } }, { key: "getViewModel", value: function (e) { var t = this._getAnotherCalendar(); return { plotId: "", navigator: { enabled: this.model.options.navigator.enabled, switch: { enabled: !0, text: this._getNavSwitchText(e) }, text: this.model.options.navigator.text }, selected: this.model.state.selected, time: this._getTimeViewModel(e), days: this._getDayViewModel(e), weekdays: this._getWeekViewModel(e), month: this._getMonthViewModel(e), year: this._getYearViewModel(e), toolbox: this.model.options.toolbox, cssClass: this.getCssClass(), onlyTimePicker: this.model.options.onlyTimePicker, altCalendarShowHint: this.model.options.calendar[t[0]].showHint, calendarSwitchText: this.model.state.view.dateObject.toCalendar(t[0]).toLocale(t[1]).format(this.model.options.toolbox.calendarSwitch.format), todayButtonText: this._getButtonText().todayButtontext, submitButtonText: this._getButtonText().submitButtonText } } }, { key: "_getButtonText", value: function () { var e = {}; return "fa" == this.model.options.locale_ ? (e.todayButtontext = this.model.options.toolbox.todayButton.text.fa, e.submitButtonText = this.model.options.toolbox.submitButton.text.fa) : "en" == this.model.options.locale_ && (e.todayButtontext = this.model.options.toolbox.todayButton.text.en, e.submitButtonText = this.model.options.toolbox.submitButton.text.en), e } }, { key: "_getAnotherCalendar", value: function () { var e = void 0, t = void 0; return "persian" == this.model.options.calendar_ ? (e = "gregorian", t = this.model.options.calendar.gregorian.locale) : (e = "persian", t = this.model.options.calendar.persian.locale), [e, t] } }, { key: "renderTimePartial", value: function () { var e = this._getTimeViewModel(this.model.state.view); this.Zeptocontainer.find('[data-time-key="hour"] input').val(e.hour.title), this.Zeptocontainer.find('[data-time-key="minute"] input').val(e.minute.title), this.Zeptocontainer.find('[data-time-key="second"] input').val(e.second.title), this.Zeptocontainer.find('[data-time-key="meridian"] input').val(e.meridian.title) } }, { key: "render", value: function (e) { e || (e = this.model.state.view), o.debug(this, "render"), s.parse(r), this.rendered = Zepto(s.render(this.model.options.template, this.getViewModel(e))), this.Zeptocontainer.empty().append(this.rendered), this.markSelectedDay(), this.markToday(), this.afterRender() } }, { key: "reRender", value: function () { var e = this.model.state.view; this.render(e) } }, { key: "afterRender", value: function () { this.model.navigator && this.model.navigator.liveAttach() } }]), e }(); e.exports = l }, function (e, t, n) { !function (t, n) { "use strict"; var i, a, r = function (e) { return new r.Instance(e) }; r.SUPPORT = "wheel", r.ADD_EVENT = "addEventListener", r.REMOVE_EVENT = "removeEventListener", r.PREFIX = "", r.READY = !1, r.Instance = function (e) { return r.READY || (r.normalise.browser(), r.READY = !0), this.element = e, this.handlers = [], this }, r.Instance.prototype = { wheel: function (e, t) { return r.event.add(this, r.SUPPORT, e, t), "DOMMouseScroll" === r.SUPPORT && r.event.add(this, "MozMousePixelScroll", e, t), this }, unwheel: function (e, t) { return void 0 === e && (e = this.handlers.slice(-1)[0]) && (e = e.original), r.event.remove(this, r.SUPPORT, e, t), "DOMMouseScroll" === r.SUPPORT && r.event.remove(this, "MozMousePixelScroll", e, t), this } }, r.event = { add: function (e, n, i, a) { var o = i; i = function (e) { e || (e = t.event); var n = r.normalise.event(e), i = r.normalise.delta(e); return o(n, i[0], i[1], i[2]) }, e.element[r.ADD_EVENT](r.PREFIX + n, i, a || !1), e.handlers.push({ original: o, normalised: i }) }, remove: function (e, t, n, i) { for (var a, o = n, s = {}, l = 0, u = e.handlers.length; l < u; ++l)s[e.handlers[l].original] = e.handlers[l]; for (var d in n = (a = s[o]).normalised, e.element[r.REMOVE_EVENT](r.PREFIX + t, n, i || !1), e.handlers) if (e.handlers[d] == a) { e.handlers.splice(d, 1); break } } }, r.normalise = { browser: function () { "onwheel" in n || n.documentMode >= 9 || (r.SUPPORT = void 0 !== n.onmousewheel ? "mousewheel" : "DOMMouseScroll"), t.addEventListener || (r.ADD_EVENT = "attachEvent", r.REMOVE_EVENT = "detachEvent", r.PREFIX = "on") }, event: function (e) { var t = { originalEvent: e, target: e.target || e.srcElement, type: "wheel", deltaMode: "MozMousePixelScroll" === e.type ? 0 : 1, deltaX: 0, deltaZ: 0, preventDefault: function () { e.preventDefault ? e.preventDefault() : e.returnValue = !1 }, stopPropagation: function () { e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !1 } }; return e.wheelDelta && (t.deltaY = -.025 * e.wheelDelta), e.wheelDeltaX && (t.deltaX = -.025 * e.wheelDeltaX), e.detail && (t.deltaY = e.detail), t }, delta: function (e) { var t, n, r, o = 0, s = 0, l = 0; return e.deltaY && (o = l = -1 * e.deltaY), e.deltaX && (o = -1 * (s = e.deltaX)), e.wheelDelta && (o = e.wheelDelta), e.wheelDeltaY && (l = e.wheelDeltaY), e.wheelDeltaX && (s = -1 * e.wheelDeltaX), e.detail && (o = -1 * e.detail), 0 === o ? [0, 0, 0] : (t = Math.abs(o), (!i || t < i) && (i = t), n = Math.max(Math.abs(l), Math.abs(s)), (!a || n < a) && (a = n), r = o > 0 ? "floor" : "ceil", [o = Math[r](o / i), s = Math[r](s / a), l = Math[r](l / a)]) } }, "function" == typeof t.define && t.define.amd ? t.define("hamster", [], function () { return r }) : e.exports = r }(window, window.document) }, function (e, t, n) { var i, a, r, o; o = function (e) { var t = Object.prototype.toString, n = Array.isArray || function (e) { return "[object Array]" === t.call(e) }; function i(e) { return "function" == typeof e } function a(e) { return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&") } function r(e, t) { return null != e && "object" == typeof e && t in e } var o = RegExp.prototype.test, s = /\S/; function l(e) { return !function (e, t) { return o.call(e, t) }(s, e) } var u = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/", "`": "`", "=": "=" }, d = /\s*/, c = /\s+/, h = /\s*=/, f = /\s*\}/, m = /#|\^|\/|>|\{|&|=|!/; function p(e) { this.string = e, this.tail = e, this.pos = 0 } function v(e, t) { this.view = e, this.cache = { ".": this.view }, this.parent = t } function y() { this.cache = {} } p.prototype.eos = function () { return "" === this.tail }, p.prototype.scan = function (e) { var t = this.tail.match(e); if (!t || 0 !== t.index) return ""; var n = t[0]; return this.tail = this.tail.substring(n.length), this.pos += n.length, n }, p.prototype.scanUntil = function (e) { var t, n = this.tail.search(e); switch (n) { case -1: t = this.tail, this.tail = ""; break; case 0: t = ""; break; default: t = this.tail.substring(0, n), this.tail = this.tail.substring(n) }return this.pos += t.length, t }, v.prototype.push = function (e) { return new v(e, this) }, v.prototype.lookup = function (e) { var t, n, a, o = this.cache; if (o.hasOwnProperty(e)) t = o[e]; else { for (var s, l, u, d = this, c = !1; d;) { if (e.indexOf(".") > 0) for (s = d.view, l = e.split("."), u = 0; null != s && u < l.length;)u === l.length - 1 && (c = r(s, l[u]) || (n = s, a = l[u], null != n && "object" != typeof n && n.hasOwnProperty && n.hasOwnProperty(a))), s = s[l[u++]]; else s = d.view[e], c = r(d.view, e); if (c) { t = s; break } d = d.parent } o[e] = t } return i(t) && (t = t.call(this.view)), t }, y.prototype.clearCache = function () { this.cache = {} }, y.prototype.parse = function (t, i) { var r = this.cache, o = t + ":" + (i || e.tags).join(":"), s = r[o]; return null == s && (s = r[o] = function (t, i) { if (!t) return []; var r, o, s, u = [], v = [], y = [], g = !1, w = !1; function b() { if (g && !w) for (; y.length;)delete v[y.pop()]; else y = []; g = !1, w = !1 } function k(e) { if ("string" == typeof e && (e = e.split(c, 2)), !n(e) || 2 !== e.length) throw new Error("Invalid tags: " + e); r = new RegExp(a(e[0]) + "\\s*"), o = new RegExp("\\s*" + a(e[1])), s = new RegExp("\\s*" + a("}" + e[1])) } k(i || e.tags); for (var x, D, M, T, S, _, P = new p(t); !P.eos();) { if (x = P.pos, M = P.scanUntil(r)) for (var O = 0, E = M.length; O < E; ++O)l(T = M.charAt(O)) ? y.push(v.length) : w = !0, v.push(["text", T, x, x + 1]), x += 1, "\n" === T && b(); if (!P.scan(r)) break; if (g = !0, D = P.scan(m) || "name", P.scan(d), "=" === D ? (M = P.scanUntil(h), P.scan(h), P.scanUntil(o)) : "{" === D ? (M = P.scanUntil(s), P.scan(f), P.scanUntil(o), D = "&") : M = P.scanUntil(o), !P.scan(o)) throw new Error("Unclosed tag at " + P.pos); if (S = [D, M, x, P.pos], v.push(S), "#" === D || "^" === D) u.push(S); else if ("/" === D) { if (!(_ = u.pop())) throw new Error('Unopened section "' + M + '" at ' + x); if (_[1] !== M) throw new Error('Unclosed section "' + _[1] + '" at ' + x) } else "name" === D || "{" === D || "&" === D ? w = !0 : "=" === D && k(M) } if (_ = u.pop()) throw new Error('Unclosed section "' + _[1] + '" at ' + P.pos); return function (e) { for (var t, n = [], i = n, a = [], r = 0, o = e.length; r < o; ++r)switch ((t = e[r])[0]) { case "#": case "^": i.push(t), a.push(t), i = t[4] = []; break; case "/": a.pop()[5] = t[2], i = a.length > 0 ? a[a.length - 1][4] : n; break; default: i.push(t) }return n }(function (e) { for (var t, n, i = [], a = 0, r = e.length; a < r; ++a)(t = e[a]) && ("text" === t[0] && n && "text" === n[0] ? (n[1] += t[1], n[3] = t[3]) : (i.push(t), n = t)); return i }(v)) }(t, i)), s }, y.prototype.render = function (e, t, n, i) { var a = this.parse(e, i), r = t instanceof v ? t : new v(t); return this.renderTokens(a, r, n, e, i) }, y.prototype.renderTokens = function (e, t, n, i, a) { for (var r, o, s, l = "", u = 0, d = e.length; u < d; ++u)s = void 0, "#" === (o = (r = e[u])[0]) ? s = this.renderSection(r, t, n, i) : "^" === o ? s = this.renderInverted(r, t, n, i) : ">" === o ? s = this.renderPartial(r, t, n, a) : "&" === o ? s = this.unescapedValue(r, t) : "name" === o ? s = this.escapedValue(r, t) : "text" === o && (s = this.rawValue(r)), void 0 !== s && (l += s); return l }, y.prototype.renderSection = function (e, t, a, r) { var o = this, s = "", l = t.lookup(e[1]); if (l) { if (n(l)) for (var u = 0, d = l.length; u < d; ++u)s += this.renderTokens(e[4], t.push(l[u]), a, r); else if ("object" == typeof l || "string" == typeof l || "number" == typeof l) s += this.renderTokens(e[4], t.push(l), a, r); else if (i(l)) { if ("string" != typeof r) throw new Error("Cannot use higher-order sections without the original template"); null != (l = l.call(t.view, r.slice(e[3], e[5]), function (e) { return o.render(e, t, a) })) && (s += l) } else s += this.renderTokens(e[4], t, a, r); return s } }, y.prototype.renderInverted = function (e, t, i, a) { var r = t.lookup(e[1]); if (!r || n(r) && 0 === r.length) return this.renderTokens(e[4], t, i, a) }, y.prototype.renderPartial = function (e, t, n, a) { if (n) { var r = i(n) ? n(e[1]) : n[e[1]]; return null != r ? this.renderTokens(this.parse(r, a), t, n, r) : void 0 } }, y.prototype.unescapedValue = function (e, t) { var n = t.lookup(e[1]); if (null != n) return n }, y.prototype.escapedValue = function (t, n) { var i = n.lookup(t[1]); if (null != i) return e.escape(i) }, y.prototype.rawValue = function (e) { return e[1] }, e.name = "mustache.js", e.version = "3.0.1", e.tags = ["{{", "}}"]; var g = new y; return e.clearCache = function () { return g.clearCache() }, e.parse = function (e, t) { return g.parse(e, t) }, e.render = function (e, t, i, a) { if ("string" != typeof e) throw new TypeError('Invalid template! Template should be a "string" but "' + (n(r = e) ? "array" : typeof r) + '" was given as the first argument for mustache#render(template, view, partials)'); var r; return g.render(e, t, i, a) }, e.to_html = function (t, n, a, r) { var o = e.render(t, n, a); if (!i(r)) return o; r(o) }, e.escape = function (e) { return String(e).replace(/[&<>"'`=\/]/g, function (e) { return u[e] }) }, e.Scanner = p, e.Context = v, e.Writer = y, e }, "object" == typeof t && t && "string" != typeof t.nodeName ? o(t) : (a = [t], void 0 === (r = "function" == typeof (i = o) ? i.apply(t, a) : i) || (e.exports = r)) }]) }); +} catch (e) { console.log("ssss") } + diff --git a/HybridApp/wwwroot/js/infinite-scrolling.js b/HybridApp/wwwroot/js/infinite-scrolling.js new file mode 100644 index 0000000..3468244 --- /dev/null +++ b/HybridApp/wwwroot/js/infinite-scrolling.js @@ -0,0 +1,45 @@ +export function initialize(lastItemIndicator, componentInstance) { + const options = { + root: findClosestScrollContainer(lastItemIndicator), + rootMargin: '0px', + threshold: 0, + }; + + const observer = new IntersectionObserver(async (entries) => { + // When the lastItemIndicator element is visible => invoke the C# method `LoadMoreItems` + for (const entry of entries) { + if (entry.isIntersecting) { + await componentInstance.invokeMethodAsync("LoadMoreItems"); + } + } + }, options); + + observer.observe(lastItemIndicator); + + // Allow to cleanup resources when the Razor component is removed from the page + return { + dispose: () => dispose(observer), + onNewItems: () => { + observer.unobserve(lastIndicator); + observer.observe(lastIndicator); + }, + }; +} + +// Cleanup resources +function dispose(observer) { + observer.disconnect(); +} + +// Find the parent element with a vertical scrollbar +// This container should be use as the root for the IntersectionObserver +function findClosestScrollContainer(element) { + while (element) { + const style = getComputedStyle(element); + if (style.overflowY !== 'visible') { + return element; + } + element = element.parentElement; + } + return null; +} \ No newline at end of file diff --git a/HybridApp/wwwroot/js/jquery-2.2.4.intellisense.js b/HybridApp/wwwroot/js/jquery-2.2.4.intellisense.js new file mode 100644 index 0000000..e290ce9 --- /dev/null +++ b/HybridApp/wwwroot/js/jquery-2.2.4.intellisense.js @@ -0,0 +1,3089 @@ +intellisense.annotate(jQuery, { + 'ajax': function() { + /// + /// Perform an asynchronous HTTP (Ajax) request. + /// A string containing the URL to which the request is sent. + /// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings. + /// + /// + /// + /// Perform an asynchronous HTTP (Ajax) request. + /// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). + /// + /// + }, + 'ajaxPrefilter': function() { + /// + /// Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). + /// An optional string containing one or more space-separated dataTypes + /// A handler to set default values for future Ajax requests. + /// + }, + 'ajaxSetup': function() { + /// + /// Set default values for future Ajax requests. Its use is not recommended. + /// A set of key/value pairs that configure the default Ajax request. All options are optional. + /// + }, + 'ajaxTransport': function() { + /// + /// Creates an object that handles the actual transmission of Ajax data. + /// A string identifying the data type to use + /// A handler to return the new transport object to use with the data type provided in the first argument. + /// + }, + 'boxModel': function() { + /// Deprecated in jQuery 1.3 (see jQuery.support). States if the current page, in the user's browser, is being rendered using the W3C CSS Box Model. + /// + }, + 'browser': function() { + /// Contains flags for the useragent, read from navigator.userAgent. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. Please try to use feature detection instead. + /// + }, + 'browser.version': function() { + /// The version number of the rendering engine for the user's browser. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. + /// + }, + 'Callbacks': function() { + /// + /// A multi-purpose callbacks list object that provides a powerful way to manage callback lists. + /// An optional list of space-separated flags that change how the callback list behaves. + /// + /// + }, + 'contains': function() { + /// + /// Check to see if a DOM element is a descendant of another DOM element. + /// The DOM element that may contain the other element. + /// The DOM element that may be contained by (a descendant of) the other element. + /// + /// + }, + 'cssHooks': function() { + /// Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties. + /// + }, + 'data': function() { + /// + /// Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. + /// The DOM element to query for the data. + /// Name of the data stored. + /// + /// + /// + /// Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. + /// The DOM element to query for the data. + /// + /// + }, + 'Deferred': function() { + /// + /// A constructor function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function. + /// A function that is called just before the constructor returns. + /// + /// + }, + 'dequeue': function() { + /// + /// Execute the next function on the queue for the matched element. + /// A DOM element from which to remove and execute a queued function. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + }, + 'each': function() { + /// + /// A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties. + /// The object or array to iterate over. + /// The function that will be executed on every object. + /// + /// + }, + 'error': function() { + /// + /// Takes a string and throws an exception containing it. + /// The message to send out. + /// + }, + 'extend': function() { + /// + /// Merge the contents of two or more objects together into the first object. + /// An object that will receive the new properties if additional objects are passed in or that will extend the jQuery namespace if it is the sole argument. + /// An object containing additional properties to merge in. + /// Additional objects containing properties to merge in. + /// + /// + /// + /// Merge the contents of two or more objects together into the first object. + /// If true, the merge becomes recursive (aka. deep copy). + /// The object to extend. It will receive the new properties. + /// An object containing additional properties to merge in. + /// Additional objects containing properties to merge in. + /// + /// + }, + 'fn.extend': function() { + /// + /// Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods. + /// An object to merge onto the jQuery prototype. + /// + /// + }, + 'get': function() { + /// + /// Load data from the server using a HTTP GET request. + /// A string containing the URL to which the request is sent. + /// A plain object or string that is sent to the server with the request. + /// A callback function that is executed if the request succeeds. + /// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html). + /// + /// + }, + 'getJSON': function() { + /// + /// Load JSON-encoded data from the server using a GET HTTP request. + /// A string containing the URL to which the request is sent. + /// A plain object or string that is sent to the server with the request. + /// A callback function that is executed if the request succeeds. + /// + /// + }, + 'getScript': function() { + /// + /// Load a JavaScript file from the server using a GET HTTP request, then execute it. + /// A string containing the URL to which the request is sent. + /// A callback function that is executed if the request succeeds. + /// + /// + }, + 'globalEval': function() { + /// + /// Execute some JavaScript code globally. + /// The JavaScript code to execute. + /// + }, + 'grep': function() { + /// + /// Finds the elements of an array which satisfy a filter function. The original array is not affected. + /// The array to search through. + /// The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object. + /// If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false. + /// + /// + }, + 'hasData': function() { + /// + /// Determine whether an element has any jQuery data associated with it. + /// A DOM element to be checked for data. + /// + /// + }, + 'holdReady': function() { + /// + /// Holds or releases the execution of jQuery's ready event. + /// Indicates whether the ready hold is being requested or released + /// + }, + 'inArray': function() { + /// + /// Search for a specified value within an array and return its index (or -1 if not found). + /// The value to search for. + /// An array through which to search. + /// The index of the array at which to begin the search. The default is 0, which will search the whole array. + /// + /// + }, + 'isArray': function() { + /// + /// Determine whether the argument is an array. + /// Object to test whether or not it is an array. + /// + /// + }, + 'isEmptyObject': function() { + /// + /// Check to see if an object is empty (contains no enumerable properties). + /// The object that will be checked to see if it's empty. + /// + /// + }, + 'isFunction': function() { + /// + /// Determine if the argument passed is a Javascript function object. + /// Object to test whether or not it is a function. + /// + /// + }, + 'isNumeric': function() { + /// + /// Determines whether its argument is a number. + /// The value to be tested. + /// + /// + }, + 'isPlainObject': function() { + /// + /// Check to see if an object is a plain object (created using "{}" or "new Object"). + /// The object that will be checked to see if it's a plain object. + /// + /// + }, + 'isWindow': function() { + /// + /// Determine whether the argument is a window. + /// Object to test whether or not it is a window. + /// + /// + }, + 'isXMLDoc': function() { + /// + /// Check to see if a DOM node is within an XML document (or is an XML document). + /// The DOM node that will be checked to see if it's in an XML document. + /// + /// + }, + 'makeArray': function() { + /// + /// Convert an array-like object into a true JavaScript array. + /// Any object to turn into a native Array. + /// + /// + }, + 'map': function() { + /// + /// Translate all items in an array or object to new array of items. + /// The Array to translate. + /// The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object. + /// + /// + /// + /// Translate all items in an array or object to new array of items. + /// The Array or Object to translate. + /// The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object. + /// + /// + }, + 'merge': function() { + /// + /// Merge the contents of two arrays together into the first array. + /// The first array to merge, the elements of second added. + /// The second array to merge into the first, unaltered. + /// + /// + }, + 'noConflict': function() { + /// + /// Relinquish jQuery's control of the $ variable. + /// A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself). + /// + /// + }, + 'noop': function() { + /// An empty function. + }, + 'now': function() { + /// Return a number representing the current time. + /// + }, + 'param': function() { + /// + /// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. + /// An array or object to serialize. + /// + /// + /// + /// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. + /// An array or object to serialize. + /// A Boolean indicating whether to perform a traditional "shallow" serialization. + /// + /// + }, + 'parseHTML': function() { + /// + /// Parses a string into an array of DOM nodes. + /// HTML string to be parsed + /// Document element to serve as the context in which the HTML fragment will be created + /// A Boolean indicating whether to include scripts passed in the HTML string + /// + /// + }, + 'parseJSON': function() { + /// + /// Takes a well-formed JSON string and returns the resulting JavaScript object. + /// The JSON string to parse. + /// + /// + }, + 'parseXML': function() { + /// + /// Parses a string into an XML document. + /// a well-formed XML string to be parsed + /// + /// + }, + 'post': function() { + /// + /// Load data from the server using a HTTP POST request. + /// A string containing the URL to which the request is sent. + /// A plain object or string that is sent to the server with the request. + /// A callback function that is executed if the request succeeds. Required if dataType is provided, but can be null in that case. + /// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html). + /// + /// + }, + 'proxy': function() { + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The function whose context will be changed. + /// The object to which the context (this) of the function should be set. + /// + /// + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The object to which the context of the function should be set. + /// The name of the function whose context will be changed (should be a property of the context object). + /// + /// + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The function whose context will be changed. + /// The object to which the context (this) of the function should be set. + /// Any number of arguments to be passed to the function referenced in the function argument. + /// + /// + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The object to which the context of the function should be set. + /// The name of the function whose context will be changed (should be a property of the context object). + /// Any number of arguments to be passed to the function named in the name argument. + /// + /// + }, + 'queue': function() { + /// + /// Manipulate the queue of functions to be executed on the matched element. + /// A DOM element where the array of queued functions is attached. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// An array of functions to replace the current queue contents. + /// + /// + /// + /// Manipulate the queue of functions to be executed on the matched element. + /// A DOM element on which to add a queued function. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// The new function to add to the queue. + /// + /// + }, + 'removeData': function() { + /// + /// Remove a previously-stored piece of data. + /// A DOM element from which to remove data. + /// A string naming the piece of data to remove. + /// + /// + }, + 'sub': function() { + /// Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object. + /// + }, + 'support': function() { + /// A collection of properties that represent the presence of different browser features or bugs. Primarily intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance. + /// + }, + 'trim': function() { + /// + /// Remove the whitespace from the beginning and end of a string. + /// The string to trim. + /// + /// + }, + 'type': function() { + /// + /// Determine the internal JavaScript [[Class]] of an object. + /// Object to get the internal JavaScript [[Class]] of. + /// + /// + }, + 'unique': function() { + /// + /// Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers. + /// The Array of DOM elements. + /// + /// + }, + 'when': function() { + /// + /// Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events. + /// One or more Deferred objects, or plain JavaScript objects. + /// + /// + }, +}); + +var _1228819969 = jQuery.Callbacks; +jQuery.Callbacks = function(flags) { +var _object = _1228819969(flags); +intellisense.annotate(_object, { + 'add': function() { + /// + /// Add a callback or a collection of callbacks to a callback list. + /// A function, or array of functions, that are to be added to the callback list. + /// + /// + }, + 'disable': function() { + /// Disable a callback list from doing anything more. + /// + }, + 'disabled': function() { + /// Determine if the callbacks list has been disabled. + /// + }, + 'empty': function() { + /// Remove all of the callbacks from a list. + /// + }, + 'fire': function() { + /// + /// Call all of the callbacks with the given arguments + /// The argument or list of arguments to pass back to the callback list. + /// + /// + }, + 'fired': function() { + /// Determine if the callbacks have already been called at least once. + /// + }, + 'fireWith': function() { + /// + /// Call all callbacks in a list with the given context and arguments. + /// A reference to the context in which the callbacks in the list should be fired. + /// An argument, or array of arguments, to pass to the callbacks in the list. + /// + /// + }, + 'has': function() { + /// + /// Determine whether a supplied callback is in a list + /// The callback to search for. + /// + /// + }, + 'lock': function() { + /// Lock a callback list in its current state. + /// + }, + 'locked': function() { + /// Determine if the callbacks list has been locked. + /// + }, + 'remove': function() { + /// + /// Remove a callback or a collection of callbacks from a callback list. + /// A function, or array of functions, that are to be removed from the callback list. + /// + /// + }, +}); + +return _object; +}; +intellisense.redirectDefinition(jQuery.Callbacks, _1228819969); + +var _731531622 = jQuery.Deferred; +jQuery.Deferred = function(func) { +var _object = _731531622(func); +intellisense.annotate(_object, { + 'always': function() { + /// + /// Add handlers to be called when the Deferred object is either resolved or rejected. + /// A function, or array of functions, that is called when the Deferred is resolved or rejected. + /// Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected. + /// + /// + }, + 'done': function() { + /// + /// Add handlers to be called when the Deferred object is resolved. + /// A function, or array of functions, that are called when the Deferred is resolved. + /// Optional additional functions, or arrays of functions, that are called when the Deferred is resolved. + /// + /// + }, + 'fail': function() { + /// + /// Add handlers to be called when the Deferred object is rejected. + /// A function, or array of functions, that are called when the Deferred is rejected. + /// Optional additional functions, or arrays of functions, that are called when the Deferred is rejected. + /// + /// + }, + 'isRejected': function() { + /// Determine whether a Deferred object has been rejected. + /// + }, + 'isResolved': function() { + /// Determine whether a Deferred object has been resolved. + /// + }, + 'notify': function() { + /// + /// Call the progressCallbacks on a Deferred object with the given args. + /// Optional arguments that are passed to the progressCallbacks. + /// + /// + }, + 'notifyWith': function() { + /// + /// Call the progressCallbacks on a Deferred object with the given context and args. + /// Context passed to the progressCallbacks as the this object. + /// Optional arguments that are passed to the progressCallbacks. + /// + /// + }, + 'pipe': function() { + /// + /// Utility method to filter and/or chain Deferreds. + /// An optional function that is called when the Deferred is resolved. + /// An optional function that is called when the Deferred is rejected. + /// + /// + /// + /// Utility method to filter and/or chain Deferreds. + /// An optional function that is called when the Deferred is resolved. + /// An optional function that is called when the Deferred is rejected. + /// An optional function that is called when progress notifications are sent to the Deferred. + /// + /// + }, + 'progress': function() { + /// + /// Add handlers to be called when the Deferred object generates progress notifications. + /// A function, or array of functions, to be called when the Deferred generates progress notifications. + /// + /// + }, + 'promise': function() { + /// + /// Return a Deferred's Promise object. + /// Object onto which the promise methods have to be attached + /// + /// + }, + 'reject': function() { + /// + /// Reject a Deferred object and call any failCallbacks with the given args. + /// Optional arguments that are passed to the failCallbacks. + /// + /// + }, + 'rejectWith': function() { + /// + /// Reject a Deferred object and call any failCallbacks with the given context and args. + /// Context passed to the failCallbacks as the this object. + /// An optional array of arguments that are passed to the failCallbacks. + /// + /// + }, + 'resolve': function() { + /// + /// Resolve a Deferred object and call any doneCallbacks with the given args. + /// Optional arguments that are passed to the doneCallbacks. + /// + /// + }, + 'resolveWith': function() { + /// + /// Resolve a Deferred object and call any doneCallbacks with the given context and args. + /// Context passed to the doneCallbacks as the this object. + /// An optional array of arguments that are passed to the doneCallbacks. + /// + /// + }, + 'state': function() { + /// Determine the current state of a Deferred object. + /// + }, + 'then': function() { + /// + /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + /// A function that is called when the Deferred is resolved. + /// An optional function that is called when the Deferred is rejected. + /// An optional function that is called when progress notifications are sent to the Deferred. + /// + /// + /// + /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + /// A function, or array of functions, called when the Deferred is resolved. + /// A function, or array of functions, called when the Deferred is rejected. + /// + /// + /// + /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + /// A function, or array of functions, called when the Deferred is resolved. + /// A function, or array of functions, called when the Deferred is rejected. + /// A function, or array of functions, called when the Deferred notifies progress. + /// + /// + }, +}); + +return _object; +}; +intellisense.redirectDefinition(jQuery.Callbacks, _731531622); + +intellisense.annotate(jQuery.Event.prototype, { + 'currentTarget': function() { + /// The current DOM element within the event bubbling phase. + /// + }, + 'data': function() { + /// An optional object of data passed to an event method when the current executing handler is bound. + /// + }, + 'delegateTarget': function() { + /// The element where the currently-called jQuery event handler was attached. + /// + }, + 'isDefaultPrevented': function() { + /// Returns whether event.preventDefault() was ever called on this event object. + /// + }, + 'isImmediatePropagationStopped': function() { + /// Returns whether event.stopImmediatePropagation() was ever called on this event object. + /// + }, + 'isPropagationStopped': function() { + /// Returns whether event.stopPropagation() was ever called on this event object. + /// + }, + 'metaKey': function() { + /// Indicates whether the META key was pressed when the event fired. + /// + }, + 'namespace': function() { + /// The namespace specified when the event was triggered. + /// + }, + 'pageX': function() { + /// The mouse position relative to the left edge of the document. + /// + }, + 'pageY': function() { + /// The mouse position relative to the top edge of the document. + /// + }, + 'preventDefault': function() { + /// If this method is called, the default action of the event will not be triggered. + }, + 'relatedTarget': function() { + /// The other DOM element involved in the event, if any. + /// + }, + 'result': function() { + /// The last value returned by an event handler that was triggered by this event, unless the value was undefined. + /// + }, + 'stopImmediatePropagation': function() { + /// Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree. + }, + 'stopPropagation': function() { + /// Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. + }, + 'target': function() { + /// The DOM element that initiated the event. + /// + }, + 'timeStamp': function() { + /// The difference in milliseconds between the time the browser created the event and January 1, 1970. + /// + }, + 'type': function() { + /// Describes the nature of the event. + /// + }, + 'which': function() { + /// For key or mouse events, this property indicates the specific key or button that was pressed. + /// + }, +}); + +intellisense.annotate(jQuery.fn, { + 'add': function() { + /// + /// Add elements to the set of matched elements. + /// A string representing a selector expression to find additional elements to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// One or more elements to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// An HTML fragment to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// An existing jQuery object to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// A string representing a selector expression to find additional elements to add to the set of matched elements. + /// The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method. + /// + /// + }, + 'addBack': function() { + /// + /// Add the previous set of elements on the stack to the current set, optionally filtered by a selector. + /// A string containing a selector expression to match the current set of elements against. + /// + /// + }, + 'addClass': function() { + /// + /// Adds the specified class(es) to each of the set of matched elements. + /// One or more space-separated classes to be added to the class attribute of each matched element. + /// + /// + /// + /// Adds the specified class(es) to each of the set of matched elements. + /// A function returning one or more space-separated class names to be added to the existing class name(s). Receives the index position of the element in the set and the existing class name(s) as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'after': function() { + /// + /// Insert content, specified by the parameter, after each element in the set of matched elements. + /// HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, after each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert after each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. + /// + /// + }, + 'ajaxComplete': function() { + /// + /// Register a handler to be called when Ajax requests complete. This is an AjaxEvent. + /// The function to be invoked. + /// + /// + }, + 'ajaxError': function() { + /// + /// Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxSend': function() { + /// + /// Attach a function to be executed before an Ajax request is sent. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxStart': function() { + /// + /// Register a handler to be called when the first Ajax request begins. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxStop': function() { + /// + /// Register a handler to be called when all Ajax requests have completed. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxSuccess': function() { + /// + /// Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'all': function() { + /// Selects all elements. + }, + 'andSelf': function() { + /// Add the previous set of elements on the stack to the current set. + /// + }, + 'animate': function() { + /// + /// Perform a custom animation of a set of CSS properties. + /// An object of CSS properties and values that the animation will move toward. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + /// + /// Perform a custom animation of a set of CSS properties. + /// An object of CSS properties and values that the animation will move toward. + /// A map of additional options to pass to the method. + /// + /// + }, + 'animated': function() { + /// Select all elements that are in the progress of an animation at the time the selector is run. + }, + 'append': function() { + /// + /// Insert content, specified by the parameter, to the end of each element in the set of matched elements. + /// DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, to the end of each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert at the end of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'appendTo': function() { + /// + /// Insert every element in the set of matched elements to the end of the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter. + /// + /// + }, + 'attr': function() { + /// + /// Set one or more attributes for the set of matched elements. + /// The name of the attribute to set. + /// A value to set for the attribute. + /// + /// + /// + /// Set one or more attributes for the set of matched elements. + /// An object of attribute-value pairs to set. + /// + /// + /// + /// Set one or more attributes for the set of matched elements. + /// The name of the attribute to set. + /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old attribute value as arguments. + /// + /// + }, + 'attributeContains': function() { + /// + /// Selects elements that have the specified attribute with a value containing the a given substring. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeContainsPrefix': function() { + /// + /// Selects elements that have the specified attribute with a value either equal to a given string or starting with that string followed by a hyphen (-). + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeContainsWord': function() { + /// + /// Selects elements that have the specified attribute with a value containing a given word, delimited by spaces. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeEndsWith': function() { + /// + /// Selects elements that have the specified attribute with a value ending exactly with a given string. The comparison is case sensitive. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeEquals': function() { + /// + /// Selects elements that have the specified attribute with a value exactly equal to a certain value. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeHas': function() { + /// + /// Selects elements that have the specified attribute, with any value. + /// An attribute name. + /// + }, + 'attributeMultiple': function() { + /// + /// Matches elements that match all of the specified attribute filters. + /// An attribute filter. + /// Another attribute filter, reducing the selection even more + /// As many more attribute filters as necessary + /// + }, + 'attributeNotEqual': function() { + /// + /// Select elements that either don't have the specified attribute, or do have the specified attribute but not with a certain value. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeStartsWith': function() { + /// + /// Selects elements that have the specified attribute with a value beginning exactly with a given string. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'before': function() { + /// + /// Insert content, specified by the parameter, before each element in the set of matched elements. + /// HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, before each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert before each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. + /// + /// + }, + 'bind': function() { + /// + /// Attach a handler to an event for the elements. + /// A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Attach a handler to an event for the elements. + /// A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + /// An object containing data that will be passed to the event handler. + /// Setting the third argument to false will attach a function that prevents the default action from occurring and stops the event from bubbling. The default is true. + /// + /// + /// + /// Attach a handler to an event for the elements. + /// An object containing one or more DOM event types and functions to execute for them. + /// + /// + }, + 'blur': function() { + /// + /// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'button': function() { + /// Selects all button elements and elements of type button. + }, + 'change': function() { + /// + /// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'checkbox': function() { + /// Selects all elements of type checkbox. + }, + 'checked': function() { + /// Matches all elements that are checked or selected. + }, + 'child': function() { + /// + /// Selects all direct child elements specified by "child" of elements specified by "parent". + /// Any valid selector. + /// A selector to filter the child elements. + /// + }, + 'children': function() { + /// + /// Get the children of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'class': function() { + /// + /// Selects all elements with the given class. + /// A class to search for. An element can have multiple classes; only one of them must match. + /// + }, + 'clearQueue': function() { + /// + /// Remove from the queue all items that have not yet been run. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + }, + 'click': function() { + /// + /// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'clone': function() { + /// + /// Create a deep copy of the set of matched elements. + /// A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well. + /// + /// + /// + /// Create a deep copy of the set of matched elements. + /// A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back to false in 1.5.1 and up. + /// A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false). + /// + /// + }, + 'closest': function() { + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// A string containing a selector expression to match elements against. + /// A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead. + /// + /// + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// A jQuery object to match elements against. + /// + /// + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// An element to match elements against. + /// + /// + }, + 'contains': function() { + /// + /// Select all elements that contain the specified text. + /// A string of text to look for. It's case sensitive. + /// + }, + 'contents': function() { + /// Get the children of each element in the set of matched elements, including text and comment nodes. + /// + }, + 'context': function() { + /// The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document. + /// + }, + 'css': function() { + /// + /// Set one or more CSS properties for the set of matched elements. + /// A CSS property name. + /// A value to set for the property. + /// + /// + /// + /// Set one or more CSS properties for the set of matched elements. + /// A CSS property name. + /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments. + /// + /// + /// + /// Set one or more CSS properties for the set of matched elements. + /// An object of property-value pairs to set. + /// + /// + }, + 'data': function() { + /// + /// Store arbitrary data associated with the matched elements. + /// A string naming the piece of data to set. + /// The new data value; it can be any Javascript type including Array or Object. + /// + /// + /// + /// Store arbitrary data associated with the matched elements. + /// An object of key-value pairs of data to update. + /// + /// + }, + 'dblclick': function() { + /// + /// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'delay': function() { + /// + /// Set a timer to delay execution of subsequent items in the queue. + /// An integer indicating the number of milliseconds to delay execution of the next item in the queue. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + }, + 'delegate': function() { + /// + /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + /// A selector to filter the elements that trigger the event. + /// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + /// A selector to filter the elements that trigger the event. + /// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + /// A selector to filter the elements that trigger the event. + /// A plain object of one or more event types and functions to execute for them. + /// + /// + }, + 'dequeue': function() { + /// + /// Execute the next function on the queue for the matched elements. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + }, + 'descendant': function() { + /// + /// Selects all elements that are descendants of a given ancestor. + /// Any valid selector. + /// A selector to filter the descendant elements. + /// + }, + 'detach': function() { + /// + /// Remove the set of matched elements from the DOM. + /// A selector expression that filters the set of matched elements to be removed. + /// + /// + }, + 'die': function() { + /// + /// Remove event handlers previously attached using .live() from the elements. + /// A string containing a JavaScript event type, such as click or keydown. + /// The function that is no longer to be executed. + /// + /// + /// + /// Remove event handlers previously attached using .live() from the elements. + /// A plain object of one or more event types, such as click or keydown and their corresponding functions that are no longer to be executed. + /// + /// + }, + 'disabled': function() { + /// Selects all elements that are disabled. + }, + 'each': function() { + /// + /// Iterate over a jQuery object, executing a function for each matched element. + /// A function to execute for each matched element. + /// + /// + }, + 'element': function() { + /// + /// Selects all elements with the given tag name. + /// An element to search for. Refers to the tagName of DOM nodes. + /// + }, + 'empty': function() { + /// Select all elements that have no children (including text nodes). + }, + 'enabled': function() { + /// Selects all elements that are enabled. + }, + 'end': function() { + /// End the most recent filtering operation in the current chain and return the set of matched elements to its previous state. + /// + }, + 'eq': function() { + /// + /// Select the element at index n within the matched set. + /// Zero-based index of the element to match. + /// + /// + /// Select the element at index n within the matched set. + /// Zero-based index of the element to match, counting backwards from the last element. + /// + }, + 'error': function() { + /// + /// Bind an event handler to the "error" JavaScript event. + /// A function to execute when the event is triggered. + /// + /// + /// + /// Bind an event handler to the "error" JavaScript event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'even': function() { + /// Selects even elements, zero-indexed. See also odd. + }, + 'fadeIn': function() { + /// + /// Display the matched elements by fading them to opaque. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display the matched elements by fading them to opaque. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Display the matched elements by fading them to opaque. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'fadeOut': function() { + /// + /// Hide the matched elements by fading them to transparent. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Hide the matched elements by fading them to transparent. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Hide the matched elements by fading them to transparent. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'fadeTo': function() { + /// + /// Adjust the opacity of the matched elements. + /// A string or number determining how long the animation will run. + /// A number between 0 and 1 denoting the target opacity. + /// A function to call once the animation is complete. + /// + /// + /// + /// Adjust the opacity of the matched elements. + /// A string or number determining how long the animation will run. + /// A number between 0 and 1 denoting the target opacity. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'fadeToggle': function() { + /// + /// Display or hide the matched elements by animating their opacity. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display or hide the matched elements by animating their opacity. + /// A map of additional options to pass to the method. + /// + /// + }, + 'file': function() { + /// Selects all elements of type file. + }, + 'filter': function() { + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// A string containing a selector expression to match the current set of elements against. + /// + /// + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// A function used as a test for each element in the set. this is the current DOM element. + /// + /// + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// An element to match the current set of elements against. + /// + /// + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// An existing jQuery object to match the current set of elements against. + /// + /// + }, + 'find': function() { + /// + /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. + /// A jQuery object to match elements against. + /// + /// + /// + /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. + /// An element to match elements against. + /// + /// + }, + 'finish': function() { + /// + /// Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements. + /// The name of the queue in which to stop animations. + /// + /// + }, + 'first': function() { + /// Selects the first matched element. + }, + 'first-child': function() { + /// Selects all elements that are the first child of their parent. + }, + 'first-of-type': function() { + /// Selects all elements that are the first among siblings of the same element name. + }, + 'focus': function() { + /// + /// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'focusin': function() { + /// + /// Bind an event handler to the "focusin" event. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "focusin" event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'focusout': function() { + /// + /// Bind an event handler to the "focusout" JavaScript event. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "focusout" JavaScript event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'get': function() { + /// + /// Retrieve one of the DOM elements matched by the jQuery object. + /// A zero-based integer indicating which element to retrieve. + /// + /// + }, + 'gt': function() { + /// + /// Select all elements at an index greater than index within the matched set. + /// Zero-based index. + /// + /// + /// Select all elements at an index greater than index within the matched set. + /// Zero-based index, counting backwards from the last element. + /// + }, + 'has': function() { + /// + /// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. + /// A DOM element to match elements against. + /// + /// + }, + 'hasClass': function() { + /// + /// Determine whether any of the matched elements are assigned the given class. + /// The class name to search for. + /// + /// + }, + 'header': function() { + /// Selects all elements that are headers, like h1, h2, h3 and so on. + }, + 'height': function() { + /// + /// Set the CSS height of every matched element. + /// An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string). + /// + /// + /// + /// Set the CSS height of every matched element. + /// A function returning the height to set. Receives the index position of the element in the set and the old height as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'hidden': function() { + /// Selects all elements that are hidden. + }, + 'hide': function() { + /// + /// Hide the matched elements. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Hide the matched elements. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Hide the matched elements. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'hover': function() { + /// + /// Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements. + /// A function to execute when the mouse pointer enters the element. + /// A function to execute when the mouse pointer leaves the element. + /// + /// + }, + 'html': function() { + /// + /// Set the HTML contents of each element in the set of matched elements. + /// A string of HTML to set as the content of each matched element. + /// + /// + /// + /// Set the HTML contents of each element in the set of matched elements. + /// A function returning the HTML content to set. Receives the index position of the element in the set and the old HTML value as arguments. jQuery empties the element before calling the function; use the oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set. + /// + /// + }, + 'id': function() { + /// + /// Selects a single element with the given id attribute. + /// An ID to search for, specified via the id attribute of an element. + /// + }, + 'image': function() { + /// Selects all elements of type image. + }, + 'index': function() { + /// + /// Search for a given element from among the matched elements. + /// A selector representing a jQuery collection in which to look for an element. + /// + /// + /// + /// Search for a given element from among the matched elements. + /// The DOM element or first element within the jQuery object to look for. + /// + /// + }, + 'init': function() { + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A string containing a selector expression + /// A DOM Element, Document, or jQuery to use as context + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A DOM element to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// An array containing a set of DOM elements to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A plain object to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// An existing jQuery object to clone. + /// + /// + }, + 'innerHeight': function() { + /// Get the current computed height for the first element in the set of matched elements, including padding but not border. + /// + }, + 'innerWidth': function() { + /// Get the current computed width for the first element in the set of matched elements, including padding but not border. + /// + }, + 'input': function() { + /// Selects all input, textarea, select and button elements. + }, + 'insertAfter': function() { + /// + /// Insert every element in the set of matched elements after the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter. + /// + /// + }, + 'insertBefore': function() { + /// + /// Insert every element in the set of matched elements before the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter. + /// + /// + }, + 'is': function() { + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// A function used as a test for the set of elements. It accepts one argument, index, which is the element's index in the jQuery collection.Within the function, this refers to the current DOM element. + /// + /// + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// An existing jQuery object to match the current set of elements against. + /// + /// + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// An element to match the current set of elements against. + /// + /// + }, + 'jquery': function() { + /// A string containing the jQuery version number. + /// + }, + 'keydown': function() { + /// + /// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'keypress': function() { + /// + /// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'keyup': function() { + /// + /// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'lang': function() { + /// + /// Selects all elements of the specified language. + /// A language code. + /// + }, + 'last': function() { + /// Selects the last matched element. + }, + 'last-child': function() { + /// Selects all elements that are the last child of their parent. + }, + 'last-of-type': function() { + /// Selects all elements that are the last among siblings of the same element name. + }, + 'length': function() { + /// The number of elements in the jQuery object. + /// + }, + 'live': function() { + /// + /// Attach an event handler for all elements which match the current selector, now and in the future. + /// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach an event handler for all elements which match the current selector, now and in the future. + /// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach an event handler for all elements which match the current selector, now and in the future. + /// A plain object of one or more JavaScript event types and functions to execute for them. + /// + /// + }, + 'load': function() { + /// + /// Bind an event handler to the "load" JavaScript event. + /// A function to execute when the event is triggered. + /// + /// + /// + /// Bind an event handler to the "load" JavaScript event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'lt': function() { + /// + /// Select all elements at an index less than index within the matched set. + /// Zero-based index. + /// + /// + /// Select all elements at an index less than index within the matched set. + /// Zero-based index, counting backwards from the last element. + /// + }, + 'map': function() { + /// + /// Pass each element in the current matched set through a function, producing a new jQuery object containing the return values. + /// A function object that will be invoked for each element in the current set. + /// + /// + }, + 'mousedown': function() { + /// + /// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseenter': function() { + /// + /// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseleave': function() { + /// + /// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mousemove': function() { + /// + /// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseout': function() { + /// + /// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseover': function() { + /// + /// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseup': function() { + /// + /// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'multiple': function() { + /// + /// Selects the combined results of all the specified selectors. + /// Any valid selector. + /// Another valid selector. + /// As many more valid selectors as you like. + /// + }, + 'next': function() { + /// + /// Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'next adjacent': function() { + /// + /// Selects all next elements matching "next" that are immediately preceded by a sibling "prev". + /// Any valid selector. + /// A selector to match the element that is next to the first selector. + /// + }, + 'next siblings': function() { + /// + /// Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector. + /// Any valid selector. + /// A selector to filter elements that are the following siblings of the first selector. + /// + }, + 'nextAll': function() { + /// + /// Get all following siblings of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'nextUntil': function() { + /// + /// Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed. + /// A string containing a selector expression to indicate where to stop matching following sibling elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed. + /// A DOM node or jQuery object indicating where to stop matching following sibling elements. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'not': function() { + /// + /// Remove elements from the set of matched elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Remove elements from the set of matched elements. + /// One or more DOM elements to remove from the matched set. + /// + /// + /// + /// Remove elements from the set of matched elements. + /// A function used as a test for each element in the set. this is the current DOM element. + /// + /// + /// + /// Remove elements from the set of matched elements. + /// An existing jQuery object to match the current set of elements against. + /// + /// + }, + 'nth-child': function() { + /// + /// Selects all elements that are the nth-child of their parent. + /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-child(even), :nth-child(4n) ) + /// + }, + 'nth-last-child': function() { + /// + /// Selects all elements that are the nth-child of their parent, counting from the last element to the first. + /// The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) ) + /// + }, + 'nth-last-of-type': function() { + /// + /// Selects all elements that are the nth-child of their parent, counting from the last element to the first. + /// The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-of-type(even), :nth-last-of-type(4n) ) + /// + }, + 'nth-of-type': function() { + /// + /// Selects all elements that are the nth child of their parent in relation to siblings with the same element name. + /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-of-type(even), :nth-of-type(4n) ) + /// + }, + 'odd': function() { + /// Selects odd elements, zero-indexed. See also even. + }, + 'off': function() { + /// + /// Remove an event handler. + /// One or more space-separated event types and optional namespaces, or just namespaces, such as "click", "keydown.myPlugin", or ".myPlugin". + /// A selector which should match the one originally passed to .on() when attaching event handlers. + /// A handler function previously attached for the event(s), or the special value false. + /// + /// + /// + /// Remove an event handler. + /// An object where the string keys represent one or more space-separated event types and optional namespaces, and the values represent handler functions previously attached for the event(s). + /// A selector which should match the one originally passed to .on() when attaching event handlers. + /// + /// + }, + 'offset': function() { + /// + /// Set the current coordinates of every element in the set of matched elements, relative to the document. + /// An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements. + /// + /// + /// + /// Set the current coordinates of every element in the set of matched elements, relative to the document. + /// A function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties. + /// + /// + }, + 'offsetParent': function() { + /// Get the closest ancestor element that is positioned. + /// + }, + 'on': function() { + /// + /// Attach an event handler function for one or more events to the selected elements. + /// One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + /// A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event is triggered. + /// A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false. + /// + /// + /// + /// Attach an event handler function for one or more events to the selected elements. + /// An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s). + /// A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event occurs. + /// + /// + }, + 'one': function() { + /// + /// Attach a handler to an event for the elements. The handler is executed at most once per element. + /// A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach a handler to an event for the elements. The handler is executed at most once per element. + /// One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + /// A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event is triggered. + /// A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false. + /// + /// + /// + /// Attach a handler to an event for the elements. The handler is executed at most once per element. + /// An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s). + /// A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event occurs. + /// + /// + }, + 'only-child': function() { + /// Selects all elements that are the only child of their parent. + }, + 'only-of-type': function() { + /// Selects all elements that have no siblings with the same element name. + }, + 'outerHeight': function() { + /// + /// Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements. + /// A Boolean indicating whether to include the element's margin in the calculation. + /// + /// + }, + 'outerWidth': function() { + /// + /// Get the current computed width for the first element in the set of matched elements, including padding and border. + /// A Boolean indicating whether to include the element's margin in the calculation. + /// + /// + }, + 'parent': function() { + /// + /// Get the parent of each element in the current set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'parents': function() { + /// + /// Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'parentsUntil': function() { + /// + /// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object. + /// A string containing a selector expression to indicate where to stop matching ancestor elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object. + /// A DOM node or jQuery object indicating where to stop matching ancestor elements. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'password': function() { + /// Selects all elements of type password. + }, + 'position': function() { + /// Get the current coordinates of the first element in the set of matched elements, relative to the offset parent. + /// + }, + 'prepend': function() { + /// + /// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. + /// DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert at the beginning of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'prependTo': function() { + /// + /// Insert every element in the set of matched elements to the beginning of the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter. + /// + /// + }, + 'prev': function() { + /// + /// Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'prevAll': function() { + /// + /// Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'prevUntil': function() { + /// + /// Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object. + /// A string containing a selector expression to indicate where to stop matching preceding sibling elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + ///
Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuer { + return ((System.Windows.Forms.DockStyle)(StiReport.ChangeType(this["Dock"], typeof(System.Windows.Forms.DockStyle), true))); + } + } + + public virtual bool Enabled + { + get + { + return ((bool)(StiReport.ChangeType(this["Enabled"], typeof(bool), true))); + } + } + + public virtual System.Drawing.Color ForeColor + { + get + { + return ((System.Drawing.Color)(StiReport.ChangeType(this["ForeColor"], typeof(System.Drawing.Color), true))); + } + } + + public virtual System.Drawing.Point Location + { + get + { + return ((System.Drawing.Point)(StiReport.ChangeType(this["Location"], typeof(System.Drawing.Point), true))); + } + } + + public virtual System.Windows.Forms.Padding Margin + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Margin"], typeof(System.Windows.Forms.Padding), true))); + } + } + + public virtual System.Drawing.Size MaximumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MaximumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Drawing.Size MinimumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MinimumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Windows.Forms.RightToLeft RightToLeft + { + get + { + return ((System.Windows.Forms.RightToLeft)(StiReport.ChangeType(this["RightToLeft"], typeof(System.Windows.Forms.RightToLeft), true))); + } + } + + public virtual System.Drawing.Size Size + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["Size"], typeof(System.Drawing.Size), true))); + } + } + + public virtual int TabIndex + { + get + { + return ((int)(StiReport.ChangeType(this["TabIndex"], typeof(int), true))); + } + } + + public virtual bool UseWaitCursor + { + get + { + return ((bool)(StiReport.ChangeType(this["UseWaitCursor"], typeof(bool), true))); + } + } + + public virtual bool Visible + { + get + { + return ((bool)(StiReport.ChangeType(this["Visible"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.Padding Padding + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Padding"], typeof(System.Windows.Forms.Padding), true))); + } + } + } + #endregion BusinessObject NeutpFlag + + #region BusinessObject LymAFlag + public class LymAFlagBusinessObject : Stimulsoft.Report.Dictionary.StiBusinessObject + { + + public LymAFlagBusinessObject() : + base("", "LymAFlag", "LymAFlag", "5d9118e4c1c640e397a874cede4095db") + { + } + + public virtual bool AutoSize + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoSize"], typeof(bool), true))); + } + } + + public virtual bool AutoEllipsis + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoEllipsis"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.BorderStyle BorderStyle + { + get + { + return ((System.Windows.Forms.BorderStyle)(StiReport.ChangeType(this["BorderStyle"], typeof(System.Windows.Forms.BorderStyle), true))); + } + } + + public virtual System.Windows.Forms.FlatStyle FlatStyle + { + get + { + return ((System.Windows.Forms.FlatStyle)(StiReport.ChangeType(this["FlatStyle"], typeof(System.Windows.Forms.FlatStyle), true))); + } + } + + public virtual System.Drawing.Image Image + { + get + { + return ((System.Drawing.Image)(StiReport.ChangeType(this["Image"], typeof(System.Drawing.Image), true))); + } + } + + public virtual int ImageIndex + { + get + { + return ((int)(StiReport.ChangeType(this["ImageIndex"], typeof(int), true))); + } + } + + public virtual string ImageKey + { + get + { + return ((string)(StiReport.ChangeType(this["ImageKey"], typeof(string), true))); + } + } + + public virtual System.Drawing.ContentAlignment ImageAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["ImageAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual System.Drawing.ContentAlignment TextAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["TextAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual string Text + { + get + { + return ((string)(StiReport.ChangeType(this["Text"], typeof(string), true))); + } + } + + public virtual bool UseCompatibleTextRendering + { + get + { + return ((bool)(StiReport.ChangeType(this["UseCompatibleTextRendering"], typeof(bool), true))); + } + } + + public virtual bool UseMnemonic + { + get + { + return ((bool)(StiReport.ChangeType(this["UseMnemonic"], typeof(bool), true))); + } + } + + public virtual string AccessibleDescription + { + get + { + return ((string)(StiReport.ChangeType(this["AccessibleDescription"], typeof(string), true))); + } + } + + public virtual string AccessibleName + { + get + { + return ((string)(StiReport.ChangeType(this["AccessibleName"], typeof(string), true))); + } + } + + public virtual System.Windows.Forms.AccessibleRole AccessibleRole + { + get + { + return ((System.Windows.Forms.AccessibleRole)(StiReport.ChangeType(this["AccessibleRole"], typeof(System.Windows.Forms.AccessibleRole), true))); + } + } + + public virtual bool AllowDrop + { + get + { + return ((bool)(StiReport.ChangeType(this["AllowDrop"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.AnchorStyles Anchor + { + get + { + return ((System.Windows.Forms.AnchorStyles)(StiReport.ChangeType(this["Anchor"], typeof(System.Windows.Forms.AnchorStyles), true))); + } + } + + public virtual System.Drawing.Color BackColor + { + get + { + return ((System.Drawing.Color)(StiReport.ChangeType(this["BackColor"], typeof(System.Drawing.Color), true))); + } + } + + public virtual bool CausesValidation + { + get + { + return ((bool)(StiReport.ChangeType(this["CausesValidation"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.DockStyle Dock + { + get + { + return ((System.Windows.Forms.DockStyle)(StiReport.ChangeType(this["Dock"], typeof(System.Windows.Forms.DockStyle), true))); + } + } + + public virtual bool Enabled + { + get + { + return ((bool)(StiReport.ChangeType(this["Enabled"], typeof(bool), true))); + } + } + + public virtual System.Drawing.Color ForeColor + { + get + { + return ((System.Drawing.Color)(StiReport.ChangeType(this["ForeColor"], typeof(System.Drawing.Color), true))); + } + } + + public virtual System.Drawing.Point Location + { + get + { + return ((System.Drawing.Point)(StiReport.ChangeType(this["Location"], typeof(System.Drawing.Point), true))); + } + } + + public virtual System.Windows.Forms.Padding Margin + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Margin"], typeof(System.Windows.Forms.Padding), true))); + } + } + + public virtual System.Drawing.Size MaximumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MaximumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Drawing.Size MinimumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MinimumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Windows.Forms.RightToLeft RightToLeft + { + get + { + return ((System.Windows.Forms.RightToLeft)(StiReport.ChangeType(this["RightToLeft"], typeof(System.Windows.Forms.RightToLeft), true))); + } + } + + public virtual System.Drawing.Size Size + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["Size"], typeof(System.Drawing.Size), true))); + } + } + + public virtual int TabIndex + { + get + { + return ((int)(StiReport.ChangeType(this["TabIndex"], typeof(int), true))); + } + } + + public virtual bool UseWaitCursor + { + get + { + return ((bool)(StiReport.ChangeType(this["UseWaitCursor"], typeof(bool), true))); + } + } + + public virtual bool Visible + { + get + { + return ((bool)(StiReport.ChangeType(this["Visible"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.Padding Padding + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Padding"], typeof(System.Windows.Forms.Padding), true))); + } + } + } + #endregion BusinessObject LymAFlag + + #region BusinessObject MxdAFlag + public class MxdAFlagBusinessObject : Stimulsoft.Report.Dictionary.StiBusinessObject + { + + public MxdAFlagBusinessObject() : + base("", "MxdAFlag", "MxdAFlag", "e18b8b213394461796bb4b01a4f3602b") + { + } + + public virtual bool AutoSize + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoSize"], typeof(bool), true))); + } + } + + public virtual bool AutoEllipsis + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoEllipsis"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.BorderStyle BorderStyle + { + get + { + return ((System.Windows.Forms.BorderStyle)(StiReport.ChangeType(this["BorderStyle"], typeof(System.Windows.Forms.BorderStyle), true))); + } + } + + public virtual System.Windows.Forms.FlatStyle FlatStyle + { + get + { + return ((System.Windows.Forms.FlatStyle)(StiReport.ChangeType(this["FlatStyle"], typeof(System.Windows.Forms.FlatStyle), true))); + } + } + + public virtual System.Drawing.Image Image + { + get + { + return ((System.Drawing.Image)(StiReport.ChangeType(this["Image"], typeof(System.Drawing.Image), true))); + } + } + + public virtual int ImageIndex + { + get + { + return ((int)(StiReport.ChangeType(this["ImageIndex"], typeof(int), true))); + } + } + + public virtual string ImageKey + { + get + { + return ((string)(StiReport.ChangeType(this["ImageKey"], typeof(string), true))); + } + } + + public virtual System.Drawing.ContentAlignment ImageAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["ImageAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual System.Drawing.ContentAlignment TextAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["TextAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual string Text + { + get + { + return ((string)(StiReport.ChangeType(this["Text"], typeof(string), true))); + } + } + + public virtual bool UseCompatibleTextRendering + { + get + { + return ((bool)(StiReport.ChangeType(this["UseCompatibleTextRendering"], typeof(bool), true))); + } + } + + public virtual bool UseMnemonic + { + get + { + return ((bool)(StiReport.ChangeType(this["UseMnemonic"], typeof(bool), true))); + } + } + + public virtual string AccessibleDescription + { + get + { + return ((string)(StiReport.ChangeType(this["AccessibleDescription"], typeof(string), true))); + } + } + + public virtual string AccessibleName + { + get + { + return ((string)(StiReport.ChangeType(this["AccessibleName"], typeof(string), true))); + } + } + + public virtual System.Windows.Forms.AccessibleRole AccessibleRole + { + get + { + return ((System.Windows.Forms.AccessibleRole)(StiReport.ChangeType(this["AccessibleRole"], typeof(System.Windows.Forms.AccessibleRole), true))); + } + } + + public virtual bool AllowDrop + { + get + { + return ((bool)(StiReport.ChangeType(this["AllowDrop"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.AnchorStyles Anchor + { + get + { + return ((System.Windows.Forms.AnchorStyles)(StiReport.ChangeType(this["Anchor"], typeof(System.Windows.Forms.AnchorStyles), true))); + } + } + + public virtual System.Drawing.Color BackColor + { + get + { + return ((System.Drawing.Color)(StiReport.ChangeType(this["BackColor"], typeof(System.Drawing.Color), true))); + } + } + + public virtual bool CausesValidation + { + get + { + return ((bool)(StiReport.ChangeType(this["CausesValidation"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.DockStyle Dock + { + get + { + return ((System.Windows.Forms.DockStyle)(StiReport.ChangeType(this["Dock"], typeof(System.Windows.Forms.DockStyle), true))); + } + } + + public virtual bool Enabled + { + get + { + return ((bool)(StiReport.ChangeType(this["Enabled"], typeof(bool), true))); + } + } + + public virtual System.Drawing.Color ForeColor + { + get + { + return ((System.Drawing.Color)(StiReport.ChangeType(this["ForeColor"], typeof(System.Drawing.Color), true))); + } + } + + public virtual System.Drawing.Point Location + { + get + { + return ((System.Drawing.Point)(StiReport.ChangeType(this["Location"], typeof(System.Drawing.Point), true))); + } + } + + public virtual System.Windows.Forms.Padding Margin + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Margin"], typeof(System.Windows.Forms.Padding), true))); + } + } + + public virtual System.Drawing.Size MaximumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MaximumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Drawing.Size MinimumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MinimumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Windows.Forms.RightToLeft RightToLeft + { + get + { + return ((System.Windows.Forms.RightToLeft)(StiReport.ChangeType(this["RightToLeft"], typeof(System.Windows.Forms.RightToLeft), true))); + } + } + + public virtual System.Drawing.Size Size + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["Size"], typeof(System.Drawing.Size), true))); + } + } + + public virtual int TabIndex + { + get + { + return ((int)(StiReport.ChangeType(this["TabIndex"], typeof(int), true))); + } + } + + public virtual bool UseWaitCursor + { + get + { + return ((bool)(StiReport.ChangeType(this["UseWaitCursor"], typeof(bool), true))); + } + } + + public virtual bool Visible + { + get + { + return ((bool)(StiReport.ChangeType(this["Visible"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.Padding Padding + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Padding"], typeof(System.Windows.Forms.Padding), true))); + } + } + } + #endregion BusinessObject MxdAFlag + + #region BusinessObject NeutAFlag + public class NeutAFlagBusinessObject : Stimulsoft.Report.Dictionary.StiBusinessObject + { + + public NeutAFlagBusinessObject() : + base("", "NeutAFlag", "NeutAFlag", "b031633ea1c142b0b1e2bd01a20495aa") + { + } + + public virtual bool AutoSize + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoSize"], typeof(bool), true))); + } + } + + public virtual bool AutoEllipsis + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoEllipsis"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.BorderStyle BorderStyle + { + get + { + return ((System.Windows.Forms.BorderStyle)(StiReport.ChangeType(this["BorderStyle"], typeof(System.Windows.Forms.BorderStyle), true))); + } + } + + public virtual System.Windows.Forms.FlatStyle FlatStyle + { + get + { + return ((System.Windows.Forms.FlatStyle)(StiReport.ChangeType(this["FlatStyle"], typeof(System.Windows.Forms.FlatStyle), true))); + } + } + + public virtual System.Drawing.Image Image + { + get + { + return ((System.Drawing.Image)(StiReport.ChangeType(this["Image"], typeof(System.Drawing.Image), true))); + } + } + + public virtual int ImageIndex + { + get + { + return ((int)(StiReport.ChangeType(this["ImageIndex"], typeof(int), true))); + } + } + + public virtual string ImageKey + { + get + { + return ((string)(StiReport.ChangeType(this["ImageKey"], typeof(string), true))); + } + } + + public virtual System.Drawing.ContentAlignment ImageAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["ImageAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual System.Drawing.ContentAlignment TextAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["TextAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual string Text + { + get + { + return ((string)(StiReport.ChangeType(this["Text"], typeof(string), true))); + } + } + + public virtual bool UseCompatibleTextRendering + { + get + { + return ((bool)(StiReport.ChangeType(this["UseCompatibleTextRendering"], typeof(bool), true))); + } + } + + public virtual bool UseMnemonic + { + get + { + return ((bool)(StiReport.ChangeType(this["UseMnemonic"], typeof(bool), true))); + } + } + + public virtual string AccessibleDescription + { + get + { + return ((string)(StiReport.ChangeType(this["AccessibleDescription"], typeof(string), true))); + } + } + + public virtual string AccessibleName + { + get + { + return ((string)(StiReport.ChangeType(this["AccessibleName"], typeof(string), true))); + } + } + + public virtual System.Windows.Forms.AccessibleRole AccessibleRole + { + get + { + return ((System.Windows.Forms.AccessibleRole)(StiReport.ChangeType(this["AccessibleRole"], typeof(System.Windows.Forms.AccessibleRole), true))); + } + } + + public virtual bool AllowDrop + { + get + { + return ((bool)(StiReport.ChangeType(this["AllowDrop"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.AnchorStyles Anchor + { + get + { + return ((System.Windows.Forms.AnchorStyles)(StiReport.ChangeType(this["Anchor"], typeof(System.Windows.Forms.AnchorStyles), true))); + } + } + + public virtual System.Drawing.Color BackColor + { + get + { + return ((System.Drawing.Color)(StiReport.ChangeType(this["BackColor"], typeof(System.Drawing.Color), true))); + } + } + + public virtual bool CausesValidation + { + get + { + return ((bool)(StiReport.ChangeType(this["CausesValidation"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.DockStyle Dock + { + get + { + return ((System.Windows.Forms.DockStyle)(StiReport.ChangeType(this["Dock"], typeof(System.Windows.Forms.DockStyle), true))); + } + } + + public virtual bool Enabled + { + get + { + return ((bool)(StiReport.ChangeType(this["Enabled"], typeof(bool), true))); + } + } + + public virtual System.Drawing.Color ForeColor + { + get + { + return ((System.Drawing.Color)(StiReport.ChangeType(this["ForeColor"], typeof(System.Drawing.Color), true))); + } + } + + public virtual System.Drawing.Point Location + { + get + { + return ((System.Drawing.Point)(StiReport.ChangeType(this["Location"], typeof(System.Drawing.Point), true))); + } + } + + public virtual System.Windows.Forms.Padding Margin + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Margin"], typeof(System.Windows.Forms.Padding), true))); + } + } + + public virtual System.Drawing.Size MaximumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MaximumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Drawing.Size MinimumSize + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["MinimumSize"], typeof(System.Drawing.Size), true))); + } + } + + public virtual System.Windows.Forms.RightToLeft RightToLeft + { + get + { + return ((System.Windows.Forms.RightToLeft)(StiReport.ChangeType(this["RightToLeft"], typeof(System.Windows.Forms.RightToLeft), true))); + } + } + + public virtual System.Drawing.Size Size + { + get + { + return ((System.Drawing.Size)(StiReport.ChangeType(this["Size"], typeof(System.Drawing.Size), true))); + } + } + + public virtual int TabIndex + { + get + { + return ((int)(StiReport.ChangeType(this["TabIndex"], typeof(int), true))); + } + } + + public virtual bool UseWaitCursor + { + get + { + return ((bool)(StiReport.ChangeType(this["UseWaitCursor"], typeof(bool), true))); + } + } + + public virtual bool Visible + { + get + { + return ((bool)(StiReport.ChangeType(this["Visible"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.Padding Padding + { + get + { + return ((System.Windows.Forms.Padding)(StiReport.ChangeType(this["Padding"], typeof(System.Windows.Forms.Padding), true))); + } + } + } + #endregion BusinessObject NeutAFlag + + #region BusinessObject RdwFlag + public class RdwFlagBusinessObject : Stimulsoft.Report.Dictionary.StiBusinessObject + { + + public RdwFlagBusinessObject() : + base("", "RdwFlag", "RdwFlag", "e79dd8d64f984a95ab55ab6558f33781") + { + } + + public virtual bool AutoSize + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoSize"], typeof(bool), true))); + } + } + + public virtual bool AutoEllipsis + { + get + { + return ((bool)(StiReport.ChangeType(this["AutoEllipsis"], typeof(bool), true))); + } + } + + public virtual System.Windows.Forms.BorderStyle BorderStyle + { + get + { + return ((System.Windows.Forms.BorderStyle)(StiReport.ChangeType(this["BorderStyle"], typeof(System.Windows.Forms.BorderStyle), true))); + } + } + + public virtual System.Windows.Forms.FlatStyle FlatStyle + { + get + { + return ((System.Windows.Forms.FlatStyle)(StiReport.ChangeType(this["FlatStyle"], typeof(System.Windows.Forms.FlatStyle), true))); + } + } + + public virtual System.Drawing.Image Image + { + get + { + return ((System.Drawing.Image)(StiReport.ChangeType(this["Image"], typeof(System.Drawing.Image), true))); + } + } + + public virtual int ImageIndex + { + get + { + return ((int)(StiReport.ChangeType(this["ImageIndex"], typeof(int), true))); + } + } + + public virtual string ImageKey + { + get + { + return ((string)(StiReport.ChangeType(this["ImageKey"], typeof(string), true))); + } + } + + public virtual System.Drawing.ContentAlignment ImageAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["ImageAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual System.Drawing.ContentAlignment TextAlign + { + get + { + return ((System.Drawing.ContentAlignment)(StiReport.ChangeType(this["TextAlign"], typeof(System.Drawing.ContentAlignment), true))); + } + } + + public virtual string Text + { + get + { + return ((string)(StiReport.ChangeType(this["Text"], typeof(string), true))); + } + } + + public virtual bool UseCompatibleTextRendering + { + get + { + return ((bool)(StiReport.ChangeType(this["UseCompatibleTe \ No newline at end of file diff --git a/HybridApp/wwwroot/js/jquery-2.2.4.js b/HybridApp/wwwroot/js/jquery-2.2.4.js new file mode 100644 index 0000000..4024b66 --- /dev/null +++ b/HybridApp/wwwroot/js/jquery-2.2.4.js @@ -0,0 +1,4 @@ +/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; +}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,la=/\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("